mirror of
https://github.com/rancher/rke.git
synced 2025-09-10 11:30:22 +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
|
# flannel
|
||||||
# calico
|
# calico
|
||||||
# canal
|
# canal
|
||||||
|
# weave
|
||||||
network:
|
network:
|
||||||
plugin: flannel
|
plugin: flannel
|
||||||
options:
|
options:
|
||||||
|
@@ -27,6 +27,8 @@ const (
|
|||||||
DefaultCanalNodeImage = "quay.io/calico/node:v2.6.2"
|
DefaultCanalNodeImage = "quay.io/calico/node:v2.6.2"
|
||||||
DefaultCanalCNIImage = "quay.io/calico/cni:v1.11.0"
|
DefaultCanalCNIImage = "quay.io/calico/cni:v1.11.0"
|
||||||
DefaultCanalFlannelImage = "quay.io/coreos/flannel:v0.9.1"
|
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"
|
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"
|
DefaultDNSMasqImage = "gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5"
|
||||||
|
@@ -25,6 +25,10 @@ const (
|
|||||||
CanalNodeImage = "canal_node_image"
|
CanalNodeImage = "canal_node_image"
|
||||||
CanalCNIImage = "canal_cni_image"
|
CanalCNIImage = "canal_cni_image"
|
||||||
CanalFlannelImage = "canal_flannel_image"
|
CanalFlannelImage = "canal_flannel_image"
|
||||||
|
|
||||||
|
WeaveNetworkPlugin = "weave"
|
||||||
|
WeaveImage = "weave_node_image"
|
||||||
|
WeaveCNIImage = "weave_cni_image"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (c *Cluster) DeployNetworkPlugin() error {
|
func (c *Cluster) DeployNetworkPlugin() error {
|
||||||
@@ -36,6 +40,8 @@ func (c *Cluster) DeployNetworkPlugin() error {
|
|||||||
return c.doCalicoDeploy()
|
return c.doCalicoDeploy()
|
||||||
case CanalNetworkPlugin:
|
case CanalNetworkPlugin:
|
||||||
return c.doCanalDeploy()
|
return c.doCanalDeploy()
|
||||||
|
case WeaveNetworkPlugin:
|
||||||
|
return c.doWeaveDeploy()
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("[network] Unsupported network plugin: %s", c.Network.Plugin)
|
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)
|
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() {
|
func (c *Cluster) setClusterNetworkDefaults() {
|
||||||
setDefaultIfEmpty(&c.Network.Plugin, DefaultNetworkPlugin)
|
setDefaultIfEmpty(&c.Network.Plugin, DefaultNetworkPlugin)
|
||||||
|
|
||||||
@@ -99,5 +110,9 @@ func (c *Cluster) setClusterNetworkDefaults() {
|
|||||||
setDefaultIfEmptyMapValue(c.Network.Options, CanalCNIImage, DefaultCanalCNIImage)
|
setDefaultIfEmptyMapValue(c.Network.Options, CanalCNIImage, DefaultCanalCNIImage)
|
||||||
setDefaultIfEmptyMapValue(c.Network.Options, CanalNodeImage, DefaultCanalNodeImage)
|
setDefaultIfEmptyMapValue(c.Network.Options, CanalNodeImage, DefaultCanalNodeImage)
|
||||||
setDefaultIfEmptyMapValue(c.Network.Options, CanalFlannelImage, DefaultCanalFlannelImage)
|
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 {
|
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 fmt.Errorf("Network plugin [%s] is not supported", c.Network.Plugin)
|
||||||
}
|
}
|
||||||
return nil
|
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