AWS
Docker
kubernetes
JAWS-UG
コンテナ

JAWS-UG コンテナ支部 #14  スライドと概要まとめ


はじめに

以下のイベントとなります。

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構成

ノード編成が特殊

イーサリアムクライアントの方がツラミがたくさん

なので他のノードとは切り分けて運用している

image.png


  • ブロックチェーン ノード運用問題

    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


掴みが最高です


コンテクスト紹介

マイクロアーキでサーバサイド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好きです


以下の内容に歓喜


しかし今の対象EC2だけ、、


kotlinなどJVM系言語とコンテナ運用相性悪くて、結構辛いらしい


(技術選定として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 ブログ


要約

旧環境の退役をマネージドできる

戻すのが簡単なので結構おすすめ