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
Istio Helm化
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
johnmanjiro
May 01, 2023
Programming
2.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Istio Helm化
johnmanjiro
May 01, 2023
More Decks by johnmanjiro
See All by johnmanjiro
GitOps共有会
johnmanjiro13
2
6.8k
Other Decks in Programming
See All in Programming
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.2k
まずはコードより業務と向き合う:テーブル解体のためにPdMを呼んだ話
sakawe_ee
0
190
AI-Powered Domain-Driven Design
ziobrando
0
420
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
220
複数ドメインを一つのアプリに統合するFlutterの設計と運用_FlutterKaigi2026登壇資料(須永高弘)
takahirosunaga
0
170
Spec-driven Development with AI
simas
PRO
0
2.3k
Claude Code ハーネスDeep Dive – 君はどこまで制御する? -
takateeen_knj
6
5k
小さなアプリを作って公開するまで
onozaty
0
160
はじめてのPLATEAU
nokonoko1203
1
640
[DroidKnights 2026] Workflow AX: From Auto-Documented Policies to E2E Testing
raeminkang
0
550
AWS CDKを理解するために公式の定義を深掘って解説してみる / Understanding AWS CDK by Digging into Its Official Definition
akihisaikeda
3
290
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.7k
Featured
See All Featured
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
380
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
750
Scaling GitHub
holman
464
140k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
600
The agentic SEO stack - context over prompts
schlessera
0
1k
HDC tutorial
michielstock
2
1k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
340
For a Future-Friendly Web
brad_frost
184
11k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
350
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
First, design no harm
axbom
PRO
2
1.4k
Transcript
Istio Helm化 共有 johnmanjiro
アジェンダ このタスクの目標 • なぜ Istio を Helm 化する必要があるのか Istio の構成
• Istio とは・Istio の構成 — istiod • Istio Operator とは Helm 化する手順 • Helm によるリソースの管理について • Istio Operator 管理のものを Helm 管理にするには この共有会で何を話すか
このタスクの目標
このタスクの目標 を で管理したい!
なぜ Helm で管理する必要があるのか サポートはされるが、新しい機能の追加などは行われない Istio のインストール方法 • istioctl — Istio
公式の CLI • IaC で管理できない • Istio Operator — istio-operator という pod が IstioOperator という CRD に基づ いて Istio のリソースを管理する — Istio を terraform で管理するために使っている • Istioの構成管理の話 - Gunosy Tech Blog • Helm — Kubernetes manifests 向けのパッケージマネージャー 今使っている Istio Operator でのインストールが非推奨になったから
Istioの構成
Istio の構成 そもそも ってなんだ?
Istio とは サービスメッシュ • アプリケーションレベルの通信をインフラストラクチャ側で制御できる ようにする技術 • 社内のマイクロサービスが通信する際に使っている わかりやすい資料 AWS
App Mesh - AWS Black Belt Online Seminor Kubernetes 向けのサービスメッシュ
出典: https://istio.io/latest/about/service-mesh/ ▪ Control Plane(istiod) – Istio 全体を管理する • Pod
に対して Istio Proxy を注入したり – istiod という単一のバイナリ • 中に Pilot などのコンポーネントを持つ ▪ Istio Proxy – Pod に注入される Proxy • Envoy を拡張したもの • Sidecar として注入される • サービス間すべてのトラフィックを管理する Control Plane と Istio Proxy で構成される Istio の構成
Istio の構成 Workloads • Deployment 権限周り • ClusterRole • SericeAccount
• etc… ほかにもいっぱい Istio を動かすにはさまざまなリソースのデプロイが必要
Istio の構成 Workloads • Deployment 権限周り • ClusterRole • SericeAccount
• etc… ほかにもいっぱい Istio を動かすにはさまざまなリソースのデプロイが必要 簡単に管理したい
Istio のインストール方法 Istio のインストール方法(再掲) • istioctl — Istio 公式の CLI
• IaC で管理できない • Istio Operator — istio-operator という pod が IstioOperator という CRD に基づ いて Istio のリソースを管理する — Istio を terraform で管理するために使っている • Istioの構成管理の話 - Gunosy Tech Blog • Helm — Kubernetes manifests 向けのパッケージマネージャー リソースを管理するためにいくつかのインストール方法が提供されている
Istio のインストール方法 Istio のインストール方法(再掲) • istioctl — Istio 公式の CLI
• IaC で管理できない • Istio Operator — istio-operator という pod が IstioOperator という CRD に基づ いて Istio のリソースを管理する — Istio を terraform で管理するために使っている • Istioの構成管理の話 - Gunosy Tech Blog • Helm — Kubernetes manifests 向けのパッケージマネージャー リソースを管理するためにいくつかのインストール方法が提供されている
Istio Operator デプロイされると Istio 関連のリソースを管理する • Istiod の Deployment •
Service • stats 系の Envoy Filter istio-operator という pod が Controller として動いている IstioOperator (CR) の設定に合わせて Istio のリソースを管理する 内部で Helm のマニフェストを持っており、Render 後 Apply している • Istio Operator の manifest で定義しているものも Helm の Value Istio のリソースを管理する方法のひとつ
Istio Operator Istio Operator が管理しているリソースももとはHelm Chartのもの → Helm 管理におこうとした時に競合する →
競合を解決できればそのままそのリソースを Helm で管理できる Helm のマニフェストを持っているということは
Istio Operator Istio Operator を削除すると…… 管理していたリソースも消える • Kubernetes クラスターから Control
Plane とかが消え去る • やばい どうやって管理対象か判断しているのか • リソースについているラベルを見ている(code1, code2) — install.operator.istio.io/owning-resource — install.operator.istio.io/owning-resource-namespace — operator.istio.io/managed — operator.istio.io/component — operator.istio.io/version
Istio Operator リソースを消さずに Istio Operator を消すには 方法1. 既存のリソースからラベルを剥がしてから消す 方法2. istio-operator(Controller)を止めてから消す
Istio Operator 方法1. 既存のリソースからラベルを剥がしてから消す リソースについている Istio Operator 関連のラベルをすべて剥がす • ラベルがなくなっていれば管理対象でなくなる
• 剥がし忘れがあるとそのリソースが消えてしまう
Istio Operator 方法2. istio-operator(Controller)を止めてから消す IstioOperator の定義に基づいて実際にリソースを扱うのはistio-operator → istio-operator の Pod
がいなければ、istio のリソースは変更されない • IstioOperator のラベルをいじる必要がない • 既存のリソースで Helm 管理にならないものも残しておける
Istio Operator リソースを消さずに Istio Operator を消すには 方法1. 既存のリソースからラベルを剥がしてから消す 方法2. istio-operator(Controller)を止めてから消す
こっちでやる
Helm化する手順
前提 istio-base • istio 全体で共通のリソース(CRDなど) • Istio Base Helm Chart
istiod • Istio の Control Plane • Istiod Helm Chart 必ず istio-base を先にインストールしておく必要がある Gateway を使っているなら istio-gateway も必要(うちは使ってない) 2つの Helm Chart をインストールする必要がある(参考)
Helm 化する手順 1. 手順書の作成 2. Helm 化する PR を用意 3.
istio-operator の Pod 数を0にする 4. 既存のリソースに Helm のラベルとアノテーションをつける 5. PR のマージ
Helm 化する手順 一連の流れ、コマンド、スクリプトを記載する 1. 手順書の作成
Helm 化する手順 対象のリソースにラベルをつけない限り helmfile diff が失敗する Istio Operator の terraform
のコードを削除するのも含めてもいい 2. Helm 化する PR を用意
Helm 化する手順 istio-operator という namespace に Deployment がある • replicas:
0 に指定 この後、istio-operator の Pod がなくなり IstioOperator に基づいた Reconcile が行われなくなる 3. istio-operator の Pod 数を0にする
Helm 化する手順 ラベル • app.kubernetes.io/managed-by=Helm アノテーション • meta.helm.sh/release-name=<release_name> • meta.helm.sh/release-namespace=<release_namespace>
この後、PR で diff が確認できるようになるはず 4. 既存のリソースに Helm のラベルとアノテーションをつける
Helm 化する手順 helmfile apply が成功すれば OK • すべてにラベルがついていれば成功するはず PR に
Terraform からの Istio Operator の削除を含めていた場合、Istio Operator の削除も実行される 5. PR のマージ
これから何をするか
手順書の作成からやっていく 続いて下記を実施する • Helm 導入の PR • Helm の対象になるリソースのラベル・アノテーションを変えるスクリプ ト
これから何をするか Istio Helm化やっていき