サブネット
- Public サブネットは下記のようにタグを設定すること
Key: kubernetes.io/cluster/<クラスタ名>
Value: owned
Key: kubernetes.io/role/elb
Value: 1
- Private サブネットは下記のように設定すること
Key: kubernetes.io/role/internal-elb
Value: 1
IngressのYamlファイル
概要
- 上記の手順を通して、
Helm
でaws-load-balancer-controller
を導入し、Ingressを作成すると、ALBが作成される
最初はserviceaccountが存在しないので、手順の中にある
--set serviceAccount.create=false
をtrue
に設定してた
- ALBの設定を
annotations
で設定する - annotationに関する説明
手順
Step1. Ingress.yamlファイルを作成すること
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
Step2. ingressを適応すること
kubectl apply -f ./ingress.yaml
Step3. AWS画面でALBが作成されることを確認
作成されてなかった場合、
aws-load-balancer-controller
Podのログを確認すること
Step4. Route53周りを対応する(ホスト、DNS、ACM、CNAME)など
Aレコード名を指定するときがあるが、
ingress.yaml
のhost
欄を入れる。この場合は(xxxxxxxxxxxxx.xxxxxxxxxxxx.xxxxxx)を入れる
Step5. Ingress設定を修正する
kubectl edit ingress eks-ingress -n eks
(修正前)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のホスト名を入れること
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: (service-name)
port:
number: 80
(修正後)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のセキュリティグループを指定すること
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!
Step6. ALBのリスナーとルール欄にPort443が開放されていることを確認する
Step7. レコードが登録するまで数分待って、Aレコードのxxxxxxxxxxxxx.xxxxxxxxxxxx.xxxxxx
でアクセスしてみる