Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
GitOpsで始めるクラウドリソース管理
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
nutslove
April 05, 2025
210
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GitOpsで始めるクラウドリソース管理
k8sの仕組みを使ったGitOpsを用いたクラウドリソース管理についての社内勉強会で使用した資料になります。
参考になれば幸いです。
nutslove
April 05, 2025
More Decks by nutslove
See All by nutslove
AI Gateway入門 - マルチLLM時代の交通整理 -
nutslove
1
72
Kubernetes(EKS)ネットワーク入門
nutslove
1
620
Context Engineeringの取り組み
nutslove
0
670
LangGraphで作ったアラート原因分析エージェントについて
nutslove
0
590
アラートだけでここまで分析できるの!?AI Agentで切り開くアラート対応の新時代
nutslove
0
960
OpenTelemetry(ADOT)による自動計装
nutslove
1
460
MCP入門
nutslove
2
230
Thanos入門(Receiver構成)
nutslove
0
230
OpenTelemetryによるベンダーニュートラルな監視設定
nutslove
5
570
Featured
See All Featured
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
540
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
700
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Navigating Team Friction
lara
192
16k
Site-Speed That Sticks
csswizardry
13
1.5k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
610
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
410
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.3k
Practical Orchestrator
shlominoach
192
12k
A better future with KSS
kneath
240
18k
Transcript
GitOpsで始めるクラウドリソース管理 2025/4/5 李俊起
話す内容 2025/4/5 2 • GitOpsについて ➢ GitOpsとは ➢ GitOpsの仕組み ➢
GitOpsのメリット ➢ GitOpsのためのツール • デモ ➢ CrossPlane + ArgoCD + Kyverno ➢ Terraform + Flux + Flux Tofu Controller
2025/4/5 3 GitOpsについて
GitOpsとは 2025/4/5 4 • Git上のコードをSingle Source of Truth(正)として、 リソースを常にコードと同じ状態に同期するデプロイメント手法 •
現時点ではGitOpsはKubernetesの仕組みを使うのが一般的(※) 最初はk8sのネイティブリソース(e.g. Pod)が対象だったが、 k8sのAPIを拡張した各種ツールが登場したことによって、 クラウドリソースの管理も可能に。 ※Pipecdなどk8sの仕組みを使わず、独自のReconcileロジックを実装しているものもある
GitOpsの仕組み(Reconciliation Loop) 2025/4/5 5 • 現在のリソースの状態(Current State)と理想の状態(Desired State)を比較し、2つの状態に差分があった場合、理想の状態に 同期させるKubernetesの仕組み
GitOpsの仕組み(Custom Resource Definition(CRD)) 2025/4/5 6 • KubernetesのAPIの拡張し、独自のリソースをk8sの仕組みで管 理できるようにするもの • 以下のようなマニフェストファイルで管理/定義できる
apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: iamusers.nutslove.com spec: group: nutslove.com names: kind: IAMUser listKind: IAMUserList plural: iamusers singular: iamuser scope: Namespaced versions: - name: v1alpha1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: ・・中略・・
※補足: APIの拡張とは 7 • ユーザはkubectlコマンドラインツールを使って、kube-apiserver にAPIリクエストを送信する • CRDでAPIを拡張するというのは、 kube-apiserverが処理できるAPIの種類を増やすということ kube-apiserver
kube-scheduler kube-controller-manager etcd マスターノード k8sクラスタ オペレーター 2025/4/5 kubectlコマンド API kubernetesの司令塔。 クラスタ内のすべての 処理はkube-apiserver を経由して行われる。 クラスタ内のすべての 情報を保持する キーバリューストア 各リソースの状態をモニタリング し、etcd上のあるべき状態と 実際のリソースの状態に差分が ある場合、必要な対応をする
GitOpsの仕組み(Operator/Controller) 2025/4/5 8 • Reconciliation Loopを行う主体 • etcd上に登録されているリソースのあるべき状態と、 実際のリソースの状態を定期的に比較し、差分がある場合、 あるべき状態にリソースを同期する
• 例えば、Deploymentリソースを管理するController(※) は 常に指定した数のPod(=ECSのTask)が動くように働きかける ※kube-controller-managerに内包されている
CRD、Operatorのプチデモ 2025/4/5 9 • デモ用CRD、Operatorの概要 • IAMユーザ(IAMユーザにアタッチするIAMポリシーとIAMグループも) を管理するCRDとOperator kube-apiserver etcd
k8sクラスタ IAM Operator IAMユーザの実際の状態を確認し、 etcd上の状態と差分がある場合 はetcd上の状態に同期 (kube-apiserver経由で) etcdから IAMユーザのあるべき状態を確認 https://github.com/nutslove/Operator
GitOpsのメリット 2025/4/5 10 • ドリフト検出 ➢ Git上のコードの状態 = 実際のリソースの状態を維持できる •
CDパイプラインが不要 ➢ CIパイプラインは必要 • Admission Controllerを使ったPolicy as Codeの実現 ➢ Flux Tofu Controllerを使う場合は例外
GitOpsのためのツール 2025/4/5 11 • ArgoCD ➢ Gitリポジトリ上のマニフェストファイルとk8s上のリソースを比較し、 KubernetesのリソースをGitの状態に同期する ➢ 基本Kubernetesのリソースが管理対象
➢ GUIベース • Flux ➢ Tofu Controllerというコンポーネントを追加することで TerraformリソースもGitOps方式で管理できる ➢ CUIベース
クラウドリソースをGitOpsで管理するためのツール 2025/4/5 12 • CrossPlane ➢ クラウドリソースをKubernetesのCR(Custom Resource)として管理 ➢ Kubernetesのリソースとして扱えるのでArgoCDやKyvernoなど、
Kubernetesのエコシステムとの高い親和性 • Flux Tofu Controller ➢ FluxでTerraformリソースを管理するためのコンポーネント ➢ Branch Plannerという追加機能を有効にすると、Pull Requestを トリガーにPlanを自動実行し、結果をGithubリポジトリ上に Pull Requestのコメントとして投稿してくれる
2025/4/5 13 Demo
組み合わせパターン(1) 2025/4/5 14 • CrossPlane + ArgoCD + Kyverno ➢
CrossPlane: クラウドリソースの管理・デプロイ・ドリフト検出 ➢ ArgoCD: Git上コードのドリフト検出、k8sリソースの管理 ➢ Kyverno: Policy as Code(Admission Controller)として機能 マニフェストファイル Git上のコードを監視 etcd上の Crossplane リソースを監視 AWS(のリソース)を監視、 AWSリソースのデプロイ etcdに保存する前にkyvernoのポリシーを チェックし、リクエスト内容がポリシーに違反して いたらetcdに保存せず、リクエストを拒否する
※補足: Admission Controller 15 • APIリクエストをetcdに登録する前に、リクエストの内容を検証し、 必要に応じてリクエストの内容を変更したり、リクエストを拒否する もの(仕組み) • KyvernoはAdmission
Controllerの一種 2025/4/5 https://kyverno.io/docs/introduction/admission-controllers/
組み合わせパターン(2) 2025/4/5 16 • Terraform + Flux + Flux Tofu
Controller ➢ Terraform: クラウドリソースの管理 ➢ Flux: Git上コードのドリフト検出、k8sリソースの管理 ➢ Flux Tofu Controller: クラウドリソースのデプロイ・ドリフト検出 Git上のコードを監視 Tofu Controller etcd上のFluxの リソースを監視 AWS(のリソース)を監視、 AWSリソースのデプロイ