部署参考: https://mp.weixin.qq.com/s/XoUaW-vBtQFxwNM3UdD8QA
    灰度发布参考:https://www.bilibili.com/video/BV1ki4y1Z7Ax/?spm_id_from=333.788.recommend_more_video.0

    测试:

    1. apiVersion: apps/v1
    2. kind: Deployment
    3. metadata:
    4. name: my-nginx
    5. spec:
    6. selector:
    7. matchLabels:
    8. app: my-nginx
    9. template:
    10. metadata:
    11. labels:
    12. app: my-nginx
    13. spec:
    14. containers:
    15. - name: my-nginx
    16. image: nginx
    17. ports:
    18. - containerPort: 80
    19. ---
    20. apiVersion: v1
    21. kind: Service
    22. metadata:
    23. name: my-nginx
    24. labels:
    25. app: my-nginx
    26. spec:
    27. ports:
    28. - port: 80
    29. protocol: TCP
    30. name: http
    31. selector:
    32. app: my-nginx

    ingress不带tls:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-nginx
      namespace: default
    spec:
      ingressClassName: nginx  # 使用 nginx 的 IngressClass(关联的 ingress-nginx 控制器)
      rules:
      - host: www.lanpanpan123.com  # 将域名映射到 my-nginx 服务
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:  # 将所有请求发送到 my-nginx 服务的 80 端口
                name: my-nginx
                port:
                  number: 80
    

    制作证书脚本

    #!/bin/bash
    
    domain=www.lanpanpan123.com
    
    openssl genrsa -out tls.key 2048
    openssl req -new -x509 -key tls.key -out tls.crt -subj /C=CN/ST=Beijing/L=Beijing/O=DevOps/CN=${domain}
    
    kubectl create secret tls my-ingress-secret --cert=tls.crt --key=tls.key
    

    使用上一步生成的secret创建tls的ingress

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-nginx-tls
      namespace: default
    spec:
      ingressClassName: nginx  # 使用 nginx 的 IngressClass(关联的 ingress-nginx 控制器)
      tls:
      - hosts:
        - www.lanpanpan123.com
        secretName: my-ingress-secret
      rules:
      - host: www.lanpanpan123.com  # 将域名映射到 my-nginx 服务
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:  # 将所有请求发送到 my-nginx 服务的 80 端口
                name: my-nginx
                port:
                  number: 80
    

    使用上一步脚本生成的tls.crt访问

    image.png