terraformでec2インスタンスを使用したecs作成
codebuild使いたい
→コンテナビルドしたい
→codedeployでデプロイしたい
→デプロイ先のecsクラスタ作るか
という流れで3週間分の週末を犠牲にしている
gotoしたかったなあ
色々調べた最安構成
以下の流れで運用できるコンテナは一つなので全く有用性はない
常時稼働でなければfargateのほうが遥かに有用
- t3.nanoを使用
- ALBは$18/monthなので絶対に使いたくない
- サービスディスカバリを見つける、プライベートなドメインならroute53の基本料金の$0.5/monthで済む
- サービスディスカバリならネットワークはawsvpc必須
- そうなると各コンテナにIPが振られることになる
- t3.nanoのeni制限は2、1つはインスタンス自身が使用
- 残り1
- サービスディスカバリを普及させたいのかeni制限が緩和されたが高額インスタンスのみ
- t3.nano + 30GB EBS(クラスタ構成要件下限) + route53 = $5.0 + $3.6 + $0.5 = $9.1
そもそもec2がecsクラスタに紐づかない
いろんなサイトからつぎはぎHCLを作成してそれっぽいものができる
vpc系を最初にやっておいてよかった、つぶしが効く
でapplyも問題なく終わるがecsクラスタにec2が紐づいてくれない
サービスがないとec2は必要ないから紐づかないの?とか独自の理論を考え出す
つぎはぎをいろいろいじってみるが進展せず
メモ
Error: error creating capacity provider: ClientException: ECS Service Linked Role does not exist. Please create a Service linked role for ECS and try again.
最初のうちはエラーが出るが、これはサービスロールがないと言っている
そのサービスをいじるにあたっての権限詰め合わせみたいなもの
初回のecsクラスタ作成が成功するタイミングで生成されるっぽい
コンソール上で空のecsクラスタを作ればいい
中で何が起こっているか見るか
2週間経過
プライベートなvpcなのでssmAgentを使ってみようと考える
agentはイメージに入っているのでIAMにそれ用ポリシーをアタッチするだけのはず
だが動かず
じゃあパブリックIPつけてsshログインしてやる
意外!それはパブリックIP!
パブリックIPをつけてsgでインバウンドガバガバにしたら普通にecsクラスタに紐づく
ssmAgentも使える、ブラウザからログインできる
ついでにsg間違えててインバウンドは相変わらず全部遮断なのに気づく
・・・グローバルIPがあればよかったのか?
とりあえず
そこそこに整理してlobotomyやりましょ
ここしばらくゲームしてなかった
残りはroute53、codedeploy(サービスディスカバリ、サービスとタスク定義)