目录

kubernetes流量-ingress-nginx部署

部署 ingress-nginx 作为网关对流量进行转发.

动机

自建的 k8s 集群需要部署一套 nginx ingress 来作为入口网关进行流量转发,但是每次都靠去网上查很费劲,而且都是很老的教程,所以记录一下。

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

官方文档:https://kubernetes.github.io/ingress-nginx/deploy/#quick-start

部署

安装过程很简单,一条命令搞定,需要自定义的话,可以下载下来自己编辑。

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.11.3/deploy/static/provider/cloud/deploy.yaml

配置你们的 ssl 证书。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
apiVersion: v1
data:
  tls.crt: >-
    LS0tLS1CRUdJTiBDRVJUSUZJQ0F...    
  tls.key: >-
    LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRV...    
kind: Secret
metadata:
  name: ssl-xxx.com.cn
  namespace: dev

配置 ingress 条目。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: your-gateway-ingress
  namespace: dev
spec:
  ingressClassName: nginx
  rules:
    - host: gateway-dev.xxx.com.cn
      http:
        paths:
          - backend:
              service:
                name: your-gateway-svc
                port:
                  number: 8080
            path: /
            pathType: ImplementationSpecific
  tls:
    - hosts:
        - gateway-dev.xxx.com.cn
      secretName: ssl-xxx.com.cn

到此就完成了。

结束

需要注意的一点是,自建集群没有用 MetalLB 的话,nginx ingress 的 svc 是起不来 lb 实例的,当然你是托管 k8s 集群那就另说了,我这边的解决办法用 4 层 nginx 转发来搞定的。