1
0
mirror of https://github.com/rancher/rke.git synced 2025-09-09 11:01:40 +00:00

Merge pull request #81 from kyamazawa/support_weave

support weave-net network plugin
This commit is contained in:
Alena Prokharchyk
2017-12-08 23:42:27 -06:00
committed by GitHub
5 changed files with 135 additions and 1 deletions

View File

@@ -9,6 +9,7 @@ auth:
# flannel
# calico
# canal
# weave
network:
plugin: flannel
options:

View File

@@ -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"

View File

@@ -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)
}
}

View File

@@ -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
View 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
`
}