AWS EKS使用NLB安装Nginx Ingress Controller, 部署ACM免费使用SSL

参考视频: https://youtu.be/gvKi7wZHbLU?si=H3C11xlhe4UoCdpF&t=1385
(直接跳到Nginx controller使用ACM的教程)

【普通Nginx Controller】

文档:https://kubernetes.github.io/ingress-nginx/deploy/#network-load-balancer-nlb

执行以下这个命令即可

【在Nginx controller 使用ACM】

  1. 创建ACM, 由于在Nginx Controller 当中只能添加一个ACM的ARN地址,所以如果你有多个domain的话,如下图,必须在创建的时候添加多个domain,然后使用cname进行验证

2. 根据文档 执行以下的步骤就能创建完成了
参考文档: https://kubernetes.github.io/ingress-nginx/deploy/#tls-termination-in-aws-load-balancer-nlb

【IPv6部署方法】

参考AWS Load Balancer Annotation文档:https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.7/guide/service/annotations/#load-balancer-attributes

1. CIDR 改成IPv6的版本

2. ipFamilies改成IPv6 和添加dualstack语句

service.beta.kubernetes.io/aws-load-balancer-ip-address-type: 'dualstack'

3. 根据annotation文档写着,cross zone的写法将会淘汰,所以我们改成以下写法,NLB使用CrossZone是需要为跨AZ的流量付费的详情参考这里

service.beta.kubernetes.io/aws-load-balancer-attributes: load_balancing.cross_zone.enabled=true


【部署Phpmyadmin】
以下的yaml文件是创建phpmymind, 无需在ingress做任何配置,就能直接使用https了
注意:旧版需要在ingress annotation指定使用NGINX,但是新版本使用了ingressClassName
参考文档:https://stackoverflow.com/questions/73915526/kubernetes-ingress-kubernetes-io-ingress-class-vs-ingressclassname

apiVersion: v1
kind: Namespace
metadata:
    name: phpmyadmin2
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: phpmyadmin2
  name: phpmyadmin-ingress
  annotations:
      nginx.ingress.kubernetes.io/proxy-body-size: '0'
      nginx.ingress.kubernetes.io/proxy-read-timeout: '600'
      nginx.ingress.kubernetes.io/proxy-send-timeout: '600'
      nginx.ingress.kubernetes.io/rewrite-target: /$2
      nginx.ingress.kubernetes.io/ssl-redirect: 'true'
spec:
  ingressClassName: nginx
  rules:
    - host: rds.pangzai.win
      http:
        paths:
          - backend:
              service:
                name: phpmyadmin-service
                port:
                  number: 80
            path: /database(/|$)(.*)
            pathType: ImplementationSpecific
---
apiVersion: v1
kind: Service
metadata:
  namespace: phpmyadmin2
  name: phpmyadmin-service
spec:
  selector:
    app: phpmyadmin_app
  ports:
    - name: "phpmyadmin80"
      protocol: TCP
      port: 80
      targetPort: 80
  clusterIP: None
---
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: phpmyadmin2
  name: phpmyadmin-deployment
  labels:
    app: phpmyadmin
spec:
  replicas: 1
  selector:
    matchLabels:
      app: phpmyadmin_app
  template:
    metadata:
      labels:
        app: phpmyadmin_app
    spec:
      containers:
        - name: phpmyadmin
          image: phpmyadmin:latest
          imagePullPolicy: Always
          ports:
            - containerPort: 80
          env:
            - name: PMA_HOST
              value: database-1.c10866eoyd4v.ap-southeast-1.rds.amazonaws.com
            - name: PMA_PORT
              value: "3306"
            - name: UPLOAD_LIMIT
              value: 500M
            - name: PMA_ABSOLUTE_URI
              value: https://rds.pangzai.win/database/

Loading

Facebook评论