mirror of
https://github.com/rancher/rke.git
synced 2025-09-09 02:51:15 +00:00
Merge pull request #81 from kyamazawa/support_weave
support weave-net network plugin
This commit is contained in:
@@ -9,6 +9,7 @@ auth:
|
||||
# flannel
|
||||
# calico
|
||||
# canal
|
||||
# weave
|
||||
network:
|
||||
plugin: flannel
|
||||
options:
|
||||
|
@@ -27,6 +27,8 @@ const (
|
||||
DefaultCanalNodeImage = "quay.io/calico/node:v2.6.2"
|
||||
DefaultCanalCNIImage = "quay.io/calico/cni:v1.11.0"
|
||||
DefaultCanalFlannelImage = "quay.io/coreos/flannel:v0.9.1"
|
||||
DefaultWeaveImage = "weaveworks/weave-kube:2.1.2"
|
||||
DefaultWeaveCNIImage = "weaveworks/weave-npc:2.1.2"
|
||||
|
||||
DefaultKubeDNSImage = "gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.5"
|
||||
DefaultDNSMasqImage = "gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5"
|
||||
|
@@ -25,6 +25,10 @@ const (
|
||||
CanalNodeImage = "canal_node_image"
|
||||
CanalCNIImage = "canal_cni_image"
|
||||
CanalFlannelImage = "canal_flannel_image"
|
||||
|
||||
WeaveNetworkPlugin = "weave"
|
||||
WeaveImage = "weave_node_image"
|
||||
WeaveCNIImage = "weave_cni_image"
|
||||
)
|
||||
|
||||
func (c *Cluster) DeployNetworkPlugin() error {
|
||||
@@ -36,6 +40,8 @@ func (c *Cluster) DeployNetworkPlugin() error {
|
||||
return c.doCalicoDeploy()
|
||||
case CanalNetworkPlugin:
|
||||
return c.doCanalDeploy()
|
||||
case WeaveNetworkPlugin:
|
||||
return c.doWeaveDeploy()
|
||||
default:
|
||||
return fmt.Errorf("[network] Unsupported network plugin: %s", c.Network.Plugin)
|
||||
}
|
||||
@@ -78,6 +84,11 @@ func (c *Cluster) doCanalDeploy() error {
|
||||
return c.doAddonDeploy(pluginYaml, NetworkPluginResourceName)
|
||||
}
|
||||
|
||||
func (c *Cluster) doWeaveDeploy() error {
|
||||
pluginYaml := network.GetWeaveManifest(c.ClusterCIDR, c.Network.Options[WeaveImage], c.Network.Options[WeaveCNIImage])
|
||||
return c.doAddonDeploy(pluginYaml, NetworkPluginResourceName)
|
||||
}
|
||||
|
||||
func (c *Cluster) setClusterNetworkDefaults() {
|
||||
setDefaultIfEmpty(&c.Network.Plugin, DefaultNetworkPlugin)
|
||||
|
||||
@@ -99,5 +110,9 @@ func (c *Cluster) setClusterNetworkDefaults() {
|
||||
setDefaultIfEmptyMapValue(c.Network.Options, CanalCNIImage, DefaultCanalCNIImage)
|
||||
setDefaultIfEmptyMapValue(c.Network.Options, CanalNodeImage, DefaultCanalNodeImage)
|
||||
setDefaultIfEmptyMapValue(c.Network.Options, CanalFlannelImage, DefaultCanalFlannelImage)
|
||||
|
||||
case c.Network.Plugin == WeaveNetworkPlugin:
|
||||
setDefaultIfEmptyMapValue(c.Network.Options, WeaveImage, DefaultWeaveImage)
|
||||
setDefaultIfEmptyMapValue(c.Network.Options, WeaveCNIImage, DefaultWeaveCNIImage)
|
||||
}
|
||||
}
|
||||
|
@@ -46,7 +46,7 @@ func validateAuthOptions(c *Cluster) error {
|
||||
}
|
||||
|
||||
func validateNetworkOptions(c *Cluster) error {
|
||||
if c.Network.Plugin != FlannelNetworkPlugin && c.Network.Plugin != CalicoNetworkPlugin && c.Network.Plugin != CanalNetworkPlugin {
|
||||
if c.Network.Plugin != FlannelNetworkPlugin && c.Network.Plugin != CalicoNetworkPlugin && c.Network.Plugin != CanalNetworkPlugin && c.Network.Plugin != WeaveNetworkPlugin {
|
||||
return fmt.Errorf("Network plugin [%s] is not supported", c.Network.Plugin)
|
||||
}
|
||||
return nil
|
||||
|
116
network/weave.go
Normal file
116
network/weave.go
Normal file
@@ -0,0 +1,116 @@
|
||||
package network
|
||||
|
||||
func GetWeaveManifest(clusterCIDR, image, cniImage string) string {
|
||||
return `# This ConfigMap can be used to configure a self-hosted Weave Net installation.
|
||||
apiVersion: v1
|
||||
kind: List
|
||||
items:
|
||||
- apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: weave-net
|
||||
namespace: kube-system
|
||||
- apiVersion: extensions/v1beta1
|
||||
kind: DaemonSet
|
||||
metadata:
|
||||
name: weave-net
|
||||
labels:
|
||||
name: weave-net
|
||||
namespace: kube-system
|
||||
spec:
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
name: weave-net
|
||||
spec:
|
||||
containers:
|
||||
- name: weave
|
||||
command:
|
||||
- /home/weave/launch.sh
|
||||
env:
|
||||
- name: HOSTNAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: spec.nodeName
|
||||
- name: IPALLOC_RANGE
|
||||
value: "` + clusterCIDR + `"
|
||||
image: ` + image + `
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
host: 127.0.0.1
|
||||
path: /status
|
||||
port: 6784
|
||||
initialDelaySeconds: 30
|
||||
resources:
|
||||
requests:
|
||||
cpu: 10m
|
||||
securityContext:
|
||||
privileged: true
|
||||
volumeMounts:
|
||||
- name: weavedb
|
||||
mountPath: /weavedb
|
||||
- name: cni-bin
|
||||
mountPath: /host/opt
|
||||
- name: cni-bin2
|
||||
mountPath: /host/home
|
||||
- name: cni-conf
|
||||
mountPath: /host/etc
|
||||
- name: dbus
|
||||
mountPath: /host/var/lib/dbus
|
||||
- name: lib-modules
|
||||
mountPath: /lib/modules
|
||||
- name: xtables-lock
|
||||
mountPath: /run/xtables.lock
|
||||
- name: weave-npc
|
||||
args: []
|
||||
env:
|
||||
- name: HOSTNAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: spec.nodeName
|
||||
image: ` + cniImage + `
|
||||
resources:
|
||||
requests:
|
||||
cpu: 10m
|
||||
securityContext:
|
||||
privileged: true
|
||||
volumeMounts:
|
||||
- name: xtables-lock
|
||||
mountPath: /run/xtables.lock
|
||||
hostNetwork: true
|
||||
hostPID: true
|
||||
restartPolicy: Always
|
||||
securityContext:
|
||||
seLinuxOptions: {}
|
||||
serviceAccountName: weave-net
|
||||
tolerations:
|
||||
- effect: NoSchedule
|
||||
operator: Exists
|
||||
volumes:
|
||||
- name: weavedb
|
||||
hostPath:
|
||||
path: /var/lib/weave
|
||||
- name: cni-bin
|
||||
hostPath:
|
||||
path: /opt
|
||||
- name: cni-bin2
|
||||
hostPath:
|
||||
path: /home
|
||||
- name: cni-conf
|
||||
hostPath:
|
||||
path: /etc
|
||||
- name: dbus
|
||||
hostPath:
|
||||
path: /var/lib/dbus
|
||||
- name: lib-modules
|
||||
hostPath:
|
||||
path: /lib/modules
|
||||
- name: xtables-lock
|
||||
hostPath:
|
||||
path: /run/xtables.lock
|
||||
updateStrategy:
|
||||
type: RollingUpdate
|
||||
`
|
||||
}
|
Reference in New Issue
Block a user