☁️くもをもくもくまなぶ

クラウドコンピューティングサービスの学んだことを中心につらつらと書いています

JAWS-UG千葉支部オンライン#12 Amazon EKS Observability ハンズオン”

作成背景

もくもく会のアウトプットです。

当日のTwitter

右上のTwitterマークで当日イベント内で触れられていたキーワードをもとに検索したページをぶら下げています

その他 #jawsugchiba で他の方のTweetも閲覧できるので、覗いてみてください

教材

https://jawsug-chiba.connpass.com/event/230717/

本日は、アマゾン ウェブ サービス ジャパンのエンジニアも特別枠で参加頂いています🙌

🚨アマゾン ウェブ サービス ジャパンが正しい表記らしいです🚨

☝App Runnerと同じと覚えましょう

検証する構成

Workshop - documents

https://dcj71ciaiav4i.cloudfront.net/3AD39960-4385-11EC-9B45-B775B6BEFB9F/

構成
Image in a image block

EKSを取り扱う上での注意事項

Workshopには次の解説が書いてあります
Cloud9 では、AWS が管理する一時的なクレデンシャル (認証情報) を利用する機能がありますが、この機能は現在、EKS の IAM 認証と互換性がありません。そのため、本ワークショップではこの機能を無効にして手順を進めていきます。
Image in a image block
  • Cloud9上で一時的なクレデンシャルを削除します
$ rm -vf ${HOME}/.aws/credentials
$
$ aws sts get-caller-identity --query Arn | grep eksworkshop-admin -q && echo "IAM role valid" || echo "IAM role NOT valid"
IAM role valid
$
aws-auth ConfigMapを利用

私は個人で、AWS SSO + AWS Organizationsを利用しているのですが、
AdministratorAccessの権限を持っているロールで設定まで完了したものの、
EKSコンソールだと権限がないというエラーが表示されるので、こちらは後日確認してみます。

Image in a image block
==========================-
$ kubectl describe configmap -n kube-system aws-auth
Name:         aws-auth
Namespace:    kube-system
Labels:       <none>
Annotations:  <none>

Data
====
mapRoles:
----
- groups:
  - system:bootstrappers
  - system:nodes
  rolearn: arn:aws:iam::****:role/eksctl-eksworkshop-eksctl-nodegro-NodeInstanceRole-1I86XJGQ2L6K1
  username: system:node:{{EC2PrivateDNSName}}
- groups:
  - system:masters
  rolearn: arn:aws:iam::::****::role/aws-reserved/sso.amazonaws.com/ap-northeast-1/AWSReservedSSO_AdministratorAccess_66f5415ccdd212c3
  username: admin

mapUsers:
----
[]

Events:  <none>
==================

https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/troubleshooting_iam.html#security-iam-troubleshoot-cannot-view-nodes-or-workloads

実際に確認してみる

出来上がるサンプルアプリケーション
Image in a image block
AWS X-Ray - Service Map
Image in a image block
Amazon CloudWatch Container Insight
Image in a image block
Amazon CloudWatch Log Insight
Image in a image block

実際に追ってみた

調査の足がかり(トレース)
Image in a image block

Frontend

多少の遅延はあれど遅くはない

Product-Catalog

このブロックが一番時間が掛かっているのでこの処理から優先度を高く確認する

Product-Detail

全く遅くはない

問題箇所のあたり(メトリクス)

Amazon CloudWatch Container Insightを使って、
CPUやメモリを確認したところ、不自然に跳ね上がる様子もなし

Image in a image block
コンテナ内部(ログ)

ログを確認していったところ、よく開発でありがちな「とりあえずデバッグ用に入れておいたTODO残しておく」感じで分かりやすく記録されています

Image in a image block

一通り終わってから

  • Observabilityとして、どうアプローチを行うのかの練習をワークショップで訓練するといい
  • AWS re:Invent後に英語中心ではあるがワークショップが増える傾向あり
  • kubernetes(k8s)に慣れていない場合は、Pod/Nodeや各種YAMLの構成を今回の サンプルアプリケーションをもとにどのように作っているのかを見るといい

(個人的な)まとめ

今回実施したワークショップは、最近AWS公式に実施されていたイベントで公開されていたんですが、
業務都合で参加できず今回実施できてよかったです。

また、マイクロサービスのログを調査する経験も足りておらず、イベント中に気づけなかったものの、
実際にどのように追うのか学ぶことができてよかったです。