Skip to content
This repository was archived by the owner on Jul 30, 2021. It is now read-only.

Commit

Permalink
Merge pull request #714 from dghubble/calico-networking
Browse files Browse the repository at this point in the history
Add network provider option and Calico support
  • Loading branch information
dghubble authored Oct 2, 2017
2 parents 8c51588 + 24143d6 commit 347605b
Show file tree
Hide file tree
Showing 5 changed files with 142 additions and 3 deletions.
4 changes: 2 additions & 2 deletions cmd/bootkube/render.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,8 @@ func validateRenderOpts(cmd *cobra.Command, args []string) error {
if renderOpts.apiServers == "" {
return errors.New("Missing requried flag: --api-servers")
}
if renderOpts.networkProvider != asset.NetworkFlannel && renderOpts.networkProvider != asset.NetworkCanal {
return errors.New("Must specify --network-provider flannel or experimental-canal")
if renderOpts.networkProvider != asset.NetworkFlannel && renderOpts.networkProvider != asset.NetworkCalico && renderOpts.networkProvider != asset.NetworkCanal {
return errors.New("Must specify --network-provider flannel or experimental-calico or experimental-canal")
}
return nil
}
Expand Down
2 changes: 2 additions & 0 deletions hack/quickstart/init-master.sh
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ function init_master_node() {

if [ "$NETWORK_PROVIDER" = "canal" ]; then
network_provider_flags="--network-provider=experimental-canal"
elif [ "$NETWORK_PROVIDER" = "calico" ]; then
network_provider_flags="--network-provider=experimental-calico"
else
network_provider_flags="--network-provider=flannel"
fi
Expand Down
1 change: 1 addition & 0 deletions pkg/asset/asset.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ const (
AssetPathKubeFlannel = "manifests/kube-flannel.yaml"
AssetPathKubeFlannelCfg = "manifests/kube-flannel-cfg.yaml"
AssetPathCalico = "manifests/calico.yaml"
AssetPathCalicoPolicyOnly = "manifests/calico-policy-only.yaml"
AssetPathCalicoCfg = "manifests/calico-config.yaml"
AssetPathCalcioSA = "manifests/calico-service-account.yaml"
AssetPathCalcioRole = "manifests/calico-role.yaml"
Expand Down
124 changes: 124 additions & 0 deletions pkg/asset/internal/templates.go
Original file line number Diff line number Diff line change
Expand Up @@ -1206,6 +1206,130 @@ data:

var CalicoNodeTemplate = []byte(`apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: calico-node
namespace: kube-system
labels:
k8s-app: calico-node
spec:
selector:
matchLabels:
k8s-app: calico-node
template:
metadata:
labels:
k8s-app: calico-node
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ''
spec:
hostNetwork: true
serviceAccountName: calico-node
tolerations:
# Allow the pod to run on master nodes
- key: node-role.kubernetes.io/master
effect: NoSchedule
# Mark the pod as a critical add-on for rescheduling
- key: "CriticalAddonsOnly"
operator: "Exists"
containers:
- name: calico-node
image: {{ .Images.Calico }}
env:
- name: DATASTORE_TYPE
value: "kubernetes"
- name: FELIX_LOGSEVERITYSCREEN
value: "info"
- name: CLUSTER_TYPE
value: "k8s,bgp"
- name: CALICO_DISABLE_FILE_LOGGING
value: "true"
- name: FELIX_DEFAULTENDPOINTTOHOSTACTION
value: "ACCEPT"
- name: FELIX_IPV6SUPPORT
value: "false"
- name: WAIT_FOR_DATASTORE
value: "true"
- name: CALICO_IPV4POOL_CIDR
value: "{{ .PodCIDR }}"
- name: CALICO_IPV4POOL_IPIP
value: "always"
- name: FELIX_IPINIPENABLED
value: "true"
- name: NODENAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: FELIX_HEALTHENABLED
value: "true"
securityContext:
privileged: true
resources:
requests:
cpu: 250m
livenessProbe:
httpGet:
path: /liveness
port: 9099
periodSeconds: 10
initialDelaySeconds: 10
failureThreshold: 6
readinessProbe:
httpGet:
path: /readiness
port: 9099
periodSeconds: 10
volumeMounts:
- mountPath: /lib/modules
name: lib-modules
readOnly: true
- mountPath: /var/run/calico
name: var-run-calico
readOnly: false
- name: install-cni
image: quay.io/calico/cni:v1.10.0
command: ["/install-cni.sh"]
env:
- name: CNI_NETWORK_CONFIG
valueFrom:
configMapKeyRef:
name: calico-config
key: cni_network_config
- name: CNI_NET_DIR
value: "/etc/kubernetes/cni/net.d"
- name: KUBERNETES_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
volumeMounts:
- mountPath: /host/opt/cni/bin
name: cni-bin-dir
- mountPath: /host/etc/cni/net.d
name: cni-net-dir
volumes:
- name: lib-modules
hostPath:
path: /lib/modules
- name: var-run-calico
hostPath:
path: /var/run/calico
- name: cni-bin-dir
hostPath:
path: /opt/cni/bin
- name: cni-net-dir
hostPath:
path: /etc/kubernetes/cni/net.d
updateStrategy:
rollingUpdate:
maxUnavailable: 1
type: RollingUpdate
`)

var CalicoPolicyOnlyTemplate = []byte(`apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: calico-node
namespace: kube-system
Expand Down
14 changes: 13 additions & 1 deletion pkg/asset/k8s.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ const (
SecretEtcdClient = "etcd-client-tls"

NetworkFlannel = "flannel"
NetworkCalico = "experimental-calico"
NetworkCanal = "experimental-canal"

secretNamespace = "kube-system"
Expand Down Expand Up @@ -73,7 +74,7 @@ func newDynamicAssets(conf Config) Assets {
MustCreateAssetFromTemplate(AssetPathKubeFlannelCfg, internal.KubeFlannelCfgTemplate, conf),
MustCreateAssetFromTemplate(AssetPathKubeFlannel, internal.KubeFlannelTemplate, conf),
)
case NetworkCanal:
case NetworkCalico:
assets = append(assets,
MustCreateAssetFromTemplate(AssetPathCalicoCfg, internal.CalicoCfgTemplate, conf),
MustCreateAssetFromTemplate(AssetPathCalcioRole, internal.CalicoRoleTemplate, conf),
Expand All @@ -84,6 +85,17 @@ func newDynamicAssets(conf Config) Assets {
MustCreateAssetFromTemplate(AssetPathCalicoFelixConfigsCRD, internal.CalicoFelixConfigsCRD, conf),
MustCreateAssetFromTemplate(AssetPathCalicoNetworkPoliciesCRD, internal.CalicoNetworkPoliciesCRD, conf),
MustCreateAssetFromTemplate(AssetPathCalicoIPPoolsCRD, internal.CalicoIPPoolsCRD, conf))
case NetworkCanal:
assets = append(assets,
MustCreateAssetFromTemplate(AssetPathCalicoCfg, internal.CalicoCfgTemplate, conf),
MustCreateAssetFromTemplate(AssetPathCalcioRole, internal.CalicoRoleTemplate, conf),
MustCreateAssetFromTemplate(AssetPathCalcioRoleBinding, internal.CalicoRoleBindingTemplate, conf),
MustCreateAssetFromTemplate(AssetPathCalcioSA, internal.CalicoServiceAccountTemplate, conf),
MustCreateAssetFromTemplate(AssetPathCalicoPolicyOnly, internal.CalicoPolicyOnlyTemplate, conf),
MustCreateAssetFromTemplate(AssetPathCalicoBGPConfigsCRD, internal.CalicoBGPConfigsCRD, conf),
MustCreateAssetFromTemplate(AssetPathCalicoFelixConfigsCRD, internal.CalicoFelixConfigsCRD, conf),
MustCreateAssetFromTemplate(AssetPathCalicoNetworkPoliciesCRD, internal.CalicoNetworkPoliciesCRD, conf),
MustCreateAssetFromTemplate(AssetPathCalicoIPPoolsCRD, internal.CalicoIPPoolsCRD, conf))
}
return assets
}
Expand Down

0 comments on commit 347605b

Please sign in to comment.