Created
February 12, 2019 21:24
-
-
Save integrii/77755895cf1712d1deb850be6354204a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Include a clusterrole for the kube-controllers component, | |
# and bind it to the calico-kube-controllers serviceaccount. | |
kind: ClusterRole | |
apiVersion: rbac.authorization.k8s.io/v1 | |
metadata: | |
name: calico-kube-controllers | |
rules: | |
# Pods are monitored for changing labels. | |
# The node controller monitors Kubernetes nodes. | |
# Namespace and serviceaccount labels are used for policy. | |
- apiGroups: | |
- "" | |
resources: | |
- pods | |
- nodes | |
- namespaces | |
- serviceaccounts | |
verbs: | |
- watch | |
- list | |
# Watch for changes to Kubernetes NetworkPolicies. | |
- apiGroups: | |
- networking.k8s.io | |
resources: | |
- networkpolicies | |
verbs: | |
- watch | |
- list | |
--- | |
# Include a clusterrole for the calico-node DaemonSet, | |
# and bind it to the calico-node serviceaccount. | |
kind: ClusterRole | |
apiVersion: rbac.authorization.k8s.io/v1 | |
metadata: | |
name: calico-node | |
rules: | |
# The CNI plugin needs to get pods, nodes, and namespaces. | |
- apiGroups: [""] | |
resources: | |
- pods | |
- nodes | |
- namespaces | |
verbs: | |
- get | |
- apiGroups: [""] | |
resources: | |
- endpoints | |
- services | |
verbs: | |
# Used to discover service IPs for advertisement. | |
- watch | |
- list | |
- apiGroups: [""] | |
resources: | |
- nodes/status | |
verbs: | |
# Needed for clearing NodeNetworkUnavailable flag. | |
- patch |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
kind: ClusterRoleBinding | |
apiVersion: rbac.authorization.k8s.io/v1 | |
metadata: | |
name: calico-kube-controllers | |
roleRef: | |
apiGroup: rbac.authorization.k8s.io | |
kind: ClusterRole | |
name: calico-kube-controllers | |
subjects: | |
- kind: ServiceAccount | |
name: calico-kube-controllers | |
namespace: kube-system | |
--- | |
apiVersion: rbac.authorization.k8s.io/v1 | |
kind: ClusterRoleBinding | |
metadata: | |
name: calico-node | |
roleRef: | |
apiGroup: rbac.authorization.k8s.io | |
kind: ClusterRole | |
name: calico-node | |
subjects: | |
- kind: ServiceAccount | |
name: calico-node | |
namespace: kube-system |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Calico Version v3.5.0 | |
# https://docs.projectcalico.org/v3.5/releases#v3.5.0 | |
# This manifest includes the following component versions: | |
# calico/node:v3.5.0 | |
# calico/cni:v3.5.0 | |
# calico/kube-controllers:v3.5.0 | |
# This ConfigMap is used to configure a self-hosted Calico installation. | |
kind: ConfigMap | |
apiVersion: v1 | |
metadata: | |
name: calico-config | |
namespace: kube-system | |
data: | |
# Configure this with the location of your etcd cluster. | |
etcd_endpoints: "https://etcd-c.internal.{{ .Values.global.fqdn }}:4001,https://etcd-b.internal.{{ .Values.global.fqdn }}:4001,https://etcd-a.internal.{{ .Values.global.fqdn }}:4001" | |
# If you're using TLS enabled etcd uncomment the following. | |
# You must also populate the Secret below with these files. | |
etcd_ca: "/certs/ca.pem" | |
etcd_cert: "/certs/calico-client.pem" | |
etcd_key: "/certs/calico-client-key.pem" | |
# Typha is disabled. (using etcd as a datastore) | |
typha_service_name: "none" | |
# Configure the Calico backend to use. | |
calico_backend: "bird" | |
# Configure the MTU to use | |
veth_mtu: "8981" | |
# The CNI network configuration to install on each node. The special | |
# values in this config will be automatically populated. | |
cni_network_config: |- | |
{ | |
"name": "k8s-pod-network", | |
"cniVersion": "0.3.0", | |
"plugins": [ | |
{ | |
"type": "calico", | |
"log_level": "debug", | |
"etcd_endpoints": "__ETCD_ENDPOINTS__", | |
"etcd_ca_cert_file": "/srv/kubernetes/calico/ca.pem", | |
"etcd_cert_file": "/srv/kubernetes/calico/calico-client.pem", | |
"etcd_key_file": "/srv/kubernetes/calico/calico-client-key.pem", | |
"mtu": 8981, | |
"ipam": { | |
"type": "calico-ipam" | |
}, | |
"policy": { | |
"type": "k8s" | |
}, | |
"kubernetes": { | |
"kubeconfig": "/etc/cni/net.d/__KUBECONFIG_FILENAME__" | |
} | |
}, | |
{ | |
"type": "portmap", | |
"snat": true, | |
"capabilities": {"portMappings": true} | |
} | |
] | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
# This manifest installs the calico/node container, as well | |
# as the Calico CNI plugins and network config on | |
# each master and worker node in a Kubernetes cluster. | |
kind: DaemonSet | |
apiVersion: apps/v1 | |
metadata: | |
name: calico-node | |
namespace: kube-system | |
labels: | |
k8s-app: calico-node | |
spec: | |
selector: | |
matchLabels: | |
k8s-app: calico-node | |
updateStrategy: | |
type: RollingUpdate | |
rollingUpdate: | |
maxUnavailable: 1 | |
template: | |
metadata: | |
labels: | |
k8s-app: calico-node | |
annotations: | |
# This, along with the CriticalAddonsOnly toleration below, | |
# marks the pod as a critical add-on, ensuring it gets | |
# priority scheduling and that its resources are reserved | |
# if it ever gets evicted. | |
scheduler.alpha.kubernetes.io/critical-pod: '' | |
spec: | |
nodeSelector: | |
beta.kubernetes.io/os: linux | |
hostNetwork: true | |
tolerations: | |
# Make sure calico-node gets scheduled on all nodes. | |
- effect: NoSchedule | |
operator: Exists | |
# Mark the pod as a critical add-on for rescheduling. | |
- key: CriticalAddonsOnly | |
operator: Exists | |
- effect: NoExecute | |
operator: Exists | |
serviceAccountName: calico-node | |
# Minimize downtime during a rolling upgrade or deletion; tell Kubernetes to do a "force | |
# deletion": https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods. | |
terminationGracePeriodSeconds: 0 | |
initContainers: | |
# This container installs the Calico CNI binaries | |
# and CNI network config file on each node. | |
- name: install-cni | |
image: calico/cni:v3.3.1 | |
command: ["/install-cni.sh"] | |
resources: | |
requests: | |
cpu: 250m | |
memory: 200Mi | |
env: | |
# this is where secrets like etcd TLS are bootstrapped from. kops creates this directory | |
# and places all the etcd certs in it for us on each node. | |
- name: SECRETS_MOUNT_DIR | |
value: "/certs" | |
# Name of the CNI config file to create. | |
- name: CNI_CONF_NAME | |
value: "10-calico.conflist" | |
# The CNI network config to install on each node. | |
- name: CNI_NETWORK_CONFIG | |
valueFrom: | |
configMapKeyRef: | |
name: calico-config | |
key: cni_network_config | |
# The location of the Calico etcd cluster. | |
- name: ETCD_ENDPOINTS | |
valueFrom: | |
configMapKeyRef: | |
name: calico-config | |
key: etcd_endpoints | |
# CNI MTU Config variable | |
- name: CNI_MTU | |
valueFrom: | |
configMapKeyRef: | |
name: calico-config | |
key: veth_mtu | |
# Prevents the container from sleeping forever. | |
- name: SLEEP | |
value: "false" | |
volumeMounts: | |
- mountPath: /host/opt/cni/bin | |
name: cni-bin-dir | |
- mountPath: /host/etc/cni/net.d | |
name: cni-net-dir | |
- mountPath: /certs | |
name: calico | |
readOnly: true | |
containers: | |
# Runs calico/node container on each Kubernetes node. This | |
# container programs network policy and routes on each | |
# host. | |
- name: calico-node | |
image: calico/node:v3.3.1 | |
env: | |
# set the etcd connection to https | |
- name: ETCD_SCHEME | |
value: https | |
# useful if you go into the pod to debug it | |
- name: ETCDCTL_API | |
value: "3" | |
# wait for etcd before starting | |
- name: WAIT_FOR_DATASTORE | |
value: "true" | |
# log level | |
- name: CALICO_STARTUP_LOGLEVEL | |
value: debug | |
# The location of the Calico etcd cluster. | |
- name: ETCD_ENDPOINTS | |
valueFrom: | |
configMapKeyRef: | |
name: calico-config | |
key: etcd_endpoints | |
# Location of the CA certificate for etcd. | |
- name: ETCD_CERT_FILE | |
valueFrom: | |
configMapKeyRef: | |
name: calico-config | |
key: etcd_cert | |
- name: ETCD_KEY_FILE | |
valueFrom: | |
configMapKeyRef: | |
name: calico-config | |
key: etcd_key | |
- name: ETCD_CA_CERT_FILE | |
valueFrom: | |
configMapKeyRef: | |
name: calico-config | |
key: etcd_ca | |
# Set noderef for node controller. | |
- name: CALICO_K8S_NODE_REF | |
valueFrom: | |
fieldRef: | |
fieldPath: spec.nodeName | |
# Choose the backend to use. | |
- name: CALICO_NETWORKING_BACKEND | |
valueFrom: | |
configMapKeyRef: | |
name: calico-config | |
key: calico_backend | |
# Cluster type to identify the deployment type | |
- name: CLUSTER_TYPE | |
value: "k8s,bgp" | |
# Auto-detect the BGP IP address. | |
- name: IP | |
value: "autodetect" | |
# Enable IPIP | |
- name: CALICO_IPV4POOL_IPIP | |
value: "cross-subnet" | |
# Set MTU for tunnel device used if ipip is enabled | |
- name: FELIX_IPINIPMTU | |
valueFrom: | |
configMapKeyRef: | |
name: calico-config | |
key: veth_mtu | |
# The default IPv4 pool to create on startup if none exists. Pod IPs will be | |
# chosen from this range. Changing this value after installation will have | |
# no effect. This should fall within `--cluster-cidr`. | |
- name: CALICO_IPV4POOL_CIDR | |
value: "100.96.0.0/11" | |
# Disable file logging so `kubectl logs` works. | |
- name: CALICO_DISABLE_FILE_LOGGING | |
value: "true" | |
# Set Felix endpoint to host default action to ACCEPT. | |
- name: FELIX_DEFAULTENDPOINTTOHOSTACTION | |
value: "ACCEPT" | |
# Disable IPv6 on Kubernetes. | |
- name: FELIX_IPV6SUPPORT | |
value: "false" | |
# Set Felix logging to "info" | |
- name: FELIX_LOGSEVERITYSCREEN | |
value: "info" | |
- name: FELIX_HEALTHENABLED | |
value: "true" | |
securityContext: | |
privileged: true | |
resources: | |
requests: | |
cpu: 250m | |
memory: 200Mi | |
livenessProbe: | |
httpGet: | |
path: /liveness | |
port: 9099 | |
host: localhost | |
periodSeconds: 10 | |
initialDelaySeconds: 10 | |
failureThreshold: 6 | |
readinessProbe: | |
exec: | |
command: | |
- /bin/calico-node | |
- -bird-ready | |
- -felix-ready | |
periodSeconds: 10 | |
volumeMounts: | |
- mountPath: /lib/modules | |
name: lib-modules | |
readOnly: true | |
- mountPath: /run/xtables.lock | |
name: xtables-lock | |
readOnly: false | |
- mountPath: /var/run/calico | |
name: var-run-calico | |
readOnly: false | |
- mountPath: /var/lib/calico | |
name: var-lib-calico | |
readOnly: false | |
- mountPath: /certs | |
name: calico | |
readOnly: true | |
volumes: | |
# Used by calico/node. | |
- name: lib-modules | |
hostPath: | |
path: /lib/modules | |
- name: var-run-calico | |
hostPath: | |
path: /var/run/calico | |
- name: var-lib-calico | |
hostPath: | |
path: /var/lib/calico | |
- name: xtables-lock | |
hostPath: | |
path: /run/xtables.lock | |
type: FileOrCreate | |
- name: cni-bin-dir | |
hostPath: | |
path: /opt/cni/bin | |
- name: cni-net-dir | |
hostPath: | |
path: /etc/cni/net.d | |
- name: calico | |
hostPath: | |
path: /srv/kubernetes/calico | |
# Mount in the etcd TLS secrets with mode 400. | |
# See https://kubernetes.io/docs/concepts/configuration/secret/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This manifest deploys the Calico Kubernetes controllers. | |
# See https://github.com/projectcalico/kube-controllers | |
apiVersion: apps/v1 | |
kind: Deployment | |
metadata: | |
name: calico-kube-controllers | |
namespace: kube-system | |
labels: | |
k8s-app: calico-kube-controllers | |
annotations: | |
scheduler.alpha.kubernetes.io/critical-pod: '' | |
spec: | |
# The controllers can only have a single active instance. | |
replicas: 1 | |
strategy: | |
type: Recreate | |
selector: | |
matchLabels: | |
k8s-app: calico-kube-controllers | |
role.kubernetes.io/networking: "1" | |
template: | |
metadata: | |
name: calico-kube-controllers | |
namespace: kube-system | |
labels: | |
k8s-app: calico-kube-controllers | |
role.kubernetes.io/networking: "1" | |
spec: | |
nodeSelector: | |
beta.kubernetes.io/os: linux | |
# The controllers must run in the host network namespace so that | |
# it isn't governed by policy that would prevent it from working. | |
hostNetwork: true | |
tolerations: | |
# Mark the pod as a critical add-on for rescheduling. | |
- key: CriticalAddonsOnly | |
operator: Exists | |
- key: node-role.kubernetes.io/master | |
effect: NoSchedule | |
serviceAccountName: calico-kube-controllers | |
containers: | |
- name: calico-kube-controllers | |
image: calico/kube-controllers:v3.3.1 | |
env: | |
# The location of the Calico etcd cluster. | |
- name: ETCD_ENDPOINTS | |
valueFrom: | |
configMapKeyRef: | |
name: calico-config | |
key: etcd_endpoints | |
# Location of the CA certificates for etcd. | |
- name: ETCD_CERT_FILE | |
valueFrom: | |
configMapKeyRef: | |
name: calico-config | |
key: etcd_cert | |
- name: ETCD_KEY_FILE | |
valueFrom: | |
configMapKeyRef: | |
name: calico-config | |
key: etcd_key | |
- name: ETCD_CA_CERT_FILE | |
valueFrom: | |
configMapKeyRef: | |
name: calico-config | |
key: etcd_ca | |
# Choose which controllers to run. | |
- name: ENABLED_CONTROLLERS | |
value: policy,namespace,serviceaccount,workloadendpoint,node | |
volumeMounts: | |
- mountPath: /certs | |
name: calico | |
readOnly: true | |
resources: | |
requests: | |
cpu: 250m | |
memory: 100Mi | |
readinessProbe: | |
exec: | |
command: | |
- /usr/bin/check-status | |
- -r | |
volumes: | |
# Mount in the etcd TLS secrets with mode 400. | |
# See https://kubernetes.io/docs/concepts/configuration/secret/ | |
- name: calico | |
hostPath: | |
path: /srv/kubernetes/calico |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apiVersion: v1 | |
kind: ServiceAccount | |
metadata: | |
name: calico-node | |
namespace: kube-system | |
--- | |
apiVersion: v1 | |
kind: ServiceAccount | |
metadata: | |
name: calico-kube-controllers | |
namespace: kube-system |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment