🦔

JAWS-UG 名古屋 Amazon EKS勉強会に参加して

2024/02/29に公開

はじめに

@mujyun_furu こと古林 信吾(ふるばやし しんご)です。
今回は、2024年2月27日に開催された「JAWS-UG 名古屋 Amazon EKS勉強会」に参加してきましたので、その内容まとめになります。

https://jawsug-nagoya.doorkeeper.jp/events/168727

開始の挨拶

運営の世良さんからの開始の挨拶と、
会場提供いただいたコラボベースさんからの会場のご案内をいただきました。

EKS ハンズオン(前半)

挨拶終わっていきなりのハンズオン開始でした!
今回、EKSの構築に時間がかかるので、まずはEKS構築開始するところまで進めてからLTがあるとのことでした。

今回のハンズオン手順
https://github.com/y-sera/jaws-ug-nagoya-202402-handson

■注意点

  • IAMユーザ: eks-handson-userの作成とアクセスキーの有効化が必要 ※ハンズオン終了後削除必須
  • 東京リージョンでの実施が必要
    • 最初に大阪リージョンでCloudShellを動かされてしまったためにうまく動かない
  • インスタンスプロファイル周りで過去のゴミ(AWSCloud9SSMAccessRoleとAWSCloud9SSMInstanceProfile)が残っているとCloud9のEC2と通信できず長時間待った後に、CloudFormationが失敗する
    aws iam delete-role --role-name AWSCloud9SSMAccessRole
    aws iam delete-instance-profile --instance-profile-name AWSCloud9SSMInstanceProfile
    

EKS 入門

EKSの構築開始まである程度の方が進まれたところで、世良さんのLT「EKS入門」が始まりました。

雑感

  • 業務で使っているのではなく、個人的にKubernetesの勉強して使われているのカッコイイ

  • しかも自宅にKubernetesクラスタを構築されている!

  • k8sはちっちゃいクラウドみたいなものと捉えていいとのこと

  • RDSなどのAWSの中の情報を取ってきたいときなどに、AWSの認証認可を通らないといけない。
    Kubernetes自体にはAWSのIAMは直接使えないので、EKSではIAMを使えるようにして対応付ける。

  • 嬉しいところ

    • Kubernetesのリソースを抽象化できる、コードでインフラを扱うのが簡単
    • 同じような形でyamlで管理できる
    • 他のクラウドへの移行が楽
    • 1個のクラスタの中で色々できる
  • 学習コストが高い

    • OSSのエコシステムのところも勉強していかないといけない
    • 数ヶ月に一回アップデート対応がある
    • 手動運用すると逆にしんどい
  • 乗り越えなければならない壁

    • マニフェスト管理をちゃんとしましょう
    • 自動化をちゃんとしましょう

うまくまとめられていて、非常にわかりやすかったです。

EKS ハンズオン(中盤)

EKSの構築完了後、GitOpsの構築に進みました。
はまりやすいポイントとして、./install.sh の処理が完了した際に

DEMO APP => http://

とDEMP APPのURLが空になる場合がありました。

対処方法:install.sh と同じディレクトリ上で、少し時間を置いてからパラメータ取得し直す。

./get-output-param.sh

ハンズオン概要説明

EKSハンズオンを継続している中で、世良さんから今回のハンズオンの概要説明も実施いただきました。
詳細は資料を確認してください。
https://speakerdeck.com/y_sera15/eksmian-qiang-hui
私はハンズオンのサポートに回っていて詳しく聞けませんでした、、、

EKS ハンズオン(後半) 後片付け

ハンズオンを完走された方はごくわずかでしたが、タイムアップで後片付けに入りました。

ここでも注意事項として、./uninstall.sh の途中で CloudFormation のスタック削除処理の中のセキュリティグループ削除が上手くいかずに失敗してしまう方が複数居られました。
この場合、EKSが残ってしまうので、個別で削除が必要になります。
その場合世良さんが対処方法をまとめられておりますので、以下対応してください。

./uninstall.sh が失敗した場合の対処方法

uninstall.shスクリプトの実行に失敗した場合, 以下のリソースを削除してください.
CloudFormationから削除するリソース
CloudFormationスタック(サービスアカウント用)

eksctl-eks-handson-cluster-addon-iamserviceaccount-apps-build-pipeline-sa
eksctl-eks-handson-cluster-addon-iamserviceaccount-support-chartmuseum-sa
eksctl-eks-handson-cluster-addon-iamserviceaccount-kube-system-aws-load-balancer-controller
eksctl-eks-handson-cluster-addon-iamserviceaccount-kube-system-ebs-csi-controller-sa

CloudFormationスタック(GitOps用S3等)

TektonDemoBuckets

CloudFormationスタック(GitOps用セキュリティグループ等)

TektonDemoInfra

CloudFormationスタック(EKSクラスター用)

eksctl-eks-handson-cluster-nodegroup-worker-ng-1
eksctl-eks-handson-cluster-cluster

CloudFormationスタック(cloud9)

aws-cloud9-eks-handson-xxxxxxxx
手動削除するリソース
IAMユーザ

eks-handson-user

CloudWatch ロググループ

/aws/lambda/TektonPipelineDemoWebhook

ALB/ELB(残っていれば)

k8s-argocd-argocdse-xxxx
k8s-apps-xxxxx
k8s-webhook-xxxx
k8s-chartmuseum-xxxxx
k8s-dashboard-xxxxx

CloudFormationスタックの削除に失敗する場合
TektonDemoInfra

スタック > TektonDemoInfra > リソース > ステータスがDELETE_FAILDとなっているリソースを探す
セキュリティグループの場合

削除失敗したセキュリティグループのリンクをクリックし、関係しているセキュリティグループのインバウンドルールを削除する.
再度CloudFormationのスタックの削除を実行する

ECRリポジトリの場合

削除に失敗したECR内に存在しているイメージを削除する
再度CloudFormationのスタックの削除を実行する

TektonDemoBuckets

削除に失敗したS3バケットに存在するオブジェクトを削除する
再度CloudFormationのスタックの削除を実行する

リソース削除が完了したかどうかは、以下のスクリプトで確認できます。
https://github.com/y-sera/jaws-ug-nagoya-202402-handson/blob/main/check_left_resource.sh

使い方

  1. 東京リージョンにて, CloudShellを開く.
  2. 以下のコマンドを実行する

ls

3-1. jaws-ug-nagoya-202402-handsonリポジトリが既に存在する場合: 以下のコマンドを実行

git clone https://github.com/y-sera/jaws-ug-nagoya-202402-handson.git
cd jaws-ug-nagoya-202402-handson/
./check_left_resource.sh

3-2. jaws-ug-nagoya-202402-handsonリポジトリが既に存在する場合: 以下のコマンドを実行

cd jaws-ug-nagoya-202402-handson/
git pull origin main
./check_left_resource.sh

[INFO]の行の下に、今回のハンズオンで作成したリソースの名前が表示されます。
消し残しがないかどうかの確認にご利用ください。

AWS川路さんのLT

後片付けでもEKS削除に時間がかかるので、そこでAWS川路さんからLTしていただきました。
「AWSコンテナサービス概要 / Amazon EKS成分多めに紹介します」
軽快な話口で楽しくAWSのコンテナサービスについて説明いただきました。
ECSの話しからECS Anywhereに行き、EKSの話しがあって、最後にエンジニアの心をくすぐらないコンテナサービスとしてApp Runnerが来たのには笑ってしまいました。

おわりに

なかなかハードルが高いと感じやすいEKSを触ってみながら、色々説明をしていただけるという非常に贅沢な会でした。

ハンズオンは上手くいくのにこしたことはないですが、失敗するのも楽しいです。
脳汁どばどば出しながら対処しようとすることでより深く身に付きます。

失敗を恐れず、ハンズオン試してみてください。

Discussion