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 が作成されていることが確認できます

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

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

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

以下のコマンドで、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 が表示されます

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