Ingress の作成

Ingress の作成

Ingress オブジェクトを作成し、ALB を作成し、2048 game アプリケーションを外部公開します。 以下の2点にご注意ください - Fargate Node で作成したアプリケーションを外部公開する場合は、現時点で、ALB Ingress Controller のみサポートしています - ALB の Target Group の Target Type を IP に変更するため、アノテーションを追加しています

curl -s https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/${ALB_INGRESS_VERSION}/docs/examples/2048/2048-ingress.yaml \
    | yq w  - 'metadata.annotations."alb.ingress.kubernetes.io/target-type"' ip \
    | kubectl apply -f -

参考までに、以下のコマンドで ingress 用の yaml が確認できます

kubectl get ingress 2048-ingress -n 2048-game -o yaml 

参考Output:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{"alb.ingress.kubernetes.io/scheme":"internet-facing","alb.ingress.kubernetes.io/target-type":"ip","kubernetes.io/ingress.class":"alb"},"labels":{"app":"2048-ingress"},"name":"2048-ingress","namespace":"2048-game"},"spec":{"rules":[{"http":{"paths":[{"backend":{"serviceName":"service-2048","servicePort":80},"path":"/*"}]}}]}}
    kubernetes.io/ingress.class: alb
  creationTimestamp: "2020-10-06T13:30:53Z"
  generation: 1
  labels:
    app: 2048-ingress
  name: 2048-ingress
  namespace: 2048-game
  resourceVersion: "11812"
  selfLink: /apis/extensions/v1beta1/namespaces/2048-game/ingresses/2048-ingress
  uid: 26ed07c3-cac8-40dc-a462-760ecce2bceb
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: service-2048
          servicePort: 80
        path: /*
status:
  loadBalancer:
    ingress:
    - hostname: 3e100955-2048game-2048ingr-6fa0-2043572263.us-west-2.elb.amazonaws.com

コマンド実行後に、EC2 管理コンソールから、ALB が作成されていることが確認できます LoadBalancer Dashboard

そして Target Group => Target タブ で、Fargate Node(Pod) の IP アドレスと アプリケーション port が登録されていることが分かります。 LoadBalancer Targets

インスタンスモードの場合は、ALB と Worker Node(EC2) で動いている Pod はこのようにトラフィックがルーティングされます LoadBalancer Instance Mode

一方で、このハンズオンのように、ALB と Fargate Node で動いている Pod はこのようにトラフィックがルーティングされます LoadBalancer IP Mode

2048 game アプリケーションへのアクセス

以下のコマンドで、ALB の URL が表示されるため、それをブラウザに貼り付けて、アクセスします

export ALB_ADDRESS=$(kubectl get ingress -n 2048-game -o json | jq -r '.items[].status.loadBalancer.ingress[].hostname')

echo "http://${ALB_ADDRESS}"

このような URL が表示されます


http://3e100955-2048game-2048ingr-6fa0-1056911976.us-east-2.elb.amazonaws.com

Browser

以上で、AWS Fargate for Amazon EKS のハンズオンは終了です。 必要に応じて、リソースの削除を行います。