mirror of
https://github.com/rancher/rke.git
synced 2025-06-30 17:22: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
|
||||
# canal
|
||||
# weave
|
||||
#
|
||||
# If you are using calico on AWS, use the network plugin config option:
|
||||
# 'cloud_provider: aws'
|
||||
network:
|
||||
plugin: flannel
|
||||
options:
|
||||
|
@ -11,7 +11,8 @@ const (
|
||||
|
||||
DefaultAuthStrategy = "x509"
|
||||
|
||||
DefaultNetworkPlugin = "flannel"
|
||||
DefaultNetworkPlugin = "flannel"
|
||||
DefaultNetworkCloudProvider = "none"
|
||||
|
||||
DefaultInfraContainerImage = "gcr.io/google_containers/pause-amd64:3.0"
|
||||
DefaultAplineImage = "alpine:latest"
|
||||
@ -19,16 +20,20 @@ const (
|
||||
DefaultCertDownloaderImage = "rancher/rke-cert-deployer:0.1.0"
|
||||
DefaultServiceSidekickImage = "rancher/rke-service-sidekick:0.1.0"
|
||||
|
||||
DefaultFlannelImage = "quay.io/coreos/flannel:v0.9.1"
|
||||
DefaultFlannelCNIImage = "quay.io/coreos/flannel-cni:v0.2.0"
|
||||
DefaultFlannelImage = "quay.io/coreos/flannel:v0.9.1"
|
||||
DefaultFlannelCNIImage = "quay.io/coreos/flannel-cni:v0.2.0"
|
||||
|
||||
DefaultCalicoNodeImage = "quay.io/calico/node:v2.6.2"
|
||||
DefaultCalicoCNIImage = "quay.io/calico/cni:v1.11.0"
|
||||
DefaultCalicoControllersImage = "quay.io/calico/kube-controllers:v1.0.0"
|
||||
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"
|
||||
DefaultCalicoctlImage = "quay.io/calico/ctl:v1.6.2"
|
||||
|
||||
DefaultWeaveImage = "weaveworks/weave-kube: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"
|
||||
DefaultDNSMasqImage = "gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5"
|
||||
|
@ -11,6 +11,7 @@ import (
|
||||
|
||||
const (
|
||||
NetworkPluginResourceName = "rke-network-plugin"
|
||||
CloudProvider = "cloud_provider"
|
||||
|
||||
FlannelNetworkPlugin = "flannel"
|
||||
FlannelImage = "flannel_image"
|
||||
@ -21,6 +22,7 @@ const (
|
||||
CalicoNodeImage = "calico_node_image"
|
||||
CalicoCNIImage = "calico_cni_image"
|
||||
CalicoControllersImages = "calico_controllers_image"
|
||||
CalicoctlImage = "calicoctl_image"
|
||||
|
||||
CanalNetworkPlugin = "canal"
|
||||
CanalNodeImage = "canal_node_image"
|
||||
@ -71,6 +73,8 @@ func (c *Cluster) doCalicoDeploy() error {
|
||||
network.CNIImage: c.Network.Options[CalicoCNIImage],
|
||||
network.NodeImage: c.Network.Options[CalicoNodeImage],
|
||||
network.ControllersImage: c.Network.Options[CalicoControllersImages],
|
||||
network.CalicoctlImage: c.Network.Options[CalicoctlImage],
|
||||
network.CloudProvider: c.Network.Options[CloudProvider],
|
||||
}
|
||||
pluginYaml := network.GetCalicoManifest(calicoConfig)
|
||||
return c.doAddonDeploy(pluginYaml, NetworkPluginResourceName)
|
||||
@ -103,23 +107,39 @@ func (c *Cluster) setClusterNetworkDefaults() {
|
||||
// don't break if the user didn't define options
|
||||
c.Network.Options = make(map[string]string)
|
||||
}
|
||||
networkPluginConfigDefaultsMap := make(map[string]string)
|
||||
switch {
|
||||
case c.Network.Plugin == FlannelNetworkPlugin:
|
||||
setDefaultIfEmptyMapValue(c.Network.Options, FlannelImage, DefaultFlannelImage)
|
||||
setDefaultIfEmptyMapValue(c.Network.Options, FlannelCNIImage, DefaultFlannelCNIImage)
|
||||
networkPluginConfigDefaultsMap = map[string]string{
|
||||
FlannelImage: DefaultFlannelImage,
|
||||
FlannelCNIImage: DefaultFlannelCNIImage,
|
||||
}
|
||||
|
||||
case c.Network.Plugin == CalicoNetworkPlugin:
|
||||
setDefaultIfEmptyMapValue(c.Network.Options, CalicoCNIImage, DefaultCalicoCNIImage)
|
||||
setDefaultIfEmptyMapValue(c.Network.Options, CalicoNodeImage, DefaultCalicoNodeImage)
|
||||
setDefaultIfEmptyMapValue(c.Network.Options, CalicoControllersImages, DefaultCalicoControllersImage)
|
||||
networkPluginConfigDefaultsMap = map[string]string{
|
||||
CalicoCNIImage: DefaultCalicoCNIImage,
|
||||
CalicoNodeImage: DefaultCalicoNodeImage,
|
||||
CalicoControllersImages: DefaultCalicoControllersImage,
|
||||
CloudProvider: DefaultNetworkCloudProvider,
|
||||
CalicoctlImage: DefaultCalicoctlImage,
|
||||
}
|
||||
|
||||
case c.Network.Plugin == CanalNetworkPlugin:
|
||||
setDefaultIfEmptyMapValue(c.Network.Options, CanalCNIImage, DefaultCanalCNIImage)
|
||||
setDefaultIfEmptyMapValue(c.Network.Options, CanalNodeImage, DefaultCanalNodeImage)
|
||||
setDefaultIfEmptyMapValue(c.Network.Options, CanalFlannelImage, DefaultCanalFlannelImage)
|
||||
networkPluginConfigDefaultsMap = map[string]string{
|
||||
CanalCNIImage: DefaultCanalCNIImage,
|
||||
CanalNodeImage: DefaultCanalNodeImage,
|
||||
CanalFlannelImage: DefaultCanalFlannelImage,
|
||||
}
|
||||
|
||||
case c.Network.Plugin == WeaveNetworkPlugin:
|
||||
setDefaultIfEmptyMapValue(c.Network.Options, WeaveImage, DefaultWeaveImage)
|
||||
setDefaultIfEmptyMapValue(c.Network.Options, WeaveCNIImage, DefaultWeaveCNIImage)
|
||||
networkPluginConfigDefaultsMap = map[string]string{
|
||||
WeaveImage: DefaultWeaveImage,
|
||||
WeaveCNIImage: DefaultWeaveCNIImage,
|
||||
}
|
||||
}
|
||||
|
||||
for k, v := range networkPluginConfigDefaultsMap {
|
||||
setDefaultIfEmptyMapValue(c.Network.Options, k, v)
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,54 @@
|
||||
package network
|
||||
|
||||
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
|
||||
# https://docs.projectcalico.org/master/releases#master
|
||||
@ -389,11 +437,11 @@ metadata:
|
||||
namespace: kube-system
|
||||
|
||||
---
|
||||
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: calico-node
|
||||
namespace: kube-system
|
||||
` + awsIPPool + `
|
||||
`
|
||||
}
|
||||
|
@ -11,7 +11,10 @@ const (
|
||||
CNIImage = "cniImage"
|
||||
NodeImage = "nodeImage"
|
||||
ControllersImage = "controllersImage"
|
||||
CalicoctlImage = "calicoctlImage"
|
||||
FlannelImage = "flannelImage"
|
||||
FlannelCNIImage = "flannelCNIImage"
|
||||
FlannelIface = "flannelIface"
|
||||
CloudProvider = "cloudprovider"
|
||||
AWSCloudProvider = "aws"
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user