Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

JAWS-UG 横浜支部 #76 AWS re:Invent 2024 宇宙一早い Recap...

JAWS-UG 横浜支部 #76 AWS re:Invent 2024 宇宙一早い Recap LT3 Amazon EKS Auto Modeと遊び(パーティ)の話

RyotaTsujio(tjotjo)

December 09, 2024
Tweet

Other Decks in Technology

Transcript

  1. ©Mitsubishi Electric Corporation 【社外秘】 2024.12.9 LT3 Amazon EKS Auto Modeと

    遊び(パーティ)の話 三菱電機 DXイノベーションセンター プラットフォーム設計開発部 辻尾良太(tjotjo) JAWS-UG 横浜支部 #76 AWS re:Invent 2024 宇宙一早い Recap
  2. • 名前 • 辻尾良太 • 仕事 • 三菱電機株式会社 • 2012~

    情報技術総合研究所(組み込み→サーバ) • インフラ中心/電力会社向けPJ支援 • 2023~ DXイノベーションセンター【現在の所属部署】 • Serendie基盤(技術)の開発・構築・運用 • 趣味 • フィットネス • BEST BODY JAPAN 2017/2019 予選敗退 • BEST BODY JAPAN 2024 Finalist • 好きなAWSサービス • アカウント営業 自己紹介 IPA(SW(旧)、NW、DB、ES、SC(旧)), 第一級陸上無線技術士 2024 Japan AWS All Certifications Engineers
  3. ©Mitsubishi Electric Corporation 立 ち 回 り 0-1 SaaS/Amazon EKS関連のセッションを中心に参加しながら、夜も楽しむ!

    • セッション関連 • SAS403 SaaS microservices deep dive: Multi-tenancy meets microservice • SAS311 Optimizing multi-tenant Amazon EKS SaaS architectures • KUB205-NEW Bring the power of Amazon EKS to your on-premises applications • SAS303 Zero to SaaS in one hour • KUB309 Karpenter: Amazon EKS best practices and cloud cost optimization • SAS304 Inside the SaaS Builder Toolkit: A hands-on deep dive • ・・・
  4. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : こ こ が 変 わ っ た ! 1-1 EKSの責任分解を変えられます (EKSクラスタのケイパビリティやEC2 Instance) Auto Mode なし Auto Mode あり https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/30-module-1-auto-mode/30-diving-deep-into-eks-auto 図の引用: KUB-306: Simplifying application deployment on Amazon EKS(イベント時のみアクセス可) https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/30-module-1-auto-mode/30-diving-deep-into-eks-auto/20-shared-responsibility-model
  5. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : 概 要 : こ れ ま で の 課 題 1-2 Amazon EKSを使っていても運用作業は多い。 • 課題 • インフラの管理 • AMIアップグレード、OSパッチ適用 • コンピュートのオートスケール • ネットワーキング(データプレーン内) • ストレージ • 監視 • k8sプラグインのインストールと維持 など
  6. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : 概 要 : コ ン ピ ュ ー ト : ノ ー ド 1-3 インフラやノードのエージェントもマネージド • Auto Modeで使用されるインフラのデフォルトOS • Bottlerocket OS • ノードエージェントのライフサイクル管理 • VPC CNI • network policy • CSI node agent • CoreDNS • kube-proxy • Amazon EKS Pod Identity Agent https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/30-module-1-auto-mode/30-diving-deep-into-eks-auto/30-managed-capabilities 図の引用: KUB-306: Simplifying application deployment on Amazon EKS(イベント時のみアクセス可)
  7. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : 概 要 : コ ン ピ ュ ー ト の 容 量 1-4 インスタンスはKarpenter(の原則に基づいてAWSにインテグレートしたもの)で管理します • グループレスオートスケーリング • Karpenter(っぽいAWSのなにか) https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/30-module-1-auto-mode/30-diving-deep-into-eks-auto/30-managed-capabilities 図の引用: KUB-306: Simplifying application deployment on Amazon EKS(イベント時のみアクセス可)
  8. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : 概 要 : ネ ッ ト ワ ー ク : P o d 間 1-5 Amazon VPC CNIを使用。デフォルト /28 からノード/PodにIPを割り当てる。 IPブロックが割り当てられない場合、自動的にセカンダリIPモードに切り替わる。 https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/30-module-1-auto-mode/30-diving-deep-into-eks-auto/30-managed-capabilities 図の引用: KUB-306: Simplifying application deployment on Amazon EKS(イベント時のみアクセス可)
  9. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : 概 要 : ネ ッ ト ワ ー ク : S e r v i c e d i s c o v e r y a n d l o a d b a l a n c i n g 1-6 CoreDNSの動きが通常のEKSクラスタのデフォルトと少し異なる • CoreDNS • 通常のEKSクラスタでは、Deploymentとして動作。 • Auto Modeクラスタでは、各ノード上のServiceとして機 能させている。 • 自動スケーリング機能がデフォルトで利用できる。 • クラスタのスケールに応じて、DNS解決がシームレスに なる。 • Auto Modeでは、ネットワーキングエージェント • セキュリティ修正や更新がマネージド!
  10. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : 概 要 : ネ ッ ト ワ ー ク : A p p l i c a t i o n L o a d B a l a n c i n g 1-7 Auto Modeでは、AWS Load Balancer Controller のカスタムバージョンを使用 • 動き方 • Kubernetes Service: NLB • Kubernetes Ingress: ALB • いずれもアノテーションを使用することもできる。 • デフォルトでは、Service/Ingressは、Instance Mode ではなく、IP Mode targetで構成される。
  11. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : 概 要 : ス ト レ ー ジ 1-8 Auto Modeでは、デフォルトでEBS/gp3 ストレージクラスをサポート、 他のKubernetes Container Storage Interface (CSI)にも準拠。 • 動き方 • EBSを使う場合は、プロビジョナー 「ebs.csi.eks.amazonaws.com」が追加されており、こ れを使用する • Amazon EKS アドオンAPIを使用して、EFS(FSx)やS3 ドライバを引き続き使用できる。 https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/30-module-1-auto-mode/30-diving-deep-into-eks-auto/30-managed-capabilities 図の引用: KUB-306: Simplifying application deployment on Amazon EKS(イベント時のみアクセス可)
  12. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : 概 要 : セ キ ュ リ テ ィ 1-9 EKS Pod Identity Webhookエージェントにより、 KubernetesアプリからAWS IAM権限を取得し、AWSリソースを使用する流れが簡素化 • Auto Modeは、Service Accounts(IRSA)のIAMロールもサポートして いるが、Amazon EKS Pod Identity Webhookへの移行を推奨 https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/30-module-1-auto-mode/30-diving-deep-into-eks-auto/30-managed-capabilities 図の引用: KUB-306: Simplifying application deployment on Amazon EKS(イベント時のみアクセス可)
  13. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : 概 要 : オ ブ ザ ー バ ビ リ テ ィ 1-10 Auto Modeは、AWSマネージドサービスとOSSの両方をサポート https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/30-module-1-auto-mode/30-diving-deep-into-eks-auto/30-managed-capabilities 図の引用: KUB-306: Simplifying application deployment on Amazon EKS(イベント時のみアクセス可)
  14. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : 動 か す : ベ ー ス 2-1 KUB-306: Simplifying application deployment on Amazon EKS (Builder’s Session) ソリューションライブラリ: Guidance for Automated Provisioning of Application-Ready Amazon EKS Clusters https://aws.amazon.com/jp/solutions/guidance/automated-provisioning-of-application- ready-amazon-eks-clusters/ サンプルコード https://github.com/aws-solutions-library-samples/guidance-for-automated- provisioning-of-application-ready-amazon-eks-clusters ↓のソリューションライブラリをデプロイした上で、EKS Auto Modeを触る。 (Auto Modeのためのソリューションライブラリではない。)
  15. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : 動 か す : E K S A u t o m o d e の 有 効 化 2-2 EKS Auto mode を有効化する (マネジメントコンソールでもできます) aws eks update-cluster-config ¥ --name $CLUSTER_NAME ¥ --compute-config enabled=true,nodeRoleArn=$NODE_ROLE_ARN,nodePools=general-purpose,system ¥ --kubernetes-network-config '{"elasticLoadBalancing":{"enabled": true}}' ¥ --storage-config '{"blockStorage":{"enabled": true}}' コマンド
  16. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : 動 か す : サ ン プ ル ア プ リ の デ プ ロ イ : i n g r e s s C l a s s 2-3 ingressClassを起動する。 ingress.yamlを作って kubectl apply cat >ingress.yaml << EOF # IngressClass & IngressClassParams apiVersion: eks.amazonaws.com/v1 kind: IngressClassParams metadata: name: eks-auto-alb spec: scheme: internet-facing --- apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: eks-auto-alb annotations: # Use this annotation to set an IngressClass as Default # If an Ingress doesn't specify a class, it will use the Default ingressclass.kubernetes.io/is-default-class: "true" spec: # Configures the IngressClass to use EKS Auto Mode controller: eks.amazonaws.com/alb parameters: apiGroup: eks.amazonaws.com kind: IngressClassParams name: eks-auto-alb # Use the name of the IngressClassParams set in the previous step EOF kubectl apply -f ingress.yaml コマンド 結果 Auto Modeによって管理されるコントローラを使用する
  17. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : 動 か す : サ ン プ ル ア プ リ の デ プ ロ イ 2-4 StrageClassを作成する。 ebs-sc.yaml を作って kubectl apply cat >ebs-sc.yaml <<EOF # StorageClass apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: eks-auto-ebs-csi-sc annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: ebs.csi.eks.amazonaws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp3 EOF kubectl apply -f ebs-sc.yaml コマンド Auto Modeによって管理されるEBS CSI driverを使用する
  18. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : 動 か す : サ ン プ ル ア プ リ の デ プ ロ イ 2-5 Helmを使ってアプリをデプロイ。 前段で作ったstrageClassとingressを指定して、アプリをデプロイ cat >values.yaml <<EOF catalog: mysql: secret: create: true name: catalog-db username: catalog password: "mysqlcatalog123" persistentVolume: enabled: true accessMode: - ReadWriteOnce size: 30Gi storageClass: eks-auto-ebs-csi-sc ui: endpoints: catalog: http://retail-store-app-catalog:80 carts: http://retail-store-app-carts:80 checkout: http://retail-store-app-checkout:80 orders: http://retail-store-app-orders:80 assets: http://retail-store-app-assets:80 autoscaling: enabled: true minReplicas: 3 maxReplicas: 10 targetCPUUtilizationPercentage: 80 コマンド topologySpreadConstraints: - maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: ScheduleAnyway labelSelector: matchLabels: app: ui - maxSkew: 1 topologyKey: kubernetes.io/hostname whenUnsatisfiable: ScheduleAnyway labelSelector: matchLabels: app: ui ingress: enabled: true className: eks-auto-alb annotations: alb.ingress.kubernetes.io/healthcheck-path: /home alb.ingress.kubernetes.io/healthcheck-interval-seconds: '15' alb.ingress.kubernetes.io/healthcheck-timeout-seconds: '5' alb.ingress.kubernetes.io/healthy-threshold-count: '2' alb.ingress.kubernetes.io/unhealthy-threshold-count: '2' alb.ingress.kubernetes.io/success-codes: '200-399' EOF さっき作ったstorageClass さっき作ったingress
  19. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : 動 か す : サ ン プ ル ア プ リ の デ プ ロ イ : 結 果 2-6 ec2-user:~/environment:$ helm install -f values.yaml retail-store-app oci://public.ecr.aws/aws- containers/retail-store-sample-chart --version 0.8.3 Pulled: public.ecr.aws/aws-containers/retail-store-sample-chart:0.8.3 Digest: sha256:ad14fa3021bf4af451244cefdecf12bb84992be60fec807162fd6841f14a46d5 NAME: retail-store-app LAST DEPLOYED: Wed Dec 4 18:44:51 2024 NAMESPACE: default STATUS: deployed REVISION: 1
  20. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : 動 か す : ク ラ ス タ の バ ー ジ ョ ン ア ッ プ 2-7 Terraformのコードのクラスタバージョンを更新して変更を適用する cluster_config = { kubernetes_version = "1.29" private_eks_cluster = false } 変更箇所 変更対象ファイル guidance-for-automated-provisioning-of-application-ready-amazon-eks-clusters/single-account-single- cluster-multi-env/00.global/vars/riv.tfvars 1.30 make ENVIRONMENT=riv MODULE=30.eks/30.cluster apply 適用
  21. ©Mitsubishi Electric Corporation A m a z o n E

    K S A u t o m o d e : 動 か す : ク ラ ス タ の バ ー ジ ョ ン ア ッ プ : 結 果 2-8 ec2-user:~/environment/guidance-for-automated-provisioning-of-application-ready-amazon-eks-clusters/single-account- single-cluster-multi-env:$ aws eks describe-cluster --region $AWS_REGION --name $CLUSTER_NAME --query "cluster.version" --output text 1.30 ec2-user:~/environment/guidance-for-automated-provisioning-of-application-ready-amazon-eks-clusters/single-account- single-cluster-multi-env:$ aws eks describe-cluster --region $AWS_REGION --name $CLUSTER_NAME --query "cluster.version" --output text 1.29 約10分後 •実行前 •実行後
  22. ©Mitsubishi Electric Corporation A P J K i c k

    o f f P a r t y 3-2 Asia Pasific and Japan アジア人が参加できるパーティ(ちょー楽しい)
  23. ©Mitsubishi Electric Corporation A P J K i c k

    o f f P a r t y 3-3 Asia Pasific and Japan アジア人が参加できるパーティ(ちょー楽しい)
  24. ©Mitsubishi Electric Corporation A P J K i c k

    o f f P a r t y 3-3 Asia Pasific and Japan アジア人が参加できるパーティ(ちょー楽しい)
  25. ©Mitsubishi Electric Corporation A P J K i c k

    o f f P a r t y : 後 悔 ( 今 後 の 課 題 ) 3-4 ダンスに誘われたが、うまく踊れなかった。 僕の後輩
  26. ©Mitsubishi Electric Corporation ま と め 4 32 • Amazon

    EKS Auto Mode • かなりの部分をマネージドにできる。 • 自分のAWSアカウントにデータプレーンがデプロイされるので、ネイ バーノイジー問題への対応に続ける。 • 細かい動きは検証が必要。 • パーティ • 円滑なコミュニケーションのためにダンスが必要。 • ダンスを踊れるようになる! • 心が大事!