You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

238 lines
5.9 KiB

  1. apiVersion: v1
  2. kind: ConfigMap
  3. metadata:
  4. name: kube-router-cfg
  5. namespace: kube-system
  6. labels:
  7. tier: node
  8. k8s-app: kube-router
  9. data:
  10. cni-conf.json: |
  11. {
  12. "name":"kubernetes",
  13. "type":"bridge",
  14. "bridge":"kube-bridge",
  15. "isDefaultGateway":true,
  16. {% if kube_router_support_hairpin_mode %}
  17. "hairpinMode":true,
  18. {% endif %}
  19. "ipam": {
  20. "type":"host-local"
  21. }
  22. }
  23. kubeconfig: |
  24. apiVersion: v1
  25. kind: Config
  26. clusterCIDR: {{ kube_pods_subnet }}
  27. clusters:
  28. - name: cluster
  29. cluster:
  30. certificate-authority: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  31. server: {{ kube_apiserver_endpoint }}
  32. users:
  33. - name: kube-router
  34. user:
  35. tokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
  36. contexts:
  37. - context:
  38. cluster: cluster
  39. user: kube-router
  40. name: kube-router-context
  41. current-context: kube-router-context
  42. ---
  43. apiVersion: extensions/v1beta1
  44. kind: DaemonSet
  45. metadata:
  46. labels:
  47. k8s-app: kube-router
  48. tier: node
  49. name: kube-router
  50. namespace: kube-system
  51. spec:
  52. minReadySeconds: 3
  53. updateStrategy:
  54. rollingUpdate:
  55. maxUnavailable: 1
  56. type: RollingUpdate
  57. template:
  58. metadata:
  59. labels:
  60. k8s-app: kube-router
  61. tier: node
  62. spec:
  63. {% if kube_version is version('v1.11.1', '>=') %}
  64. priorityClassName: system-cluster-critical
  65. {% endif %}
  66. serviceAccountName: kube-router
  67. containers:
  68. - name: kube-router
  69. image: {{ kube_router_image_repo }}:{{ kube_router_image_tag }}
  70. imagePullPolicy: IfNotPresent
  71. args:
  72. - --run-router={{ kube_router_run_router | bool }}
  73. - --run-firewall={{ kube_router_run_firewall | bool }}
  74. - --run-service-proxy={{ kube_router_run_service_proxy | bool }}
  75. - --kubeconfig=/var/lib/kube-router/kubeconfig
  76. {% if kube_router_advertise_cluster_ip %}
  77. - --advertise-cluster-ip
  78. {% endif %}
  79. {% if kube_router_advertise_external_ip %}
  80. - --advertise-external-ip
  81. {% endif %}
  82. {% if kube_router_advertise_loadbalancer_ip %}
  83. - --advertise-loadbalancer-ip
  84. {% endif %}
  85. {% if kube_router_peer_router_asns %}
  86. - --peer-router-asns={{ kube_router_peer_router_asns }}
  87. {% endif %}
  88. {% if kube_router_peer_router_ips %}
  89. - --peer-router-ips={{ kube_router_peer_router_ips }}
  90. {% endif %}
  91. {% if kube_router_peer_router_ports %}
  92. - --peer-router-ports={{ kube_router_peer_router_ports }}
  93. {% endif %}
  94. {% for arg in kube_router_extra_args %}
  95. - "{{ arg }}"
  96. {% endfor %}
  97. env:
  98. - name: NODE_NAME
  99. valueFrom:
  100. fieldRef:
  101. fieldPath: spec.nodeName
  102. livenessProbe:
  103. httpGet:
  104. path: /healthz
  105. port: 20244
  106. initialDelaySeconds: 10
  107. periodSeconds: 3
  108. resources:
  109. requests:
  110. cpu: 250m
  111. memory: 250Mi
  112. securityContext:
  113. privileged: true
  114. volumeMounts:
  115. {% if kube_router_enable_dsr %}
  116. - name: docker-socket
  117. mountPath: /var/run/docker.sock
  118. readOnly: true
  119. {% endif %}
  120. - name: lib-modules
  121. mountPath: /lib/modules
  122. readOnly: true
  123. - name: cni-conf-dir
  124. mountPath: /etc/cni/net.d
  125. - name: kubeconfig
  126. mountPath: /var/lib/kube-router
  127. readOnly: true
  128. initContainers:
  129. - name: install-cni
  130. image: {{ busybox_image_repo }}:{{ busybox_image_tag }}
  131. imagePullPolicy: IfNotPresent
  132. command:
  133. - /bin/sh
  134. - -c
  135. - set -e -x;
  136. if [ ! -f /etc/cni/net.d/10-kuberouter.conf ]; then
  137. TMP=/etc/cni/net.d/.tmp-kuberouter-cfg;
  138. cp /etc/kube-router/cni-conf.json ${TMP};
  139. mv ${TMP} /etc/cni/net.d/10-kuberouter.conf;
  140. fi;
  141. if [ ! -f /var/lib/kube-router/kubeconfig ]; then
  142. TMP=/var/lib/kube-router/.tmp-kubeconfig;
  143. cp /etc/kube-router/kubeconfig ${TMP};
  144. mv ${TMP} /var/lib/kube-router/kubeconfig;
  145. fi
  146. volumeMounts:
  147. - mountPath: /etc/cni/net.d
  148. name: cni-conf-dir
  149. - mountPath: /etc/kube-router
  150. name: kube-router-cfg
  151. - name: kubeconfig
  152. mountPath: /var/lib/kube-router
  153. hostNetwork: true
  154. {% if kube_router_enable_dsr %}
  155. hostIPC: true
  156. hostPID: true
  157. {% endif %}
  158. tolerations:
  159. - operator: Exists
  160. # Mark pod as critical for rescheduling (Will have no effect starting with kubernetes 1.12)
  161. - key: CriticalAddonsOnly
  162. operator: "Exists"
  163. volumes:
  164. {% if kube_router_enable_dsr %}
  165. - name: docker-socket
  166. hostPath:
  167. path: /var/run/docker.sock
  168. type: Socket
  169. {% endif %}
  170. - name: lib-modules
  171. hostPath:
  172. path: /lib/modules
  173. - name: cni-conf-dir
  174. hostPath:
  175. path: /etc/cni/net.d
  176. - name: kube-router-cfg
  177. configMap:
  178. name: kube-router-cfg
  179. - name: kubeconfig
  180. hostPath:
  181. path: /var/lib/kube-router
  182. ---
  183. apiVersion: v1
  184. kind: ServiceAccount
  185. metadata:
  186. name: kube-router
  187. namespace: kube-system
  188. ---
  189. kind: ClusterRole
  190. apiVersion: rbac.authorization.k8s.io/v1beta1
  191. metadata:
  192. name: kube-router
  193. namespace: kube-system
  194. rules:
  195. - apiGroups:
  196. - ""
  197. resources:
  198. - namespaces
  199. - pods
  200. - services
  201. - nodes
  202. - endpoints
  203. verbs:
  204. - list
  205. - get
  206. - watch
  207. - apiGroups:
  208. - "networking.k8s.io"
  209. resources:
  210. - networkpolicies
  211. verbs:
  212. - list
  213. - get
  214. - watch
  215. - apiGroups:
  216. - extensions
  217. resources:
  218. - networkpolicies
  219. verbs:
  220. - get
  221. - list
  222. - watch
  223. ---
  224. kind: ClusterRoleBinding
  225. apiVersion: rbac.authorization.k8s.io/v1beta1
  226. metadata:
  227. name: kube-router
  228. roleRef:
  229. apiGroup: rbac.authorization.k8s.io
  230. kind: ClusterRole
  231. name: kube-router
  232. subjects:
  233. - kind: ServiceAccount
  234. name: kube-router
  235. namespace: kube-system