(2019-04-22 追記) 下記のエラーが出るようになっていた。 tsconfig.json を修正。
../../../../node_modules/@types/graphql/subscription/subscribe.d.ts:36:13 - error TS2583: Cannot find name 'AsyncIterator'. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later.
36 }): Promise<AsyncIterator<ExecutionResult<TData>> | ExecutionResult<TData>>;
AWS CDK(Cloud Development Kit) で、 EKS(Elastic Container Service for Kubernetes) の Cluster を立ててみたけど、思いのほか苦労したので、これを見た誰かがより良い情報を発信してくれたら、自分が助かるなとの目論見で書く。
現在 AWS CDK は
このドキュメントはAWS CDKの開発者プレビューリリース用です。本バージョンでAWS CDKのこのバージョンを使用しないでください。その後のAWS CDKのリリースには、重大な変更が含まれる可能性があります。
引用: Reference — AWS Cloud Development Kit (Google 翻訳)
だそうです。下記でごちゃごちゃ言ってるかもしれないけど、この前提は一応頭にはあります。
ドキュメントよりは、AWS CDK のソースコード眺めてたことが多かったな。
EKS Cluster 用に書いた CDK のソースコード
README を見てもらえれば、クラスター作成まではいくはず。情報足りなければ指摘欲しいなと。
moofish32/cdk-eks-example を非常に参考にさせてもらっている。
上記ソースコードの注意点
README にも書いたけど
-
AWS CDK の
v0.24.1
で確認したもの。- 書き始めた時は、
v0.22.0
だった気がするけど、気がついたらv0.24.0
にアップデートされて、v0.24.1
になるまで、ドキュメント がバグってた。って、書いてたらv0.25.0
になってた。
- 書き始めた時は、
- Security Group や Policy はずぶずぶに緩い。
- ここは AWS の Quick Start とかに合わせたいけど、現状では断念。。
cfnXxxxxx
なやつ使えばできるのかも。
- ここは AWS の Quick Start とかに合わせたいけど、現状では断念。。
- Public Subnet のみの対応。
- Private Subnet もできると思うけど、現状は、Bastion とか NAT Gateway/Instance などの料金を節約したい状況のため、一旦ほっておいてる。
- インスタンスのタグも CDK で付けたかったけど、今は Userdata のスクリプトで対応。
- Userdata での対応が正解と思えず。。これも
cfnXxxxxx
使えばできるのかな?
- Userdata での対応が正解と思えず。。これも
- パラメータで変更できない固定値(ハードコーディング)がある。
- これ自体はたいした問題ではないけど。
- EBS の容量が指定できない。
- これも
cfnXxxxxx
なのか。見逃しているのか。
- これも
- 1 つのEKSに、Auto Scaling Group が複数作れるのかと思い込んでいるので、 CDK を 2 つに分けている。
- 試せばすぐに分かるんだけどね。
- 最近コーディングあまりしていない、過去に Cloudformation で苦しんだ TypeScript 初心者が書いている。
まとめ
素直に eksctl 使えと言われそうだ。
TypeScript は初体験だけど、良かった。
v0.25.0
で確認しなくては。。