Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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]

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

connect DevAx

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

connect DevAx

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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/

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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/

Slide 29

Slide 29 text

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として環境と同期 • 差分発生時も修正

Slide 30

Slide 30 text

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を上げたり

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

connect DevAx

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

connect DevAx

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

connect DevAx

Slide 42

Slide 42 text

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)

Slide 43

Slide 43 text

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)

Slide 44

Slide 44 text

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)

Slide 45

Slide 45 text

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)

Slide 46

Slide 46 text

connect DevAx

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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/

Slide 49

Slide 49 text

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/

Slide 50

Slide 50 text

connect DevAx

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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/

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

connect DevAx

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

Thank you! connect DevAx