- ingress 官方 yaml 文件:deploy.yaml
- 基于官方 yaml 文件做了一些修改
- 官方的 svc 是
ClusterIP
和LoadBalancer
,我这边把LoadBalancer
改成NodePort
- 官方的 yaml 没有给 deployment 配置副本数,我这边改成双副本了
- 增加了亲和性和反亲和,把 controller 绑定到固定的两个节点,方便前面加反代
- 官方的镜像是
registry.k8s.io
仓库,国内咱们也不好拉,这边改用k8s.m.daocloud.io
国内的 daocloud 的仓库- 开启
admission-webhook
需要自己生成 tls 证书,官方的模板有名字定义了,sercret
的名字是ingress-nginx-admission
- 开启了
admission-webhook
功能,这个功能类似于nginx -s reload
之前去执行nginx -t
检查配置文件是否正确,如果admission-webhook
发现配置不正确就不会更新 ingress 的配置,就不会因为错误的配置导致 ingress reload 失败,全部崩了,影响到业务的访问
证书创建
证书这块,我用的是
cert-manager
创建的,可以看我之前的博客:cert-manager - kubernetes 集群中 TLS 证书管理工具
部署 ingress-controller
节点打标签
k label node 192.168.22.112 ingress=true
k label node 192.168.22.113 ingress=true
通过官方 helm 做了一些修改
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
helm.sh/chart: ingress-nginx-4.11.1
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/version: "1.11.1"
app.kubernetes.io/part-of: ingress-nginx
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: controller
name: ingress-nginx
namespace: ingress-nginx
automountServiceAccountToken: true
---
apiVersion: v1
kind: ConfigMap
metadata:
labels:
helm.sh/chart: ingress-nginx-4.11.1
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/version: "1.11.1"
app.kubernetes.io/part-of: ingress-nginx
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: controller
name: ingress-nginx-controller
namespace: ingress-nginx
data:
allow-snippet-annotations: "true"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
helm.sh/chart: ingress-nginx-4.11.1
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/version: "1.11.1"
app.kubernetes.io/part-of: ingress-nginx
app.kubernetes.io/managed-by: Helm
name: ingress-nginx
rules:
- apiGroups:
- ""
resources:
- configmaps
- endpoints
- nodes
- pods
- secrets
- namespaces
verbs:
- list
- watch
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- list
- watch
- apiGroups:
- ""
resources:
- nodes
verbs:
- get
- apiGroups:
- ""
resources:
- services
verbs:
- get
- list
- watch
- apiGroups:
- networking.k8s.io
resources:
- ingresses
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- events
verbs:
- create
- patch
- apiGroups:
- networking.k8s.io
resources:
- ingresses/status
verbs:
- update
- apiGroups:
- networking.k8s.io
resources:
- ingressclasses
verbs:
- get
- list
- watch
- apiGroups:
- discovery.k8s.io
resources:
- endpointslices
verbs:
- list
- watch
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
helm.sh/chart: ingress-nginx-4.11.1
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/version: "1.11.1"
app.kubernetes.io/part-of: ingress-nginx
app.kubernetes.io/managed-by: Helm
name: ingress-nginx
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: ingress-nginx
subjects:
- kind: ServiceAccount
name: ingress-nginx
namespace: ingress-nginx
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
labels:
helm.sh/chart: ingress-nginx-4.11.1
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/version: "1.11.1"
app.kubernetes.io/part-of: ingress-nginx
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: controller
name: ingress-nginx
namespace: ingress-nginx
rules:
- apiGroups:
- ""
resources:
- namespaces
verbs:
- get
- apiGroups:
- ""
resources:
- configmaps
- pods
- secrets
- endpoints
verbs:
-