Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kubernetes で実現する GitOps

Kubernetes で実現する GitOps

Kubernetes で実現する GitOpsDevAx::connect シーズン 3 rethink CI/CD
第 3 回 (2022 年 6 月 23 日)にて登壇した内容です。

https://pages.awscloud.com/DevAxconnect_Archive_2022.html

More Decks by kashinoki38 - Yasuhiro Horiuchi

Other Decks in Technology

Transcript

  1. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. connect DevAx © 2022, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark. Kubernetes で実現する GitOps DevAx::connect シーズン 3 rethink CI/CD 2022/6/23 Yasuhiro Horiuchi Solutions Architect
  2. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. 自己紹介 堀内 保大 (Yasuhiro Horiuchi) • AWS Japan G.K. ソリューションアーキテクト • 主に Digital 関連企業様を担当 バックグラウンド • 前職:大手SIerで多岐にわたるシステムへの性能関連の技術支援 (性能試験、監視、チューニング、非機能設計 etc) 好きなAWSサービス コンテナ関連が好きです!! • Amazon Elastic Kubernetes Service (EKS) • AWS Fargate • Amazon Managed Service for Prometheus (AMP) 趣味 • スノーボード、旅行 2 @ka_shino_ki [email protected]
  3. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. GitOps ってなんですかね • Git で管理されていれば GitOps? • Git を契機に自動でデプロイを実装しているから GitOps やれてる? • CI/CDと何が違うの? 今日はこの点クリアになってもらえればうれしいです!! 3
  4. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. Agenda • CI/CD 振り返り • GitOps とは? • Kubernetes で実現する GitOps • まとめ 5
  5. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. 第1回 雰囲気でモダン開発手法の実践を している人のためのCI/CD再入門 野村 侑志 アマゾンウェブサービスジャパン合同会社 ソリューションアーキテクト CI/CD は組織で使っているけれど、なぜ CI/CD を使わないといけないかや 具体的にどんないいことがあるのかが曖昧になっていませんか?本セッ ションでは、歴史的な背景やどのような意図で CI/CD を行うべきなのかと いう根本的な部分を見直すことによって、自分の開発環境の全体像を理解 したり見直したりするきっかけにしていただくことを目的にしています。 7
  6. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. CI/CDとは 継続的インテグレーション Continuous Integration(CI) + 継続的デリバリー/デプロイ Continuous Delivery/Deployment(CD) 8
  7. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Source Build Test Production • ソースコードの チェックイン • コードの ピアレビュー • コードのコンパイル • ユニットテスト • スタイルチェッカー • コンテナイメージ、 関数デプロイ パッケージの作成 • 周辺システムとの 統合テスト • 負荷テスト • UIテスト • セキュリティ テスト • 本番環境への デプロイ • エラーを素早く検知 するための本番環境 のモニタリング リリースプロセスのステージ 9
  8. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. リリースプロセスのステージ Source Build Test Production 10
  9. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. 第2回 適材適所で選ぶ CI/CD パイプライン 構築サービス&ツール 松本 雅博 アマゾンウェブサービスジャパン合同会社 シニアソリューションアーキテクト AWS の CI/CD パイプラインサービスというと、 まずは CodePipeline を思い浮かべられる方が多い のではないでしょうか?現在、AWS には CDK Pipeline, AWS Copilot, AWS SAM Pipeline などのパ イプライン構築に活用できるツールや、AWS Amplify Console, AWS Proton など CI/CD パイプライ ンが組み込まれたサービスがあります。また、3rd Party のサービス、ツールをご利用いただくこ ともできます。このセッションでは CI/CD に関する多彩なサービス、ツールをどのような場面で活 用するのかについてお話しします。 11
  10. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. CD:パイプライン構築編 svn commit 12
  11. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. CD:パイプライン構築編 svn commit 13 デプロイ後の環境を手作業などに より変更することができてしまう 環境外部に環境操作の権限を渡す 必要がある
  12. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. GitOps とは? • Weaveworks社が2017年に提唱 • https://www.weave.works/blog/gitops-operations-by-pull-request • GitOps は Git をデプロイパイプラインの中心に据えた IaC のデプ ロイの考え方 • 開発者は使い慣れたツールを使用してプルリクエストを作成し、Kubernetes へのアプ リケーションのデプロイと運用タスクの両方を高速化および簡素化します • Git を中心に CI と CD を分離 15
  13. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. GitOps の原則 システム全体が 宣言的に記述され ていること 望ましいシステム状態 が Git でバージョン 管理されている 変更を自動的に 適用する エージェントは、 正確性を保証し、 相違を警告する https://www.weave.works/technologies/gitops/ 16
  14. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. GitOps の原則 システム全体が 宣言的に記述され ていること 望ましいシステム状態 が Git でバージョン 管理されている 変更を自動的に 適用する エージェントは、 正確性を保証し、 相違を警告する https://www.weave.works/technologies/gitops/ 宣言型ツールを使用することで、システムのあるべき状態 をGitで管理可能になる 17
  15. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. 宣言的な構成管理の自動化 • ここでいう「宣言的」とは? • → 命令的にコマンドでインフラ構成を指示するのではなく、構成 のあるべき状態を設定ファイルで定義すること 18
  16. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. 命令的なインフラ構築 命令的な構築 必要に応じて一つ一つのコマンドを実行してインフラを構築して いくこと 19 • アプリ version1 のコンテナをデプロイする • 負荷が増えたのでサーバ台数を10台増やす • アプリ version2 のコンテナデプロイする • 負荷が減ったのでサーバ台数を3台減らす • 特定のサーバで障害が発生したので、対象のサーバをロードバランサから 切り離し新しいサーバを配置する
  17. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. 命令的なインフラ構築 命令的な構築のデメリット ? 現状の把握が困難 $ sudo yum update -y $ yum -y install httpd $ yum install php $ yum install php-mysql $ sudo service httpd start $ sudo chkconfig httpd on $ cd /etc/httpd/conf/ $ vi httpd.conf ・ ・ Client 開発環境 ステージング環境 本番環境 コマンド反映 Client $ sudo yum update -y $ yum -y install httpd $ yum install php $ yum install php-mysql $ sudo service httpd start $ sudo chkconfig httpd on $ cd /etc/httpd/conf/ $ vi httpd.conf ・ ・ $ sudo yum update -y $ yum -y install httpd $ yum install php $ yum install php-mysql $ sudo service httpd start $ sudo chkconfig httpd on $ cd /etc/httpd/conf/ $ vi httpd.conf ・ ・ 環境の複製が困難 20
  18. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. 宣言的なインフラ構築 21 宣言的な構築 構成のあるべき状態を設定ファイ ルで定義して この設定ファイルをクラスターに デプロイしてインフラを構築して いくこと apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: … spec: containers: - name: nginx image: public.ecr.aws/nginx/nginx:1.21 ports: - containerPort: 80
  19. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. 宣言的な構成管理 • ここでいう「宣言的」とは? • 命令的にコマンドでインフラ構成を指示するのではなく、構成のあ るべき状態を設定ファイルで定義すること 宣言的な構築のメリット Client 開発環境 ステージング 環境 本番環境 反映 反映 反映 Client 現状の把握が容 易 環境の複製が容易 設定ファイル 22
  20. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. GitOps の原則 システム全体が 宣言的に記述され ていること 望ましいシステム状態 が Git でバージョン 管理されている 変更を自動的に 適用する エージェントは、 正確性を保証し、 相違を警告する https://www.weave.works/technologies/gitops/ 宣言型ツールを使用することで、システムのあるべき状態 をGitで管理可能になる 23
  21. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. GitOps の原則 システム全体が 宣言的に記述され ていること 望ましいシステム状態 が Git でバージョン 管理されている 変更を自動的に 適用する エージェントは、 正確性を保証し、 相違を警告する https://www.weave.works/technologies/gitops/ 信頼できる唯一の情報源(Single source of truth)としてGitを使用する →開発者の使い慣れたツールで、変更追跡(「誰が」、「いつ」、「なぜ」変更した か)、バージョン管理、承認(プルリクエスト) 24
  22. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. GitOps の原則 システム全体が 宣言的に記述され ていること 望ましいシステム状態 が Git でバージョン 管理されている 変更を自動的に 適用する エージェントは、 正確性を保証し、 相違を警告する https://www.weave.works/technologies/gitops/ ソフトウェアエージェントを使用して、Git リポジトリとクラスターを同期 25
  23. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. GitOps の原則 システム全体が 宣言的に記述され ていること 望ましいシステム状態 が Git でバージョン 管理されている 変更を自動的に 適用する エージェントは、 正確性を保証し、 相違を警告する https://www.weave.works/technologies/gitops/ 相違がある場合、Kubernetes は、クラスターを自動的に更新 →Git上のマニフェストと実環境の一致を保証 26
  24. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. GitOps パイプライン 27 https://www.weave.works/technologies/gitops/
  25. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. Push 型の CIOps と Pull 型の GitOps • Push 型 • 手動 or ビルドツールから kubectlを打つ (apiを呼ぶ) • クラスター外からのデプロイ • CIツールからデプロイを行う ため CIOps とも呼ばれる • Pull 型 • クラスター内のエージェント からkubectlを打つ (apiを呼ぶ) • 継続的な実行 • CIとCDが分離している • GitOps の OSS はこちらの考 え方 28 https://www.weave.works/technologies/gitops/ コンテナイメージ レジストリ Kubernetes
  26. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. Push 型の CIOps と Pull 型の GitOps • Push 型 • 手動 or ビルドツールから kubectlを打つ (apiを呼ぶ) • クラスター外からのデプロイ • CIツールからデプロイを行う ため CIOps とも呼ばれる • Pull 型 • クラスター内のエージェント からkubectlを打つ (apiを呼ぶ) • 継続的な実行 • CIとCDが分離している • GitOps の OSS はこちらの考 え方 29 コンテナイメージ レジストリ Kubernetes https://www.weave.works/technologies/gitops/
  27. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. 従来の CD システムとの比較 • イベント契機でプッシュする • システムとリポジトリでずれ ることがある • CD プロセスは環境にアクセ スする必要があります 従来の CD システム(CIOps) GitOps ベースのシステム • 継続的に変更をポーリング • リポジトリをSingle Source of Truthとして環境と同期 • 差分発生時も修正
  28. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. GitOps パイプライン 31 https://www.weave.works/technologies/gitops/ ビルドツールにてイメージを書き換えて K8sマニフェストを IaC のリポジトリに ・直接ブランチにpushしたり ・PRを上げたり
  29. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. GitOps がもたらす価値 • Single Source of Truth • Git上のアプリケーションのあるべき状態とクラスタが継続的に同期されている • Kubernetes の宣言的 API と相性が良い • より迅速な開発 • 開発者は使い慣れたGitを使用して、Kubernetes の更新と機能をより迅速に管理 • 基盤の構成のバージョン管理が可能できるようになり、ロールバックや切り戻しが確実かつ容易 • より良い運用 • 継続的インテグレーションと継続的デプロイのパイプラインはすべてプルリクエストによって駆 動される(デプロイ前に確実にレビュープロセスが入る) • より簡単なコンプライアンスと監査 • Git にてシンプルに各リソース定義を「誰が」、「いつ」、「なぜ」変更したかが分かるように なる • CI ツールへの権限集中を回避(CI と CD を分離) 32
  30. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. Kubernetes の概要 • 複数のホスト間でコンテナ化されたアプリケー ションを管理するオープンソースシステム • に よって管理、推進されている • デプロイ、メンテナンス、スケーリングといった 基本的な機能を提供している 35
  31. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. 宣言的なインフラ構築 37 宣言的な構築 構成のあるべき状態を設定ファイ ルで定義して この設定ファイルをクラスターに デプロイしてインフラを構築して いくこと apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: … spec: containers: - name: nginx image: public.ecr.aws/nginx/nginx:1.21 ports: - containerPort: 80
  32. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. Kubernetes における宣言的な構成管理 • ここでいう「宣言的」とは? • 命令的にコマンドでインフラ構成を指示するのではなく、構成のあ るべき状態を設定ファイルで定義すること 宣言的な構築のメリット Client 開発環境 ステージング 環境 本番環境 反映 反映 反映 Client 現状の把握が容 易 環境の複製が容易 設定ファイル 38
  33. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. GitOps の原則 システム全体が 宣言的に記述され ていること 望ましいシステム状態 が Git でバージョン 管理されている 変更を自動的に 適用する エージェントは、 正確性を保証し、 相違を警告する https://www.weave.works/technologies/gitops/ 宣言型ツールを使用することで、システムのあるべき状態 をGitで管理可能になる 39
  34. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. あるべき状態に収束させる機能 40 https://speakerdeck.com/yosshi_/korekaraxue-hukubernetesfalsereconciliation-loop?slide=12
  35. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. Kubernetes における宣言的な構成管理 Kubernetes は設定ファイルからクラスタ全体をあるべき状態に収束させる 設定ファイル 設定を適用 Kubernetes クラスタ 反映 障害などで宣言され た状態が崩れた場合、 自動であるべき状態 に復旧させる Client コンテナを3つ起動 する設定 41
  36. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. GitOps の原則 システム全体が 宣言的に記述され ていること 望ましいシステム状態 が Git でバージョン 管理されている 変更を自動的に 適用する エージェントは、 正確性を保証し、 相違を警告する https://www.weave.works/technologies/gitops/ 相違がある場合、Kubernetes は、クラスターを自動的に更新 →Git上のマニフェストと実環境の一致を保証 42
  37. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. 手作業でデプロイする場合 Kubernetes は設定ファイルからクラスタ全体をあるべき状態に収束させる 設定ファイル kubectl apply -f Kubernetes クラスタ 反映 Client 44 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: public.ecr.aws/nginx/nginx:1.21 ports: - containerPort: 80 コンテナを3つ起動 する設定 コンテナイメージ レジストリ 開発者 git push/pull docker push docker build コンテナイメージ Source Build Deploy (Test/Prod)
  38. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. CI(Source→Build)を自動化 Kubernetes は設定ファイルからクラスタ全体をあるべき状態に収束させる 設定ファイル kubectl apply -f Kubernetes クラスタ 反映 Client 45 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: public.ecr.aws/nginx/nginx:1.21 ports: - containerPort: 80 コンテナを3つ起動 する設定 コンテナイメージ レジストリ 開発者 git push Source Build Deploy (Test/Prod)
  39. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. CDは? Kubernetes は設定ファイルからクラスタ全体をあるべき状態に収束させる 設定ファイル kubectl apply -f Kubernetes クラスタ 反映 Client 46 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: public.ecr.aws/nginx/nginx:1.21 ports: - containerPort: 80 コンテナを3つ起動 する設定 コンテナイメージ レジストリ 開発者 git push Source Build Deploy (Test/Prod)
  40. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. CDは? Kubernetes は設定ファイルからクラスタ全体をあるべき状態に収束させる 設定ファイル kubectl apply -f Kubernetes クラスタ 反映 Client 47 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: public.ecr.aws/nginx/nginx:1.21 ports: - containerPort: 80 コンテナを3つ起動 する設定 コンテナイメージ レジストリ 開発者 git push Source Build Deploy (Test/Prod)
  41. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. GitOps を実現する OSS 例 • Kubernetes の Reconciliation Loop の仕組みを使って、 クラスタ上の実際の状態とGit 上のあるべき状態を監視 50 ArgoCD Flux PipeCD • Weaveworks 社が 開発元 • CLI のみでシンプ ル構成 • v2はまだGA前 • Intuit 社が開発元 • GUIも提供 • Cyber Agent 社が 開発元 • Kubernetes 以外 のリソースにも GitOps 適用可能 https://github.com/fluxcd/flux2 https://github.com/argoproj/argo-cd https://github.com/pipe-cd/pipecd
  42. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. GitOps の内部アーキテクチャ (Fluxの例) apiVersion: source.toolkit.fluxcd.io/v1beta2 kind: GitRepository metadata: name: podinfo namespace: default spec: interval: 5m url: https://github.com/stefanprodan/podinfo ref: branch: master --- apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 kind: Kustomization metadata: name: podinfo namespace: default spec: interval: 10m targetNamespace: default sourceRef: kind: GitRepository name: podinfo path: "./kustomize" prune: true 51 https://fluxcd.io/docs/get-started/
  43. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. EKS Workshop で GitOps 試せます 52 https://www.eksworkshop.com/intermediate/260_weave_flux/ https://www.eksworkshop.com/intermediate/290_argocd/
  44. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. デプロイメントパイプラインの例 / Build A W S マ ネ ー ジ ド サ ー ビ ス を 活 用 し て コ ン テ ナ イ メ ー ジ の 単 体 テ ス ト 、 ビ ル ド を 行 い レ ジ ス ト リ に P U S H す る AWS CodeBuild AWS Cloud アプリケーション コード チェックイン Amazon Elastic Container Registry (Amazon ECR) Source Build Test Production 開発者 コードの取得 単体テスト イメージのビルド イメージの Push アプリケーション Git リポジトリ 54
  45. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. デプロイメントパイプラインの例 / Test G I T O P S を 利 用 し て 検 証 環 境 へ の デ プ ロ イ を 自 動 化 す る AWS Cloud Amazon EKS マニフェスト 取得 Kubernetes API Server Kubernetes クラスター (検証用) Source Build Test Production 開発者 Kubernetes マニフェスト Deployment, ConfigMap, .. インフラコード Git リポジトリ dev へ push stg/prod へ PR GitOps ツール Flux ArgoCD apply (デプロイ実行) 55 AWS CodeBuild
  46. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. デプロイメントパイプラインの例 / rollback G I T O P S を 利 用 し て 検 証 環 境 へ の デ プ ロ イ を 自 動 化 す る AWS Cloud Amazon EKS マニフェスト 取得 Kubernetes API Server Kubernetes クラスター (検証用) Source Build Test Production 開発者 Kubernetes マニフェスト Deployment, ConfigMap, .. インフラコード Git リポジトリ GitOps ツール Flux ArgoCD apply (デプロイ実行) 56 git revert PR
  47. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. 第5回 ECS で考える安全なデプロイメント 落水 恭介 アマゾンウェブサービスジャパン合同会社 ソリューションアーキテクト CI/CD パイプラインの設計において、ロールバックプロセスの検討は最も重要な観 点の1つです。アラートをトリガーに運用担当者へメールを送る、いくつかのメト リクスをターゲットにロールバックを判断するアクションをパイプラインに組み込 むなど、その方法はさまざまです。本セッションでは、ECS へのデプロイを例に、 ロールバックプロセスをどのように設計するのか、CI/CD パイプラインへのロール バックプロセスの導入についてお話します。 57
  48. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. プログレッシブデリバリー 新バージョンのアプリケーションを段階的に公開 58
  49. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. デプロイメントパイプラインの例 / Test P R O G R E S S I V E に デ リ バ リ ー を 行 い な が ら 、 メ ト リ ク ス を 参 照 し て ロ ー ル バ ッ ク を ト リ ガ ー Metrics AWS Cloud Amazon EKS Flagger Ingress Service v1 Service v2 Deployment v1 Deployment v2 Source Build Test Production Kubernetes クラスター (検証用) Amazon CloudWatch Prometheus Datadog ... 59 https://aws.amazon.com/jp/blogs/containers/progressive-delivery-using-aws-app-mesh-and-flagger/
  50. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. 本番環境で GitOps を採用するための考慮事項 • Secrets の管理 • E.g. AWS Secrets and Config Provider(ASCP) • 可観測性の向上と自動ヘルスチェックのためのツール • E.g. 死活監視、外形監視など • E.g. RED(Rate, Errors, Duration) x USE(Utilization, Saturation, Errors) の監視 • 環境間差分の表現 • E.g. Kuberentes テンプレートエンジンの活用(Kustomize, Helm) 60
  51. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. Key Takeaways • GitOps は Git をデプロイパイプラインの中心に据えた IaC デプロイの考え方 • GitOps の特徴 • Single Source of Truth • Git上のアプリケーションのあるべき状態とクラスタが同期されており差分が明確 • より迅速な開発 • 開発者は使い慣れたGitを使用して、Kubernetes の更新と機能をより迅速に管理 • より良い運用 • 継続的インテグレーションと継続的デプロイのパイプラインはすべてプルリクエストによって駆動される • より簡単なコンプライアンスと監査 • Git にてシンプルに各リソース定義を「誰が」、「いつ」、「なぜ」変更したかが分かるようになる • GitOps のツールとして Flux2 と ArgoCD を紹介 62
  52. connect DevAx © 2022, Amazon Web Services, Inc. or its

    Affiliates. All rights reserved. Amazon Confidential and Trademark. 参考 • https://www.weave.works/blog/gitops-operations-by-pull-request • https://www.weave.works/technologies/gitops/ • https://aws.amazon.com/jp/blogs/news/building-a-gitops-pipeline-with-amazon-eks/ • https://fluxcd.io/docs/ • https://argo-cd.readthedocs.io/en/stable/ • https://www.eksworkshop.com/intermediate/260_weave_flux/ • https://www.eksworkshop.com/intermediate/290_argocd/ 63