はじめに
今日はこれにきてます!
— nari@エンタメ系エンジニア (@fukubaka0825) March 20, 2019
JAWS-UG コンテナ支部 #14 https://t.co/YJxWO7r9Zc #jawsug_ct
以下のイベントとなります。
JAWS-UG コンテナ支部 #14 - connpass
スライドまとめと、自分が興味を引かれた部分を抜粋してます。
初めのLT2つの内容中心となります。
connpassで後日スライドがまとまって掲載されるようなので、そちら掲載されたら補填します
catabira.com における Amazon EKS 活用事例Kubernetes による継続的デリバリ編
登壇者:池内 孝啓@catabira(@iktakahiro)さん | Twitter
資料:catabira.com における Amazon EKS 活用事例Kubernetes による継続的デリバリ編 / eks-cd-usecase-at-catabira - Speaker Deck
コンテクスト紹介
ブロックチェーンシステムの監視、メトリクスのサービスをSaaSで提供
Golangを使用
概要
kubernetesは楽しい
CI/CDの考え方は変わらない
EKSはproduction使用できるフェーズです
技術スタック AWS構成
ノード編成が特殊
イーサリアムクライアントの方がツラミがたくさん
なので他のノードとは切り分けて運用している
-
ブロックチェーン ノード運用問題
Parityというイーサリアムクライアントを使っている
同期に時間がかかる
ディスク容量を食う
稀にデータが壊れる
EC2とEBSでRDSっぽくなるよう運用しないといけない
辛い スケールもよしなにしない -
PersistentVolume
AZまたげないので(EBS) 耐障害性弱い -
Stateful SetsをLBの下に
スケールするが運用の負が解消するわけではない -
Amazon Managed BlockChain
イーサリアム対応待機
ノードの管理から解放されるかも
k8sと継続的デリバリ
継続的出荷 改善イテレーション高速で回す
今までとこの概念は同じ
マニフェストファイルをどう管理運用していくかがk8s特有
CircleCIによるマニフェスト適用更新の課題
- 環境によってconfigMap変えたい
- deploymentにも反映させたい
それ、Kustomizeでできる!!
Kustomizeとは
ymlの部分更新や結合をよしなにやってくれるコマンドツール
レプリカの数を環境で変えるだけとかなら生成できる
EKS k8sのtips
- eksctl
EKSやノードグループの構築をよしなにやってくれるコマンドラインツール
cloudformationは辛いぞ こちら導入時にとりあえずおすすめ - New Relic
モニタリングに対応したマニフェストあり
コンテナが期待数上がってるかの監視もできる - CloudAWatch Logs
コンテナログを保全する
取り急ぎまずぶち込む ログ監視はコンテナ運用で必須
FluentedをDaemonSetとして駆動させるのも楽 - Virginia Region
みんなgithubとかのソースがどのリージョンにあるかは気にしないのに
どうしてそんなに気にするのか
レイテンシー問題がシビアでないならTokyoリージョンにないサービス試していこう - WorkerはPrivate Subnetに配置しSSMを使う
ECSとFargateを本番投入して得た悲喜交交
登壇者:あー。(@masa2129)さん | Twitter
資料: ECS Fargateを本番投入して得た悲喜交交 - Speaker Deck
頭をインミュータブルにするためにスキンヘッドにした登壇者、、、笑#jawsug_ct
— nari@エンタメ系エンジニア (@fukubaka0825) March 20, 2019
掴みが最高です
コンテクスト紹介
マイクロアーキでサーバサイドkotolinでやってる
###Fargate ECSについて
+サーバレス EC2の管理しなくていい
-起動が遅い sshで中に入れないので調査しづらい
ELBヘルスチェック kills EC2 task
- 現象
ある日ECSコンテナ突然立ち上がらなくなった - 原因
タスクに対して複数コンテナを当てたら起動遅くなって、ヘルスチェックに引っかかったから殺された - 助け舟
ヘルスチェックの猶予期間 - Datadogのすすめ
ヘルスチェック失敗イベントを取得、アラート設定をするのがとても楽
Fargateはssh接続できない - 前提
そもそもコンテナにsshすべきじゃない
ログとかメトリクスの収集は周辺サービスを使うべき
メモリリークの原因調査で苦しむ
Remote JMXの調査は例外で詰む
ローカルで再現しようとするが無理、EC2で再現しない つみそう、、、
- 助け舟
救ってくれたのはSpring Boot Actuator
heapdump取れる - 原因
Datadogとspring Webfluxが共謀してお漏らししていた - 邪道
sshdをコンテナにインストールする
まとめ
-
マイクロサービス サーバレス コンテナ運用
VMや物理サーバー運用してたやり方ツールが同じように価値を発揮できるとは限らない -
いろんなツールに助けてもらいながらシステムを作る
もはやログ収集メトリクス監視ツールの使用は必須 -
いろいろ言ったけどFargate好きです
以下の内容に歓喜
Amazon ECS でサイドカーを持つタスク定義をご利用のみなさまお待たせしました!タスク内のコンテナ間に依存関係を定義し、各コンテナの起動順や停止順をコントロールできるようになりました!
— ポジティブな Tori (@toricls) March 8, 2019
/ "Amazon ECS Introduces Enhanced Container Dependency Management" https://t.co/DYq5UmFkq6
続く)
しかし今の対象EC2だけ、、
今回追加されたパラメーター dependsOn, startTimeout, stopTimeout を利用するためには ecs-agent v1.26.0 以降が必要で、現時点で対応している起動モードは "EC2" です。
— ポジティブな Tori (@toricls) March 8, 2019
ドキュメント再掲👇
Container Dependencyhttps://t.co/nZCl1LHqSy
Container Definition Timeouthttps://t.co/dyXIytD4vO
kotlinなどJVM系言語とコンテナ運用相性悪くて、結構辛いらしい
そもそもJVMとDockerコンテナは相性が悪いようです。JVMはDockerコンテナ間のリソースの分離に使っているcgroupを無視する、という記事が見つかりました。https://t.co/ekZT7f3Wwl
— billthelizard (@billthelizardx) March 20, 2019
(技術選定としてjavaの知見が使えそうだったから選んだだけとのこと)
frontend for microservices with containers
登壇者: @inductor
資料:frontend for microservices with containers - Speaker Deck
Engineering life with containers on AWS
登壇者:@tnir
資料:Engineering life with containers on AWS - Speaker Deck
ETL処理をFargateを使って行う
登壇者:@HibinoHisashi
資料:未掲載
要約
EC2での運用はつらみ
S3-input-pluginとfargateの相性良くない
次回はEKSで
##体当たりecs-cli w/ fargate!
登壇者:さわら(Hiroaki Ogasawara) さん
資料:体当たりecs-cli w/ fargate! - Google スライド
##Fargateは何が嬉しいのか
登壇者:@shnagai さん
資料:Fargateは何がうれしいのか/ fargate-whats-nice - Speaker Deck
要約
Fargateは運用フェイズで安定する
EC2のRIより高い リザーブドな購入待ち望んでいます
データプレーンとして認識した方が良い
##Fargate+ECRでelastalertを構築
登壇者:やったん さん
資料:Fargate + ECR で elastalertを構築 - Speaker Deck
要約
ElasticSearchの監視にelastalert使ってる
dockerimage RESTAPIも用意されてる
SlackやSNSでの通知が用意
ただ、ルール設定が結構難しい
Fargate Blue/Green Deplpy
登壇者:@koarakko
資料: 掲載なし
AWS CodeDeploy による AWS Fargate と Amazon ECS でのBlue/Greenデプロイメントの実装 | Amazon Web Services ブログ
要約
旧環境の退役をマネージドできる
戻すのが簡単なので結構おすすめ