Merge pull request #3028 from Kami-no/cilium

cilium v1.1.2
This commit is contained in:
Chad Swenson
2018-08-09 10:35:29 -05:00
committed by GitHub
7 changed files with 268 additions and 195 deletions

View File

@@ -97,7 +97,7 @@ Supported Components
- Network Plugin - Network Plugin
- [calico](https://github.com/projectcalico/calico) v2.6.8 - [calico](https://github.com/projectcalico/calico) v2.6.8
- [canal](https://github.com/projectcalico/canal) (given calico/flannel versions) - [canal](https://github.com/projectcalico/canal) (given calico/flannel versions)
- [cilium](https://github.com/cilium/cilium) v1.0.0-rc8 - [cilium](https://github.com/cilium/cilium) v1.1.2
- [contiv](https://github.com/contiv/install) v1.1.7 - [contiv](https://github.com/contiv/install) v1.1.7
- [flanneld](https://github.com/coreos/flannel) v0.10.0 - [flanneld](https://github.com/coreos/flannel) v0.10.0
- [weave](https://github.com/weaveworks/weave) v2.4.0 - [weave](https://github.com/weaveworks/weave) v2.4.0

View File

@@ -40,7 +40,7 @@ vault_version: 0.10.1
weave_version: "2.4.0" weave_version: "2.4.0"
pod_infra_version: 3.0 pod_infra_version: 3.0
contiv_version: 1.1.7 contiv_version: 1.1.7
cilium_version: "v1.0.0-rc8" cilium_version: "v1.1.2"
# Download URLs # Download URLs
kubeadm_download_url: "https://storage.googleapis.com/kubernetes-release/release/{{ kubeadm_version }}/bin/linux/amd64/kubeadm" kubeadm_download_url: "https://storage.googleapis.com/kubernetes-release/release/{{ kubeadm_version }}/bin/linux/amd64/kubeadm"

View File

@@ -12,9 +12,9 @@ cilium_policy_dir: /etc/kubernetes/policy
# Limits for apps # Limits for apps
cilium_memory_limit: 500M cilium_memory_limit: 500M
cilium_cpu_limit: 200m cilium_cpu_limit: 500m
cilium_memory_requests: 64M cilium_memory_requests: 64M
cilium_cpu_requests: 50m cilium_cpu_requests: 100m
# Optional features # Optional features
cilium_enable_prometheus: false cilium_enable_prometheus: false

View File

@@ -1,29 +1,49 @@
kind: ConfigMap ---
apiVersion: v1 apiVersion: v1
kind: ConfigMap
metadata: metadata:
name: cilium-config name: cilium-config
namespace: kube-system namespace: kube-system
data: data:
# This etcd-config contains the etcd endpoints of your cluster. If you use # This etcd-config contains the etcd endpoints of your cluster. If you use
# TLS please make sure you uncomment the ca-file line and add the respective # TLS please make sure you follow the tutorial in https://cilium.link/etcd-config
# certificate has a k8s secret, see explanation bellow in the comment labeled
# "ETCD-CERT"
etcd-config: |- etcd-config: |-
--- ---
endpoints: endpoints:
{% for ip_addr in etcd_access_addresses.split(',') %} {% for ip_addr in etcd_access_addresses.split(',') %}
- {{ ip_addr }} - {{ ip_addr }}
{% endfor %} {% endfor %}
#
# In case you want to use TLS in etcd, uncomment the following line # In case you want to use TLS in etcd, uncomment the 'ca-file' line
# and add the certificate as explained in the comment labeled "ETCD-CERT" # and create a kubernetes secret by following the tutorial in
# https://cilium.link/etcd-config
ca-file: "{{ cilium_cert_dir }}/ca_cert.crt" ca-file: "{{ cilium_cert_dir }}/ca_cert.crt"
#
# In case you want client to server authentication, uncomment the following # In case you want client to server authentication, uncomment the following
# lines and add the certificate and key in cilium-etcd-secrets bellow # lines and create a kubernetes secret by following the tutorial in
# https://cilium.link/etcd-config
key-file: "{{ cilium_cert_dir }}/key.pem" key-file: "{{ cilium_cert_dir }}/key.pem"
cert-file: "{{ cilium_cert_dir }}/cert.crt" cert-file: "{{ cilium_cert_dir }}/cert.crt"
# If you want to run cilium in debug mode change this value to true # If you want to run cilium in debug mode change this value to true
debug: "{{ cilium_debug }}" debug: "{{ cilium_debug }}"
disable-ipv4: "{{ cilium_disable_ipv4 }}" disable-ipv4: "{{ cilium_disable_ipv4 }}"
# If you want to clean cilium state; change this value to true
clean-cilium-state: "false"
legacy-host-allows-world: "false"
# If you want cilium monitor to aggregate tracing for packets, set this level
# to "low", "medium", or "maximum". The higher the level, the less packets
# that will be seen in monitor output.
monitor-aggregation-level: "none"
# Regular expression matching compatible Istio sidecar istio-proxy
# container image names
sidecar-istio-proxy-image: "cilium/istio_proxy"
# Encapsulation mode for communication between nodes
# Possible values:
# - disabled
# - vxlan (default)
# - geneve
tunnel: "vxlan"

View File

@@ -1,64 +1,66 @@
--- ---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata: metadata:
name: cilium name: cilium
rules: rules:
- apiGroups: - apiGroups:
- "networking.k8s.io" - "networking.k8s.io"
resources: resources:
- networkpolicies - networkpolicies
verbs: verbs:
- get - get
- list - list
- watch - watch
- apiGroups: - apiGroups:
- "" - ""
resources: resources:
- namespaces - namespaces
- services - services
- nodes - nodes
- endpoints - endpoints
- componentstatuses - componentstatuses
verbs: verbs:
- get - get
- list - list
- watch - watch
- apiGroups: - apiGroups:
- "" - ""
resources: resources:
- pods - pods
- nodes - nodes
verbs: verbs:
- get - get
- list - list
- watch - watch
- update - update
- apiGroups: - apiGroups:
- extensions - extensions
resources: resources:
- networkpolicies #FIXME remove this when we drop support for k8s NP-beta GH-1202 - networkpolicies # FIXME remove this when we drop support for k8s NP-beta GH-1202
- thirdpartyresources - thirdpartyresources
- ingresses - ingresses
verbs: verbs:
- create - create
- get - get
- list - list
- watch - watch
- apiGroups: - apiGroups:
- "apiextensions.k8s.io" - "apiextensions.k8s.io"
resources: resources:
- customresourcedefinitions - customresourcedefinitions
verbs: verbs:
- create - create
- get - get
- list - list
- watch - watch
- update - update
- apiGroups: - apiGroups:
- cilium.io - cilium.io
resources: resources:
- ciliumnetworkpolicies - ciliumnetworkpolicies
- ciliumendpoints - ciliumnetworkpolicies/status
verbs: - ciliumendpoints
- "*" - ciliumendpoints/status
verbs:
- "*"

View File

@@ -1,6 +1,6 @@
--- ---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata: metadata:
name: cilium name: cilium
roleRef: roleRef:
@@ -8,8 +8,8 @@ roleRef:
kind: ClusterRole kind: ClusterRole
name: cilium name: cilium
subjects: subjects:
- kind: ServiceAccount - kind: ServiceAccount
name: cilium name: cilium
namespace: kube-system namespace: kube-system
- kind: Group - kind: Group
name: system:nodes name: system:nodes

View File

@@ -1,10 +1,21 @@
--- ---
apiVersion: extensions/v1beta1 apiVersion: apps/v1
kind: DaemonSet kind: DaemonSet
metadata: metadata:
name: cilium name: cilium
namespace: kube-system namespace: kube-system
spec: spec:
updateStrategy:
type: "RollingUpdate"
rollingUpdate:
# Specifies the maximum number of Pods that can be unavailable during the update process.
# The current default value is 1 or 100% for daemonsets; Adding an explicit value here
# to avoid confusion, as the default value is specific to the type (daemonset/deployment).
maxUnavailable: "100%"
selector:
matchLabels:
k8s-app: cilium
kubernetes.io/cluster-service: "true"
template: template:
metadata: metadata:
labels: labels:
@@ -26,145 +37,185 @@ spec:
{% if rbac_enabled %} {% if rbac_enabled %}
serviceAccountName: cilium serviceAccountName: cilium
{% endif %} {% endif %}
initContainers:
- name: clean-cilium-state
image: docker.io/library/busybox:1.28.4
imagePullPolicy: IfNotPresent
command: ['sh', '-c', 'if [ "${CLEAN_CILIUM_STATE}" = "true" ]; then rm -rf /var/run/cilium/state; rm -rf /sys/fs/bpf/tc/globals/cilium_*; fi']
volumeMounts:
- name: bpf-maps
mountPath: /sys/fs/bpf
- name: cilium-run
mountPath: /var/run/cilium
env:
- name: "CLEAN_CILIUM_STATE"
valueFrom:
configMapKeyRef:
name: cilium-config
optional: true
key: clean-cilium-state
containers: containers:
- image: {{ cilium_image_repo }}:{{ cilium_image_tag }} - image: {{ cilium_image_repo }}:{{ cilium_image_tag }}
imagePullPolicy: Always imagePullPolicy: Always
name: cilium-agent name: cilium-agent
command: [ "cilium-agent" ] command: ["cilium-agent"]
args: args:
- "--debug=$(CILIUM_DEBUG)" - "--debug=$(CILIUM_DEBUG)"
- "-t" - "--kvstore=etcd"
- "vxlan" - "--kvstore-opt=etcd.config=/var/lib/etcd-config/etcd.config"
- "--kvstore" - "--disable-ipv4=$(DISABLE_IPV4)"
- "etcd"
- "--kvstore-opt"
- "etcd.config=/var/lib/etcd-config/etcd.config"
- "--disable-ipv4=$(DISABLE_IPV4)"
{% if cilium_enable_prometheus %} {% if cilium_enable_prometheus %}
ports: ports:
- name: prometheus - name: prometheus
containerPort: 9090 containerPort: 9090
{% endif %} {% endif %}
lifecycle: lifecycle:
postStart: postStart:
exec:
command:
- "/cni-install.sh"
preStop:
exec:
command:
- "/cni-uninstall.sh"
env:
- name: "K8S_NODE_NAME"
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: "CILIUM_DEBUG"
valueFrom:
configMapKeyRef:
name: cilium-config
key: debug
- name: "DISABLE_IPV4"
valueFrom:
configMapKeyRef:
name: cilium-config
key: disable-ipv4
{% if cilium_enable_prometheus %}
# Note: this variable is a no-op if not defined, and is used in the
# prometheus examples.
- name: "CILIUM_PROMETHEUS_SERVE_ADDR"
valueFrom:
configMapKeyRef:
name: cilium-metrics-config
optional: true
key: prometheus-serve-addr
{% endif %}
- name: "CILIUM_LEGACY_HOST_ALLOWS_WORLD"
valueFrom:
configMapKeyRef:
name: cilium-config
optional: true
key: legacy-host-allows-world
- name: "CILIUM_SIDECAR_ISTIO_PROXY_IMAGE"
valueFrom:
configMapKeyRef:
name: cilium-config
key: sidecar-istio-proxy-image
optional: true
- name: "CILIUM_TUNNEL"
valueFrom:
configMapKeyRef:
key: tunnel
name: cilium-config
optional: true
- name: "CILIUM_MONITOR_AGGREGATION_LEVEL"
valueFrom:
configMapKeyRef:
key: monitor-aggregation-level
name: cilium-config
optional: true
resources:
limits:
cpu: {{ cilium_cpu_limit }}
memory: {{ cilium_memory_limit }}
requests:
cpu: {{ cilium_cpu_requests }}
memory: {{ cilium_memory_requests }}
livenessProbe:
exec: exec:
command: command:
- "/cni-install.sh" - cilium
preStop: - status
# The initial delay for the liveness probe is intentionally large to
# avoid an endless kill & restart cycle if in the event that the initial
# bootstrapping takes longer than expected.
initialDelaySeconds: 120
failureThreshold: 10
periodSeconds: 10
readinessProbe:
exec: exec:
command: command:
- "/cni-uninstall.sh" - cilium
env: - status
- name: "K8S_NODE_NAME" initialDelaySeconds: 5
valueFrom: periodSeconds: 5
fieldRef: volumeMounts:
fieldPath: spec.nodeName - name: bpf-maps
- name: "CILIUM_DEBUG" mountPath: /sys/fs/bpf
valueFrom: - name: cilium-run
configMapKeyRef: mountPath: /var/run/cilium
name: cilium-config - name: cni-path
key: debug mountPath: /host/opt/cni/bin
- name: "DISABLE_IPV4" - name: etc-cni-netd
valueFrom: mountPath: /host/etc/cni/net.d
configMapKeyRef: - name: docker-socket
name: cilium-config mountPath: /var/run/docker.sock
key: disable-ipv4 readOnly: true
{% if cilium_enable_prometheus %} - name: etcd-config-path
# Note: this variable is a no-op if not defined, and is used in the mountPath: /var/lib/etcd-config
# prometheus examples. readOnly: true
- name: "CILIUM_PROMETHEUS_SERVE_ADDR" - name: cilium-certs
valueFrom: mountPath: {{ cilium_cert_dir }}
configMapKeyRef: readOnly: true
name: cilium-metrics-config securityContext:
optional: true capabilities:
key: prometheus-serve-addr add:
{% endif %} - "NET_ADMIN"
resources: privileged: true
limits:
cpu: {{ cilium_cpu_limit }}
memory: {{ cilium_memory_limit }}
requests:
cpu: {{ cilium_cpu_requests }}
memory: {{ cilium_memory_requests }}
livenessProbe:
exec:
command:
- cilium
- status
# The initial delay for the liveness probe is intentionally large to
# avoid an endless kill & restart cycle if in the event that the initial
# bootstrapping takes longer than expected.
initialDelaySeconds: 120
failureThreshold: 10
periodSeconds: 10
readinessProbe:
exec:
command:
- cilium
- status
initialDelaySeconds: 5
periodSeconds: 5
volumeMounts:
- name: bpf-maps
mountPath: /sys/fs/bpf
- name: cilium-run
mountPath: /var/run/cilium
- name: cni-path
mountPath: /host/opt/cni/bin
- name: etc-cni-netd
mountPath: /host/etc/cni/net.d
- name: docker-socket
mountPath: /var/run/docker.sock
readOnly: true
- name: etcd-config-path
mountPath: /var/lib/etcd-config
readOnly: true
- name: cilium-certs
mountPath: {{ cilium_cert_dir }}
readOnly: true
securityContext:
capabilities:
add:
- "NET_ADMIN"
privileged: true
hostNetwork: true hostNetwork: true
volumes: volumes:
# To keep state between restarts / upgrades # To keep state between restarts / upgrades
- name: cilium-run - name: cilium-run
hostPath: hostPath:
path: /var/run/cilium path: /var/run/cilium
# To keep state between restarts / upgrades # To keep state between restarts / upgrades
- name: bpf-maps - name: bpf-maps
hostPath: hostPath:
path: /sys/fs/bpf path: /sys/fs/bpf
# To read docker events from the node # To read docker events from the node
- name: docker-socket - name: docker-socket
hostPath: hostPath:
path: /var/run/docker.sock path: /var/run/docker.sock
# To install cilium cni plugin in the host # To install cilium cni plugin in the host
- name: cni-path - name: cni-path
hostPath: hostPath:
path: /opt/cni/bin path: /opt/cni/bin
# To install cilium cni configuration in the host # To install cilium cni configuration in the host
- name: etc-cni-netd - name: etc-cni-netd
hostPath: hostPath:
path: /etc/cni/net.d path: /etc/cni/net.d
- name: cilium-certs # To read the etcd config stored in config maps
hostPath:
path: {{ cilium_cert_dir }}
# To read the etcd config stored in config maps
- name: etcd-config-path - name: etcd-config-path
configMap: configMap:
name: cilium-config name: cilium-config
items: items:
- key: etcd-config - key: etcd-config
path: etcd.config path: etcd.config
# To read the k8s etcd secrets in case the user might want to use TLS
- name: cilium-certs
hostPath:
path: {{ cilium_cert_dir }}
restartPolicy: Always
tolerations: tolerations:
- effect: NoSchedule - effect: NoSchedule
key: node-role.kubernetes.io/master key: node-role.kubernetes.io/master
- effect: NoSchedule - effect: NoSchedule
key: node.cloudprovider.kubernetes.io/uninitialized key: node.cloudprovider.kubernetes.io/uninitialized
value: "true" value: "true"
# Mark cilium's pod as critical for rescheduling # Mark cilium's pod as critical for rescheduling
- key: CriticalAddonsOnly - key: CriticalAddonsOnly
operator: "Exists" operator: "Exists"