Tanzu Application Platform から Amazon ECS へデプロイをする

コンテナといったらKubernetes 、というわけではなく、Amazon ECS を多く利用している人もいると思います。 この記事では、Tanzu Application Platform (以後TAP)から Amazon ECS へデプロイする方法を紹介してみます。

なんでこんな記事を書いたか

TAPという製品を使うことで開発効率を高める期待があるものの、Kubernetesを前提としているため、Kubernetesの運用がなれていないと逆にハードに感じるケースが多くあるかと思います。 また、ユーザーからのフィードバックからもAmazon ECSを利用しているパターンが増えているように感じています。

TAPのSupplyChainは多くのカスタマイズができます。そこで、以下のような図からTAPをあくまでビルドでのみ利用して、Amazon ECSへのデプロイができないか思った次第です。

img_1.png

なお、このアーキテクチャ図を完成させる上で、TAP側で二つ重要なアップデートがございました。

これを今回検証目的でつくってみました。

注意

以後の手順は、あくまでコンセプトを試す目的で作ったものです。決して、プロダクションとして準備ができているものではないので、どのベンダーからも一切の保証がないことを注意してください。

準備

以下を準備してください。

  • Amazon EKS
  • Tanzu Application Platform 1.7.2 (でテスト済み)
  • Amazon ECR, EC2, ELB2 に更新可能なIAM Role (*あまりに複雑になってしまったので別記事で詳細を取り上げる予定)

デモコンテンツのインストール

以下のようなやり方で用意しました。まずパッケージレポジトリーを追加してください。

1tanzu package repository add ghcr-mhoshi \
2  --url ghcr.io/mhoshi-vm/tap-carvel:latest  -n tap-install

その後、以下のような ecs-supply-chain.yaml を用意します。

 1aws:
 2  accountId: <account>
 3  alb:
 4    subnets:
 5      - <alb用subnet>
 6  cluster: <ecsクラスタ名>
 7  ecs:
 8    subnets:
 9      - <ecsサブネット>
10  region: <region>
11  vpcId: <vpc>
12backstage:
13  workload:
14    deploy: false

以下のコマンドで適用します。

1tanzu package install tap-ecs -p tap-ecs-supplychain.tanzu.japan.com -v 1.7.1 --values-file ecs-supply-chain.yaml -n tap-install

tap-values に以下を追記します。(ootb_supply_chain_testing_scanning はTAPのインストール方法によって変わります)

 1ootb_supply_chain_testing_scanning:
 2  supported_workloads:
 3    - cluster_config_template_name: config-template
 4      type: web
 5    - cluster_config_template_name: server-template
 6      type: server
 7    - cluster_config_template_name: worker-template
 8      type: worker
 9    - cluster_config_template_name: ecs-template
10      type: ecs

インストール後、以下のようにecs-template が有効になっていることを確認します。

1kubectl get clusterconfigtemplate ecs-template
2Warning: Use tokens from the TokenRequest API or manually created secret-based tokens instead of auto-generated secret-based tokens.
3NAME           AGE
4ecs-template   5m8s

サンプルデプロイ

 1tanzu apps workload apply \
 2  -n demo \
 3   --app ecs-test \
 4  --type ecs \
 5  --git-repo https://github.com/mhoshi-vm/volume-mount-convention \
 6  --git-branch main \
 7  --param cluster="hoge" \
 8  --build-env BP_JVM_VERSION=17 \
 9  --label apps.tanzu.vmware.com/has-tests=true \
10> test

デプロイ後の状態

img_3.png

img_4.png

今別件で開発中のBackstageのUIだと以下のように映ります。

https://github.com/mhoshi-vm/backstage-crossplane-aws

img_5.png