mirror of
https://github.com/rancher/rke.git
synced 2025-07-01 09:42:07 +00:00
Merge pull request #118 from moelsayed/fix_115
Enable AWS specific configuration for Calico
This commit is contained in:
commit
d99cd9365b
@ -10,6 +10,9 @@ auth:
|
|||||||
# calico
|
# calico
|
||||||
# canal
|
# canal
|
||||||
# weave
|
# weave
|
||||||
|
#
|
||||||
|
# If you are using calico on AWS, use the network plugin config option:
|
||||||
|
# 'cloud_provider: aws'
|
||||||
network:
|
network:
|
||||||
plugin: flannel
|
plugin: flannel
|
||||||
options:
|
options:
|
||||||
|
@ -11,7 +11,8 @@ const (
|
|||||||
|
|
||||||
DefaultAuthStrategy = "x509"
|
DefaultAuthStrategy = "x509"
|
||||||
|
|
||||||
DefaultNetworkPlugin = "flannel"
|
DefaultNetworkPlugin = "flannel"
|
||||||
|
DefaultNetworkCloudProvider = "none"
|
||||||
|
|
||||||
DefaultInfraContainerImage = "gcr.io/google_containers/pause-amd64:3.0"
|
DefaultInfraContainerImage = "gcr.io/google_containers/pause-amd64:3.0"
|
||||||
DefaultAplineImage = "alpine:latest"
|
DefaultAplineImage = "alpine:latest"
|
||||||
@ -19,16 +20,20 @@ const (
|
|||||||
DefaultCertDownloaderImage = "rancher/rke-cert-deployer:0.1.0"
|
DefaultCertDownloaderImage = "rancher/rke-cert-deployer:0.1.0"
|
||||||
DefaultServiceSidekickImage = "rancher/rke-service-sidekick:0.1.0"
|
DefaultServiceSidekickImage = "rancher/rke-service-sidekick:0.1.0"
|
||||||
|
|
||||||
DefaultFlannelImage = "quay.io/coreos/flannel:v0.9.1"
|
DefaultFlannelImage = "quay.io/coreos/flannel:v0.9.1"
|
||||||
DefaultFlannelCNIImage = "quay.io/coreos/flannel-cni:v0.2.0"
|
DefaultFlannelCNIImage = "quay.io/coreos/flannel-cni:v0.2.0"
|
||||||
|
|
||||||
DefaultCalicoNodeImage = "quay.io/calico/node:v2.6.2"
|
DefaultCalicoNodeImage = "quay.io/calico/node:v2.6.2"
|
||||||
DefaultCalicoCNIImage = "quay.io/calico/cni:v1.11.0"
|
DefaultCalicoCNIImage = "quay.io/calico/cni:v1.11.0"
|
||||||
DefaultCalicoControllersImage = "quay.io/calico/kube-controllers:v1.0.0"
|
DefaultCalicoControllersImage = "quay.io/calico/kube-controllers:v1.0.0"
|
||||||
DefaultCanalNodeImage = "quay.io/calico/node:v2.6.2"
|
DefaultCalicoctlImage = "quay.io/calico/ctl:v1.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"
|
||||||
DefaultWeaveImage = "weaveworks/weave-kube:2.1.2"
|
DefaultWeaveCNIImage = "weaveworks/weave-npc:2.1.2"
|
||||||
DefaultWeaveCNIImage = "weaveworks/weave-npc:2.1.2"
|
|
||||||
|
DefaultCanalNodeImage = "quay.io/calico/node:v2.6.2"
|
||||||
|
DefaultCanalCNIImage = "quay.io/calico/cni:v1.11.0"
|
||||||
|
DefaultCanalFlannelImage = "quay.io/coreos/flannel:v0.9.1"
|
||||||
|
|
||||||
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"
|
||||||
|
@ -11,6 +11,7 @@ import (
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
NetworkPluginResourceName = "rke-network-plugin"
|
NetworkPluginResourceName = "rke-network-plugin"
|
||||||
|
CloudProvider = "cloud_provider"
|
||||||
|
|
||||||
FlannelNetworkPlugin = "flannel"
|
FlannelNetworkPlugin = "flannel"
|
||||||
FlannelImage = "flannel_image"
|
FlannelImage = "flannel_image"
|
||||||
@ -21,6 +22,7 @@ const (
|
|||||||
CalicoNodeImage = "calico_node_image"
|
CalicoNodeImage = "calico_node_image"
|
||||||
CalicoCNIImage = "calico_cni_image"
|
CalicoCNIImage = "calico_cni_image"
|
||||||
CalicoControllersImages = "calico_controllers_image"
|
CalicoControllersImages = "calico_controllers_image"
|
||||||
|
CalicoctlImage = "calicoctl_image"
|
||||||
|
|
||||||
CanalNetworkPlugin = "canal"
|
CanalNetworkPlugin = "canal"
|
||||||
CanalNodeImage = "canal_node_image"
|
CanalNodeImage = "canal_node_image"
|
||||||
@ -71,6 +73,8 @@ func (c *Cluster) doCalicoDeploy() error {
|
|||||||
network.CNIImage: c.Network.Options[CalicoCNIImage],
|
network.CNIImage: c.Network.Options[CalicoCNIImage],
|
||||||
network.NodeImage: c.Network.Options[CalicoNodeImage],
|
network.NodeImage: c.Network.Options[CalicoNodeImage],
|
||||||
network.ControllersImage: c.Network.Options[CalicoControllersImages],
|
network.ControllersImage: c.Network.Options[CalicoControllersImages],
|
||||||
|
network.CalicoctlImage: c.Network.Options[CalicoctlImage],
|
||||||
|
network.CloudProvider: c.Network.Options[CloudProvider],
|
||||||
}
|
}
|
||||||
pluginYaml := network.GetCalicoManifest(calicoConfig)
|
pluginYaml := network.GetCalicoManifest(calicoConfig)
|
||||||
return c.doAddonDeploy(pluginYaml, NetworkPluginResourceName)
|
return c.doAddonDeploy(pluginYaml, NetworkPluginResourceName)
|
||||||
@ -103,23 +107,39 @@ func (c *Cluster) setClusterNetworkDefaults() {
|
|||||||
// don't break if the user didn't define options
|
// don't break if the user didn't define options
|
||||||
c.Network.Options = make(map[string]string)
|
c.Network.Options = make(map[string]string)
|
||||||
}
|
}
|
||||||
|
networkPluginConfigDefaultsMap := make(map[string]string)
|
||||||
switch {
|
switch {
|
||||||
case c.Network.Plugin == FlannelNetworkPlugin:
|
case c.Network.Plugin == FlannelNetworkPlugin:
|
||||||
setDefaultIfEmptyMapValue(c.Network.Options, FlannelImage, DefaultFlannelImage)
|
networkPluginConfigDefaultsMap = map[string]string{
|
||||||
setDefaultIfEmptyMapValue(c.Network.Options, FlannelCNIImage, DefaultFlannelCNIImage)
|
FlannelImage: DefaultFlannelImage,
|
||||||
|
FlannelCNIImage: DefaultFlannelCNIImage,
|
||||||
|
}
|
||||||
|
|
||||||
case c.Network.Plugin == CalicoNetworkPlugin:
|
case c.Network.Plugin == CalicoNetworkPlugin:
|
||||||
setDefaultIfEmptyMapValue(c.Network.Options, CalicoCNIImage, DefaultCalicoCNIImage)
|
networkPluginConfigDefaultsMap = map[string]string{
|
||||||
setDefaultIfEmptyMapValue(c.Network.Options, CalicoNodeImage, DefaultCalicoNodeImage)
|
CalicoCNIImage: DefaultCalicoCNIImage,
|
||||||
setDefaultIfEmptyMapValue(c.Network.Options, CalicoControllersImages, DefaultCalicoControllersImage)
|
CalicoNodeImage: DefaultCalicoNodeImage,
|
||||||
|
CalicoControllersImages: DefaultCalicoControllersImage,
|
||||||
|
CloudProvider: DefaultNetworkCloudProvider,
|
||||||
|
CalicoctlImage: DefaultCalicoctlImage,
|
||||||
|
}
|
||||||
|
|
||||||
case c.Network.Plugin == CanalNetworkPlugin:
|
case c.Network.Plugin == CanalNetworkPlugin:
|
||||||
setDefaultIfEmptyMapValue(c.Network.Options, CanalCNIImage, DefaultCanalCNIImage)
|
networkPluginConfigDefaultsMap = map[string]string{
|
||||||
setDefaultIfEmptyMapValue(c.Network.Options, CanalNodeImage, DefaultCanalNodeImage)
|
CanalCNIImage: DefaultCanalCNIImage,
|
||||||
setDefaultIfEmptyMapValue(c.Network.Options, CanalFlannelImage, DefaultCanalFlannelImage)
|
CanalNodeImage: DefaultCanalNodeImage,
|
||||||
|
CanalFlannelImage: DefaultCanalFlannelImage,
|
||||||
|
}
|
||||||
|
|
||||||
case c.Network.Plugin == WeaveNetworkPlugin:
|
case c.Network.Plugin == WeaveNetworkPlugin:
|
||||||
setDefaultIfEmptyMapValue(c.Network.Options, WeaveImage, DefaultWeaveImage)
|
networkPluginConfigDefaultsMap = map[string]string{
|
||||||
setDefaultIfEmptyMapValue(c.Network.Options, WeaveCNIImage, DefaultWeaveCNIImage)
|
WeaveImage: DefaultWeaveImage,
|
||||||
|
WeaveCNIImage: DefaultWeaveCNIImage,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range networkPluginConfigDefaultsMap {
|
||||||
|
setDefaultIfEmptyMapValue(c.Network.Options, k, v)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,54 @@
|
|||||||
package network
|
package network
|
||||||
|
|
||||||
func GetCalicoManifest(calicoConfig map[string]string) string {
|
func GetCalicoManifest(calicoConfig map[string]string) string {
|
||||||
|
awsIPPool := ""
|
||||||
|
if calicoConfig[CloudProvider] == AWSCloudProvider {
|
||||||
|
awsIPPool = `
|
||||||
|
---
|
||||||
|
kind: ConfigMap
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: aws-ippool
|
||||||
|
namespace: kube-system
|
||||||
|
data:
|
||||||
|
aws-ippool: |-
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ipPool
|
||||||
|
metadata:
|
||||||
|
cidr: ` + calicoConfig[ClusterCIDR] + `
|
||||||
|
spec:
|
||||||
|
nat-outgoing: true
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
name: calicoctl
|
||||||
|
namespace: kube-system
|
||||||
|
spec:
|
||||||
|
hostNetwork: true
|
||||||
|
restartPolicy: OnFailure
|
||||||
|
containers:
|
||||||
|
- name: calicoctl
|
||||||
|
image: ` + calicoConfig[CalicoctlImage] + `
|
||||||
|
command: ["/bin/sh", "-c", "calicoctl apply -f aws-ippool.yaml"]
|
||||||
|
env:
|
||||||
|
- name: ETCD_ENDPOINTS
|
||||||
|
valueFrom:
|
||||||
|
configMapKeyRef:
|
||||||
|
name: calico-config
|
||||||
|
key: etcd_endpoints
|
||||||
|
volumeMounts:
|
||||||
|
- name: ippool-config
|
||||||
|
mountPath: /root/
|
||||||
|
volumes:
|
||||||
|
- name: ippool-config
|
||||||
|
configMap:
|
||||||
|
name: aws-ippool
|
||||||
|
items:
|
||||||
|
- key: aws-ippool
|
||||||
|
path: aws-ippool.yaml
|
||||||
|
`
|
||||||
|
}
|
||||||
|
|
||||||
return `# Calico Version master
|
return `# Calico Version master
|
||||||
# https://docs.projectcalico.org/master/releases#master
|
# https://docs.projectcalico.org/master/releases#master
|
||||||
@ -389,11 +437,11 @@ metadata:
|
|||||||
namespace: kube-system
|
namespace: kube-system
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ServiceAccount
|
kind: ServiceAccount
|
||||||
metadata:
|
metadata:
|
||||||
name: calico-node
|
name: calico-node
|
||||||
namespace: kube-system
|
namespace: kube-system
|
||||||
|
` + awsIPPool + `
|
||||||
`
|
`
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,10 @@ const (
|
|||||||
CNIImage = "cniImage"
|
CNIImage = "cniImage"
|
||||||
NodeImage = "nodeImage"
|
NodeImage = "nodeImage"
|
||||||
ControllersImage = "controllersImage"
|
ControllersImage = "controllersImage"
|
||||||
|
CalicoctlImage = "calicoctlImage"
|
||||||
FlannelImage = "flannelImage"
|
FlannelImage = "flannelImage"
|
||||||
FlannelCNIImage = "flannelCNIImage"
|
FlannelCNIImage = "flannelCNIImage"
|
||||||
FlannelIface = "flannelIface"
|
FlannelIface = "flannelIface"
|
||||||
|
CloudProvider = "cloudprovider"
|
||||||
|
AWSCloudProvider = "aws"
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user