6.0 思维导图

画板

6.1 Service

1、Service和Pod通过标签关联

6、k8s网络 - 图2

2、service通过IPtables或IPvs提供负载

ClusterIP

默认,分配一个稳定的IP地址,即VIP,只能集群内部访问

NodePort

每个节点上启用一个相同的port来暴露服务,可以在集群外部访问,也会分配一个稳定的集群内部IP地址(可定义的)

默认端口范围:30000~32767

LoadBalance

基于云平台(利用云平台的负载均衡器进行负载均衡),类似NodePort,每个节点启用一个port暴露服务

6.2 Service代理模式

6、k8s网络 - 图3

流量包流程:客户端 —-> NodePort/ClusterIP(iptables/IPvs) —-> 一组Pod

Iptables

  • 灵活、功能强大
  • 规则臃肿,遍历匹配和更新,呈线性时延
  • 极限情况下会存在规则丢失,不易排查和处理

IPvs

  • 工作在内核态,性能好
  • 调度算法丰富:rr、wrr、lc(最小连接数)、wlc(加权最小连接数)、ip hash

6.3 Service CoreDNS

k8s默认采用的DNS服务,以Pod部署在集群中,CoreDNS监视k8s集群的API,为每个service创建DNS记录,用于域名解析

ClusterIPA记录格式:..svc.cluster.local

6.4 Ingress

6、k8s网络 - 图4

  • 公开了从集群外部到集群内服务的HTTP和HTTPS路由的规则集合,而具体实现流量路 由则是由Ingress Controller负责
  • Ingress:K8s中的一个抽象资源,给管理员 提供一个暴露应用的入口定义方法
  • Ingress Controller:根据Ingress生成具体 的路由规则,并对Pod负载均衡器

https://github.com/kubernetes/ingress-nginx

6、k8s网络 - 图5

Ingress控制器部署(0.30.0)-ingress-controller.yaml

  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4. name: ingress-nginx
  5. labels:
  6. app.kubernetes.io/name: ingress-nginx
  7. app.kubernetes.io/part-of: ingress-nginx
  8. ---
  9. kind: ConfigMap
  10. apiVersion: v1
  11. metadata:
  12. name: nginx-configuration
  13. namespace: ingress-nginx
  14. labels:
  15. app.kubernetes.io/name: ingress-nginx
  16. app.kubernetes.io/part-of: ingress-nginx
  17. ---
  18. kind: ConfigMap
  19. apiVersion: v1
  20. metadata:
  21. name: tcp-services
  22. namespace: ingress-nginx
  23. labels:
  24. app.kubernetes.io/name: ingress-nginx
  25. app.kubernetes.io/part-of: ingress-nginx
  26. ---
  27. kind: ConfigMap
  28. apiVersion: v1
  29. metadata:
  30. name: udp-services
  31. namespace: ingress-nginx
  32. labels:
  33. app.kubernetes.io/name: ingress-nginx
  34. app.kubernetes.io/part-of: ingress-nginx
  35. ---
  36. apiVersion: v1
  37. kind: ServiceAccount
  38. metadata:
  39. name: nginx-ingress-serviceaccount
  40. namespace: ingress-nginx
  41. labels:
  42. app.kubernetes.io/name: ingress-nginx
  43. app.kubernetes.io/part-of: ingress-nginx
  44. ---
  45. #apiVersion: rbac.authorization.k8s.io/v1beta1 # 高版本已被弃用
  46. apiVersion: rbac.authorization.k8s.io/v1
  47. kind: ClusterRole
  48. metadata:
  49. name: nginx-ingress-clusterrole
  50. labels:
  51. app.kubernetes.io/name: ingress-nginx
  52. app.kubernetes.io/part-of: ingress-nginx
  53. rules:
  54. - apiGroups:
  55. - ""
  56. resources:
  57. - configmaps
  58. - endpoints
  59. - nodes
  60. - pods
  61. - secrets
  62. verbs:
  63. - list
  64. - watch
  65. - apiGroups:
  66. - ""
  67. resources:
  68. - nodes
  69. verbs:
  70. - get
  71. - apiGroups:
  72. - ""
  73. resources:
  74. - services
  75. verbs:
  76. - get
  77. - list
  78. - watch
  79. - apiGroups:
  80. - ""
  81. resources:
  82. - events
  83. verbs:
  84. - create
  85. - patch
  86. - apiGroups:
  87. - "extensions"
  88. - "networking.k8s.io"
  89. resources:
  90. - ingresses
  91. verbs:
  92. - get
  93. - list
  94. - watch
  95. - apiGroups:
  96. - "extensions"
  97. - "networking.k8s.io"
  98. resources:
  99. - ingresses/status
  100. verbs:
  101. - update
  102. ---
  103. apiVersion: rbac.authorization.k8s.io/v1
  104. # apiVersion: rbac.authorization.k8s.io/v1beta1 # 高版本已被弃用
  105. kind: Role
  106. metadata:
  107. name: nginx-ingress-role
  108. namespace: ingress-nginx
  109. labels:
  110. app.kubernetes.io/name: ingress-nginx
  111. app.kubernetes.io/part-of: ingress-nginx
  112. rules:
  113. - apiGroups:
  114. - ""
  115. resources:
  116. - configmaps
  117. - pods
  118. - secrets
  119. - namespaces
  120. verbs:
  121. - get
  122. - apiGroups:
  123. - ""
  124. resources:
  125. - configmaps
  126. resourceNames:
  127. # Defaults to "<election-id>-<ingress-class>"
  128. # Here: "<ingress-controller-leader>-<nginx>"
  129. # This has to be adapted if you change either parameter
  130. # when launching the nginx-ingress-controller.
  131. - "ingress-controller-leader-nginx"
  132. verbs:
  133. - get
  134. - update
  135. - apiGroups:
  136. - ""
  137. resources:
  138. - configmaps
  139. verbs:
  140. - create
  141. - apiGroups:
  142. - ""
  143. resources:
  144. - endpoints
  145. verbs:
  146. - get
  147. ---
  148. apiVersion: rbac.authorization.k8s.io/v1
  149. # apiVersion: rbac.authorization.k8s.io/v1beta1
  150. kind: RoleBinding
  151. metadata:
  152. name: nginx-ingress-role-nisa-binding
  153. namespace: ingress-nginx
  154. labels:
  155. app.kubernetes.io/name: ingress-nginx
  156. app.kubernetes.io/part-of: ingress-nginx
  157. roleRef:
  158. apiGroup: rbac.authorization.k8s.io
  159. kind: Role
  160. name: nginx-ingress-role
  161. subjects:
  162. - kind: ServiceAccount
  163. name: nginx-ingress-serviceaccount
  164. namespace: ingress-nginx
  165. ---
  166. apiVersion: rbac.authorization.k8s.io/v1
  167. # apiVersion: rbac.authorization.k8s.io/v1beta1
  168. kind: ClusterRoleBinding
  169. metadata:
  170. name: nginx-ingress-clusterrole-nisa-binding
  171. labels:
  172. app.kubernetes.io/name: ingress-nginx
  173. app.kubernetes.io/part-of: ingress-nginx
  174. roleRef:
  175. apiGroup: rbac.authorization.k8s.io
  176. kind: ClusterRole
  177. name: nginx-ingress-clusterrole
  178. subjects:
  179. - kind: ServiceAccount
  180. name: nginx-ingress-serviceaccount
  181. namespace: ingress-nginx
  182. ---
  183. apiVersion: apps/v1
  184. kind: DaemonSet
  185. metadata:
  186. name: nginx-ingress-controller
  187. namespace: ingress-nginx
  188. labels:
  189. app.kubernetes.io/name: ingress-nginx
  190. app.kubernetes.io/part-of: ingress-nginx
  191. spec:
  192. selector:
  193. matchLabels:
  194. app.kubernetes.io/name: ingress-nginx
  195. app.kubernetes.io/part-of: ingress-nginx
  196. template:
  197. metadata:
  198. labels:
  199. app.kubernetes.io/name: ingress-nginx
  200. app.kubernetes.io/part-of: ingress-nginx
  201. annotations:
  202. prometheus.io/port: "10254"
  203. prometheus.io/scrape: "true"
  204. spec:
  205. hostNetwork: true
  206. # wait up to five minutes for the drain of connections
  207. terminationGracePeriodSeconds: 300
  208. serviceAccountName: nginx-ingress-serviceaccount
  209. nodeSelector:
  210. kubernetes.io/os: linux
  211. containers:
  212. - name: nginx-ingress-controller
  213. image: geray/nginx-ingress-controller:0.30.0
  214. args:
  215. - /nginx-ingress-controller
  216. - --configmap=$(POD_NAMESPACE)/nginx-configuration
  217. - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
  218. - --udp-services-configmap=$(POD_NAMESPACE)/udp-services
  219. - --publish-service=$(POD_NAMESPACE)/ingress-nginx
  220. - --annotations-prefix=nginx.ingress.kubernetes.io
  221. securityContext:
  222. allowPrivilegeEscalation: true
  223. capabilities:
  224. drop:
  225. - ALL
  226. add:
  227. - NET_BIND_SERVICE
  228. # www-data -> 101
  229. runAsUser: 101
  230. env:
  231. - name: POD_NAME
  232. valueFrom:
  233. fieldRef:
  234. fieldPath: metadata.name
  235. - name: POD_NAMESPACE
  236. valueFrom:
  237. fieldRef:
  238. fieldPath: metadata.namespace
  239. ports:
  240. - name: http
  241. containerPort: 80
  242. protocol: TCP
  243. - name: https
  244. containerPort: 443
  245. protocol: TCP
  246. livenessProbe:
  247. failureThreshold: 3
  248. httpGet:
  249. path: /healthz
  250. port: 10254
  251. scheme: HTTP
  252. initialDelaySeconds: 10
  253. periodSeconds: 10
  254. successThreshold: 1
  255. timeoutSeconds: 10
  256. readinessProbe:
  257. failureThreshold: 3
  258. httpGet:
  259. path: /healthz
  260. port: 10254
  261. scheme: HTTP
  262. periodSeconds: 10
  263. successThreshold: 1
  264. timeoutSeconds: 10
  265. lifecycle:
  266. preStop:
  267. exec:
  268. command:
  269. - /wait-shutdown
  270. ---
  271. apiVersion: v1
  272. kind: LimitRange
  273. metadata:
  274. name: ingress-nginx
  275. namespace: ingress-nginx
  276. labels:
  277. app.kubernetes.io/name: ingress-nginx
  278. app.kubernetes.io/part-of: ingress-nginx
  279. spec:
  280. limits:
  281. - min:
  282. memory: 90Mi
  283. cpu: 100m
  284. type: Container

1.0.0

Kubernetes-v1.22+ 需要使用 ingress-nginx>=1.0,因为 networking.k8s.io/v1beta 已经移除

作者:cnsre运维博客
链接:https://www.imooc.com/article/320464
来源:慕课网
  1. curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.0/deploy/static/provider/baremetal/deploy.yaml > deploy.yaml
  2. sed -i 's@k8s.gcr.io/ingress-nginx/controller:v1.0.0\(.*\)@willdockerhub/ingress-nginx-controller:v1.0.0@' deploy.yaml
  3. sed -i 's@k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.0\(.*\)$@hzde0128/kube-webhook-certgen:v1.0@' deploy.yaml
  4. kubectl apply -f ingress-nginx.yaml
  • geray/kube-webhook-certgen:v1.0
  • geray/ingress-nginx-controller:v1.0.0
  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4. name: ingress-nginx
  5. labels:
  6. app.kubernetes.io/name: ingress-nginx
  7. app.kubernetes.io/instance: ingress-nginx
  8. ---
  9. # Source: ingress-nginx/templates/controller-serviceaccount.yaml
  10. apiVersion: v1
  11. kind: ServiceAccount
  12. metadata:
  13. labels:
  14. helm.sh/chart: ingress-nginx-4.0.1
  15. app.kubernetes.io/name: ingress-nginx
  16. app.kubernetes.io/instance: ingress-nginx
  17. app.kubernetes.io/version: 1.0.0
  18. app.kubernetes.io/managed-by: Helm
  19. app.kubernetes.io/component: controller
  20. name: ingress-nginx
  21. namespace: ingress-nginx
  22. automountServiceAccountToken: true
  23. ---
  24. # Source: ingress-nginx/templates/controller-configmap.yaml
  25. apiVersion: v1
  26. kind: ConfigMap
  27. metadata:
  28. labels:
  29. helm.sh/chart: ingress-nginx-4.0.1
  30. app.kubernetes.io/name: ingress-nginx
  31. app.kubernetes.io/instance: ingress-nginx
  32. app.kubernetes.io/version: 1.0.0
  33. app.kubernetes.io/managed-by: Helm
  34. app.kubernetes.io/component: controller
  35. name: ingress-nginx-controller
  36. namespace: ingress-nginx
  37. data:
  38. ---
  39. # Source: ingress-nginx/templates/clusterrole.yaml
  40. apiVersion: rbac.authorization.k8s.io/v1
  41. kind: ClusterRole
  42. metadata:
  43. labels:
  44. helm.sh/chart: ingress-nginx-4.0.1
  45. app.kubernetes.io/name: ingress-nginx
  46. app.kubernetes.io/instance: ingress-nginx
  47. app.kubernetes.io/version: 1.0.0
  48. app.kubernetes.io/managed-by: Helm
  49. name: ingress-nginx
  50. rules:
  51. - apiGroups:
  52. - ''
  53. resources:
  54. - configmaps
  55. - endpoints
  56. - nodes
  57. - pods
  58. - secrets
  59. verbs:
  60. - list
  61. - watch
  62. - apiGroups:
  63. - ''
  64. resources:
  65. - nodes
  66. verbs:
  67. - get
  68. - apiGroups:
  69. - ''
  70. resources:
  71. - services
  72. verbs:
  73. - get
  74. - list
  75. - watch
  76. - apiGroups:
  77. - networking.k8s.io
  78. resources:
  79. - ingresses
  80. verbs:
  81. - get
  82. - list
  83. - watch
  84. - apiGroups:
  85. - ''
  86. resources:
  87. - events
  88. verbs:
  89. - create
  90. - patch
  91. - apiGroups:
  92. - networking.k8s.io
  93. resources:
  94. - ingresses/status
  95. verbs:
  96. - update
  97. - apiGroups:
  98. - networking.k8s.io
  99. resources:
  100. - ingressclasses
  101. verbs:
  102. - get
  103. - list
  104. - watch
  105. ---
  106. # Source: ingress-nginx/templates/clusterrolebinding.yaml
  107. apiVersion: rbac.authorization.k8s.io/v1
  108. kind: ClusterRoleBinding
  109. metadata:
  110. labels:
  111. helm.sh/chart: ingress-nginx-4.0.1
  112. app.kubernetes.io/name: ingress-nginx
  113. app.kubernetes.io/instance: ingress-nginx
  114. app.kubernetes.io/version: 1.0.0
  115. app.kubernetes.io/managed-by: Helm
  116. name: ingress-nginx
  117. roleRef:
  118. apiGroup: rbac.authorization.k8s.io
  119. kind: ClusterRole
  120. name: ingress-nginx
  121. subjects:
  122. - kind: ServiceAccount
  123. name: ingress-nginx
  124. namespace: ingress-nginx
  125. ---
  126. # Source: ingress-nginx/templates/controller-role.yaml
  127. apiVersion: rbac.authorization.k8s.io/v1
  128. kind: Role
  129. metadata:
  130. labels:
  131. helm.sh/chart: ingress-nginx-4.0.1
  132. app.kubernetes.io/name: ingress-nginx
  133. app.kubernetes.io/instance: ingress-nginx
  134. app.kubernetes.io/version: 1.0.0
  135. app.kubernetes.io/managed-by: Helm
  136. app.kubernetes.io/component: controller
  137. name: ingress-nginx
  138. namespace: ingress-nginx
  139. rules:
  140. - apiGroups:
  141. - ''
  142. resources:
  143. - namespaces
  144. verbs:
  145. - get
  146. - apiGroups:
  147. - ''
  148. resources:
  149. - configmaps
  150. - pods
  151. - secrets
  152. - endpoints
  153. verbs:
  154. - get
  155. - list
  156. - watch
  157. - apiGroups:
  158. - ''
  159. resources:
  160. - services
  161. verbs:
  162. - get
  163. - list
  164. - watch
  165. - apiGroups:
  166. - networking.k8s.io
  167. resources:
  168. - ingresses
  169. verbs:
  170. - get
  171. - list
  172. - watch
  173. - apiGroups:
  174. - networking.k8s.io
  175. resources:
  176. - ingresses/status
  177. verbs:
  178. - update
  179. - apiGroups:
  180. - networking.k8s.io
  181. resources:
  182. - ingressclasses
  183. verbs:
  184. - get
  185. - list
  186. - watch
  187. - apiGroups:
  188. - ''
  189. resources:
  190. - configmaps
  191. resourceNames:
  192. - ingress-controller-leader
  193. verbs:
  194. - get
  195. - update
  196. - apiGroups:
  197. - ''
  198. resources:
  199. - configmaps
  200. verbs:
  201. - create
  202. - apiGroups:
  203. - ''
  204. resources:
  205. - events
  206. verbs:
  207. - create
  208. - patch
  209. ---
  210. # Source: ingress-nginx/templates/controller-rolebinding.yaml
  211. apiVersion: rbac.authorization.k8s.io/v1
  212. kind: RoleBinding
  213. metadata:
  214. labels:
  215. helm.sh/chart: ingress-nginx-4.0.1
  216. app.kubernetes.io/name: ingress-nginx
  217. app.kubernetes.io/instance: ingress-nginx
  218. app.kubernetes.io/version: 1.0.0
  219. app.kubernetes.io/managed-by: Helm
  220. app.kubernetes.io/component: controller
  221. name: ingress-nginx
  222. namespace: ingress-nginx
  223. roleRef:
  224. apiGroup: rbac.authorization.k8s.io
  225. kind: Role
  226. name: ingress-nginx
  227. subjects:
  228. - kind: ServiceAccount
  229. name: ingress-nginx
  230. namespace: ingress-nginx
  231. ---
  232. # Source: ingress-nginx/templates/controller-service-webhook.yaml
  233. apiVersion: v1
  234. kind: Service
  235. metadata:
  236. labels:
  237. helm.sh/chart: ingress-nginx-4.0.1
  238. app.kubernetes.io/name: ingress-nginx
  239. app.kubernetes.io/instance: ingress-nginx
  240. app.kubernetes.io/version: 1.0.0
  241. app.kubernetes.io/managed-by: Helm
  242. app.kubernetes.io/component: controller
  243. name: ingress-nginx-controller-admission
  244. namespace: ingress-nginx
  245. spec:
  246. type: ClusterIP
  247. ports:
  248. - name: https-webhook
  249. port: 443
  250. targetPort: webhook
  251. appProtocol: https
  252. selector:
  253. app.kubernetes.io/name: ingress-nginx
  254. app.kubernetes.io/instance: ingress-nginx
  255. app.kubernetes.io/component: controller
  256. ---
  257. # Source: ingress-nginx/templates/controller-service.yaml
  258. apiVersion: v1
  259. kind: Service
  260. metadata:
  261. annotations:
  262. labels:
  263. helm.sh/chart: ingress-nginx-4.0.1
  264. app.kubernetes.io/name: ingress-nginx
  265. app.kubernetes.io/instance: ingress-nginx
  266. app.kubernetes.io/version: 1.0.0
  267. app.kubernetes.io/managed-by: Helm
  268. app.kubernetes.io/component: controller
  269. name: ingress-nginx-controller
  270. namespace: ingress-nginx
  271. spec:
  272. type: NodePort
  273. ports:
  274. - name: http
  275. port: 80
  276. protocol: TCP
  277. targetPort: http
  278. appProtocol: http
  279. - name: https
  280. port: 443
  281. protocol: TCP
  282. targetPort: https
  283. appProtocol: https
  284. selector:
  285. app.kubernetes.io/name: ingress-nginx
  286. app.kubernetes.io/instance: ingress-nginx
  287. app.kubernetes.io/component: controller
  288. ---
  289. # Source: ingress-nginx/templates/controller-deployment.yaml
  290. apiVersion: apps/v1
  291. kind: Deployment
  292. metadata:
  293. labels:
  294. helm.sh/chart: ingress-nginx-4.0.1
  295. app.kubernetes.io/name: ingress-nginx
  296. app.kubernetes.io/instance: ingress-nginx
  297. app.kubernetes.io/version: 1.0.0
  298. app.kubernetes.io/managed-by: Helm
  299. app.kubernetes.io/component: controller
  300. name: ingress-nginx-controller
  301. namespace: ingress-nginx
  302. spec:
  303. selector:
  304. matchLabels:
  305. app.kubernetes.io/name: ingress-nginx
  306. app.kubernetes.io/instance: ingress-nginx
  307. app.kubernetes.io/component: controller
  308. revisionHistoryLimit: 10
  309. minReadySeconds: 0
  310. template:
  311. metadata:
  312. labels:
  313. app.kubernetes.io/name: ingress-nginx
  314. app.kubernetes.io/instance: ingress-nginx
  315. app.kubernetes.io/component: controller
  316. spec:
  317. dnsPolicy: ClusterFirst
  318. containers:
  319. - name: controller
  320. image: geray/ingress-nginx-controller:v1.0.0
  321. imagePullPolicy: IfNotPresent
  322. lifecycle:
  323. preStop:
  324. exec:
  325. command:
  326. - /wait-shutdown
  327. args:
  328. - /nginx-ingress-controller
  329. - --election-id=ingress-controller-leader
  330. - --controller-class=k8s.io/ingress-nginx
  331. - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller
  332. - --validating-webhook=:8443
  333. - --validating-webhook-certificate=/usr/local/certificates/cert
  334. - --validating-webhook-key=/usr/local/certificates/key
  335. securityContext:
  336. capabilities:
  337. drop:
  338. - ALL
  339. add:
  340. - NET_BIND_SERVICE
  341. runAsUser: 101
  342. allowPrivilegeEscalation: true
  343. env:
  344. - name: POD_NAME
  345. valueFrom:
  346. fieldRef:
  347. fieldPath: metadata.name
  348. - name: POD_NAMESPACE
  349. valueFrom:
  350. fieldRef:
  351. fieldPath: metadata.namespace
  352. - name: LD_PRELOAD
  353. value: /usr/local/lib/libmimalloc.so
  354. livenessProbe:
  355. failureThreshold: 5
  356. httpGet:
  357. path: /healthz
  358. port: 10254
  359. scheme: HTTP
  360. initialDelaySeconds: 10
  361. periodSeconds: 10
  362. successThreshold: 1
  363. timeoutSeconds: 1
  364. readinessProbe:
  365. failureThreshold: 3
  366. httpGet:
  367. path: /healthz
  368. port: 10254
  369. scheme: HTTP
  370. initialDelaySeconds: 10
  371. periodSeconds: 10
  372. successThreshold: 1
  373. timeoutSeconds: 1
  374. ports:
  375. - name: http
  376. containerPort: 80
  377. protocol: TCP
  378. - name: https
  379. containerPort: 443
  380. protocol: TCP
  381. - name: webhook
  382. containerPort: 8443
  383. protocol: TCP
  384. volumeMounts:
  385. - name: webhook-cert
  386. mountPath: /usr/local/certificates/
  387. readOnly: true
  388. resources:
  389. requests:
  390. cpu: 100m
  391. memory: 90Mi
  392. nodeSelector:
  393. kubernetes.io/os: linux
  394. serviceAccountName: ingress-nginx
  395. terminationGracePeriodSeconds: 300
  396. volumes:
  397. - name: webhook-cert
  398. secret:
  399. secretName: ingress-nginx-admission
  400. ---
  401. # Source: ingress-nginx/templates/controller-ingressclass.yaml
  402. # We don't support namespaced ingressClass yet
  403. # So a ClusterRole and a ClusterRoleBinding is required
  404. apiVersion: networking.k8s.io/v1
  405. kind: IngressClass
  406. metadata:
  407. labels:
  408. helm.sh/chart: ingress-nginx-4.0.1
  409. app.kubernetes.io/name: ingress-nginx
  410. app.kubernetes.io/instance: ingress-nginx
  411. app.kubernetes.io/version: 1.0.0
  412. app.kubernetes.io/managed-by: Helm
  413. app.kubernetes.io/component: controller
  414. name: nginx
  415. namespace: ingress-nginx
  416. spec:
  417. controller: k8s.io/ingress-nginx
  418. ---
  419. # Source: ingress-nginx/templates/admission-webhooks/validating-webhook.yaml
  420. # before changing this value, check the required kubernetes version
  421. # https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#prerequisites
  422. apiVersion: admissionregistration.k8s.io/v1
  423. kind: ValidatingWebhookConfiguration
  424. metadata:
  425. labels:
  426. helm.sh/chart: ingress-nginx-4.0.1
  427. app.kubernetes.io/name: ingress-nginx
  428. app.kubernetes.io/instance: ingress-nginx
  429. app.kubernetes.io/version: 1.0.0
  430. app.kubernetes.io/managed-by: Helm
  431. app.kubernetes.io/component: admission-webhook
  432. name: ingress-nginx-admission
  433. webhooks:
  434. - name: validate.nginx.ingress.kubernetes.io
  435. matchPolicy: Equivalent
  436. rules:
  437. - apiGroups:
  438. - networking.k8s.io
  439. apiVersions:
  440. - v1
  441. operations:
  442. - CREATE
  443. - UPDATE
  444. resources:
  445. - ingresses
  446. failurePolicy: Fail
  447. sideEffects: None
  448. admissionReviewVersions:
  449. - v1
  450. clientConfig:
  451. service:
  452. namespace: ingress-nginx
  453. name: ingress-nginx-controller-admission
  454. path: /networking/v1/ingresses
  455. ---
  456. # Source: ingress-nginx/templates/admission-webhooks/job-patch/serviceaccount.yaml
  457. apiVersion: v1
  458. kind: ServiceAccount
  459. metadata:
  460. name: ingress-nginx-admission
  461. namespace: ingress-nginx
  462. annotations:
  463. helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade
  464. helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
  465. labels:
  466. helm.sh/chart: ingress-nginx-4.0.1
  467. app.kubernetes.io/name: ingress-nginx
  468. app.kubernetes.io/instance: ingress-nginx
  469. app.kubernetes.io/version: 1.0.0
  470. app.kubernetes.io/managed-by: Helm
  471. app.kubernetes.io/component: admission-webhook
  472. ---
  473. # Source: ingress-nginx/templates/admission-webhooks/job-patch/clusterrole.yaml
  474. apiVersion: rbac.authorization.k8s.io/v1
  475. kind: ClusterRole
  476. metadata:
  477. name: ingress-nginx-admission
  478. annotations:
  479. helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade
  480. helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
  481. labels:
  482. helm.sh/chart: ingress-nginx-4.0.1
  483. app.kubernetes.io/name: ingress-nginx
  484. app.kubernetes.io/instance: ingress-nginx
  485. app.kubernetes.io/version: 1.0.0
  486. app.kubernetes.io/managed-by: Helm
  487. app.kubernetes.io/component: admission-webhook
  488. rules:
  489. - apiGroups:
  490. - admissionregistration.k8s.io
  491. resources:
  492. - validatingwebhookconfigurations
  493. verbs:
  494. - get
  495. - update
  496. ---
  497. # Source: ingress-nginx/templates/admission-webhooks/job-patch/clusterrolebinding.yaml
  498. apiVersion: rbac.authorization.k8s.io/v1
  499. kind: ClusterRoleBinding
  500. metadata:
  501. name: ingress-nginx-admission
  502. annotations:
  503. helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade
  504. helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
  505. labels:
  506. helm.sh/chart: ingress-nginx-4.0.1
  507. app.kubernetes.io/name: ingress-nginx
  508. app.kubernetes.io/instance: ingress-nginx
  509. app.kubernetes.io/version: 1.0.0
  510. app.kubernetes.io/managed-by: Helm
  511. app.kubernetes.io/component: admission-webhook
  512. roleRef:
  513. apiGroup: rbac.authorization.k8s.io
  514. kind: ClusterRole
  515. name: ingress-nginx-admission
  516. subjects:
  517. - kind: ServiceAccount
  518. name: ingress-nginx-admission
  519. namespace: ingress-nginx
  520. ---
  521. # Source: ingress-nginx/templates/admission-webhooks/job-patch/role.yaml
  522. apiVersion: rbac.authorization.k8s.io/v1
  523. kind: Role
  524. metadata:
  525. name: ingress-nginx-admission
  526. namespace: ingress-nginx
  527. annotations:
  528. helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade
  529. helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
  530. labels:
  531. helm.sh/chart: ingress-nginx-4.0.1
  532. app.kubernetes.io/name: ingress-nginx
  533. app.kubernetes.io/instance: ingress-nginx
  534. app.kubernetes.io/version: 1.0.0
  535. app.kubernetes.io/managed-by: Helm
  536. app.kubernetes.io/component: admission-webhook
  537. rules:
  538. - apiGroups:
  539. - ''
  540. resources:
  541. - secrets
  542. verbs:
  543. - get
  544. - create
  545. ---
  546. # Source: ingress-nginx/templates/admission-webhooks/job-patch/rolebinding.yaml
  547. apiVersion: rbac.authorization.k8s.io/v1
  548. kind: RoleBinding
  549. metadata:
  550. name: ingress-nginx-admission
  551. namespace: ingress-nginx
  552. annotations:
  553. helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade
  554. helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
  555. labels:
  556. helm.sh/chart: ingress-nginx-4.0.1
  557. app.kubernetes.io/name: ingress-nginx
  558. app.kubernetes.io/instance: ingress-nginx
  559. app.kubernetes.io/version: 1.0.0
  560. app.kubernetes.io/managed-by: Helm
  561. app.kubernetes.io/component: admission-webhook
  562. roleRef:
  563. apiGroup: rbac.authorization.k8s.io
  564. kind: Role
  565. name: ingress-nginx-admission
  566. subjects:
  567. - kind: ServiceAccount
  568. name: ingress-nginx-admission
  569. namespace: ingress-nginx
  570. ---
  571. # Source: ingress-nginx/templates/admission-webhooks/job-patch/job-createSecret.yaml
  572. apiVersion: batch/v1
  573. kind: Job
  574. metadata:
  575. name: ingress-nginx-admission-create
  576. namespace: ingress-nginx
  577. annotations:
  578. helm.sh/hook: pre-install,pre-upgrade
  579. helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
  580. labels:
  581. helm.sh/chart: ingress-nginx-4.0.1
  582. app.kubernetes.io/name: ingress-nginx
  583. app.kubernetes.io/instance: ingress-nginx
  584. app.kubernetes.io/version: 1.0.0
  585. app.kubernetes.io/managed-by: Helm
  586. app.kubernetes.io/component: admission-webhook
  587. spec:
  588. template:
  589. metadata:
  590. name: ingress-nginx-admission-create
  591. labels:
  592. helm.sh/chart: ingress-nginx-4.0.1
  593. app.kubernetes.io/name: ingress-nginx
  594. app.kubernetes.io/instance: ingress-nginx
  595. app.kubernetes.io/version: 1.0.0
  596. app.kubernetes.io/managed-by: Helm
  597. app.kubernetes.io/component: admission-webhook
  598. spec:
  599. containers:
  600. - name: create
  601. image: geray/kube-webhook-certgen:v1.0
  602. imagePullPolicy: IfNotPresent
  603. args:
  604. - create
  605. - --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc
  606. - --namespace=$(POD_NAMESPACE)
  607. - --secret-name=ingress-nginx-admission
  608. env:
  609. - name: POD_NAMESPACE
  610. valueFrom:
  611. fieldRef:
  612. fieldPath: metadata.namespace
  613. restartPolicy: OnFailure
  614. serviceAccountName: ingress-nginx-admission
  615. nodeSelector:
  616. kubernetes.io/os: linux
  617. securityContext:
  618. runAsNonRoot: true
  619. runAsUser: 2000
  620. ---
  621. # Source: ingress-nginx/templates/admission-webhooks/job-patch/job-patchWebhook.yaml
  622. apiVersion: batch/v1
  623. kind: Job
  624. metadata:
  625. name: ingress-nginx-admission-patch
  626. namespace: ingress-nginx
  627. annotations:
  628. helm.sh/hook: post-install,post-upgrade
  629. helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
  630. labels:
  631. helm.sh/chart: ingress-nginx-4.0.1
  632. app.kubernetes.io/name: ingress-nginx
  633. app.kubernetes.io/instance: ingress-nginx
  634. app.kubernetes.io/version: 1.0.0
  635. app.kubernetes.io/managed-by: Helm
  636. app.kubernetes.io/component: admission-webhook
  637. spec:
  638. template:
  639. metadata:
  640. name: ingress-nginx-admission-patch
  641. labels:
  642. helm.sh/chart: ingress-nginx-4.0.1
  643. app.kubernetes.io/name: ingress-nginx
  644. app.kubernetes.io/instance: ingress-nginx
  645. app.kubernetes.io/version: 1.0.0
  646. app.kubernetes.io/managed-by: Helm
  647. app.kubernetes.io/component: admission-webhook
  648. spec:
  649. containers:
  650. - name: patch
  651. image: geray/kube-webhook-certgen:v1.0
  652. imagePullPolicy: IfNotPresent
  653. args:
  654. - patch
  655. - --webhook-name=ingress-nginx-admission
  656. - --namespace=$(POD_NAMESPACE)
  657. - --patch-mutating=false
  658. - --secret-name=ingress-nginx-admission
  659. - --patch-failure-policy=Fail
  660. env:
  661. - name: POD_NAMESPACE
  662. valueFrom:
  663. fieldRef:
  664. fieldPath: metadata.namespace
  665. restartPolicy: OnFailure
  666. serviceAccountName: ingress-nginx-admission
  667. nodeSelector:
  668. kubernetes.io/os: linux
  669. securityContext:
  670. runAsNonRoot: true
  671. runAsUser: 2000

1.2.1

ingress-nginx-1.2.1-deploy.yaml

https://github.com/kubernetes/ingress-nginx/blob/controller-v1.2.1/docs/deploy/index.md