(deployment篇)使用helm3在gke中安装ingress-controller

背景

上一篇文章已经通过daemonset的方式安装部署了ingress-controller,这篇文章我们主要通过deployment方式来部署,其实基本上差不多,就一些小点需要修改下罢了。
如果你没有看过上一篇文章,请先看上一篇的内容。

步骤

  • 创建gke ingress 节点池
  • 下载最新的helm charts
  • 修改配置文件
  • 安装验证
  • 验证流量

创建节点池

这里就直接通过控制台创建一个ingress的节点池就好了,或者你也可以不用创建,也可以和业务混合调度,不过建议还是分开,毕竟代理更重要点。
png1

下载charts

1
2
$ helm repo add nginx-stable https://helm.nginx.com/stable
$ helm repo update
1
2
$ helm pull nginx-stable/nginx-ingress
$ tar xvf nginx-ingress-0.7.0.tgz

修改配置文件

既然我们选择了deployment+loadbalancer的方式来部署,那么我们主要修改以下内容:

1
2
3
4
5
6
7
8
$ vim values.yaml

1. nodeSelector: (如果你有单独的节点池请修改,没有就算了)
nodetype: ingress
2. 如果你有自定义镜像,也可以把image.repository和image.tag修改掉,注意修改下imagePullSecrets
3. 如果你有日志落盘的需求,那么可以设置volumeMounts来挂载宿主机目录到容器
4. 打开健康检查healthStatus=true,healthStatusURL="/devops/status",另外自定义健康检查路径
5. 修改ingressClass为自定义组:mt-ingress-eve-release(后面会说有啥用)

安装验证

1
2
3
4
5
6
7
8
9
$ helm install nginx-ingress -n ingress-controller .
NAME: nginx-ingress
LAST DEPLOYED: Wed Nov 11 16:26:25 2020
NAMESPACE: ingress-controller
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The NGINX Ingress Controller has been installed.
1
2
3
4
5
6
$ kubectl get deployment -n ingress-controller
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
nginx-ingress-nginx-ingress 1 1 1 1 1 nodetype=ingress 44m
$ kubectl get pods -n ingress-controller
NAME READY STATUS RESTARTS AGE
nginx-ingress-nginx-ingress-xxx8z 1/1 Running 0 40m

由于是通过deployment+svc的模式创建的,他会默认创建一个loadbalancer类型的svc,接管你现在的ingress-controller的pod,然后端口转发,80到80,443到443

验证流量

拿到loadbalancer类型svc的公网ip之后,你就可以直接创建ingress资源来验证,然后绑定host测试即可。

(注意:secret要在这个ns下创建好)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/enable-cors: "true"
kubernetes.io/ingress.class: mt-eve-ingress-release
name: ingress-xx-com
namespace: monitoring
spec:
rules:
- host: test.xx.com
http:
paths:
- backend:
serviceName: mt-prometheus-operator-prometheus
servicePort: 9090
tls:
- hosts:
- test.xx.com
secretName: x-xx-com-20201112

还是额外讲一句

由于gke的机器是不允许的登录的,所以通过这种方式创建的ingress-controller,你是没有办法日志落盘的,所以搞不定。