0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EKS ALB Ingressのための設定(忘備録)

Last updated at Posted at 2023-08-10

サブネット

  • 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ファイル

概要

  • 上記の手順を通して、Helmaws-load-balancer-controllerを導入し、Ingressを作成すると、ALBが作成される

最初はserviceaccountが存在しないので、手順の中にある--set serviceAccount.create=falsetrueに設定してた

  • 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-controllerPodのログを確認すること

Step4. Route53周りを対応する(ホスト、DNS、ACM、CNAME)など

Aレコード名を指定するときがあるが、ingress.yamlhost欄を入れる。この場合は(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でアクセスしてみる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?