EKS ALB Ingress的配置設定(備忘錄)
子网
- Public サブネットは下記のようにタグを設定すること
Key: kubernetes.io/cluster/<クラスタ名>
Value: owned
Key: kubernetes.io/role/elb
Value: 1
- Private サブネットは下記のように設定すること
Key: kubernetes.io/role/elb
Value: 1
Ingress的Yaml文件
简要概况
- 上記の手順を通して、Helmでaws-load-balancer-controllerを導入し、Ingressを作成すると、ALBが作成される
最开始没有serviceaccount,所以将步骤中的–set serviceAccount.create=false设置为true。
-
- ALBの設定をannotationsで設定する
- annotationに関する説明
程序
步骤1. 创建 Ingress.yaml 文件
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: eks-ingress
namespace: eks
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: instance
alb.ingress.kubernetes.io/security-groups: sg-00000000000000000 # Clusterのセキュリティグループを指定すること
spec:
ingressClassName: alb
rules:
- host: xxxxxxxxxxxxx.xxxxxxxxxxxx.xxxxxx # Route53のAレコード名を入れること
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: (service-name)
port:
number: 80
步骤2. 应用 ingress
kubectl apply -f ./ingress.yaml
第三步:在AWS界面上确认ALB已经被创建成功。
如果没有被创建,需要查看 aws-load-balancer-controllerPod 的日志。
第四步:适应Route53周边(主机、DNS、ACM、CNAME)等。
有时需要指定A记录名称,将其放入ingress.yaml文件的host字段中。在这种情况下,将其设为(xxxxxxxxxxxxx.xxxxxxxxxxxx.xxxxxx)。
第五步。 修改Ingress設置。
kubectl edit ingress eks-ingress -n eks
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: eks-ingress
namespace: eks
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: instance
alb.ingress.kubernetes.io/security-groups: sg-00000000000000000 # Clusterのセキュリティグループを指定すること
spec:
ingressClassName: alb
rules:
- host: xxxxxxxxxxxxx.xxxxxxxxxxxx.xxxxxx # Route53のホスト名を入れること
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: (service-name)
port:
number: 80
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: eks-ingress
namespace: eks
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: instance
## 修正箇所
alb.ingress.kubernetes.io/security-groups: sg-00000000000000000 # Clusterのセキュリティグループを指定すること
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
alb.ingress.kubernetes.io/actions.redirect-to-https: |
{"Type":"redirect","RedirectConfig":{"Port":"443","Protocol":"HTTPS","StatusCode":"HTTP_302"}}
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:ap-northeast-1:000000000000:certificate/00000000-0000-0000-0000-000000000000 # ACMの証明書のARNを入れること
## 修正箇所
spec:
ingressClassName: alb
rules:
- host: xxxxxxxxxxxxx.xxxxxxxxxxxx.xxxxxx # Route53のホスト名を入れること
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: (service-name)
port:
number: 80
完成修正
:wq!
步骤六:确认ALB的监听和规则栏已打开端口443。
步骤7:等待几分钟,直到记录被注册后,尝试访问A记录的xxxxxxxxxxxxx.xxxxxxxxxxxx.xxxxxx。