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
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Istio Helm化
Search
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
ソフトウェアラスタライザ
fadis
1
790
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
470
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
290
AIとGame Jamで、ゲームを完成させた話
takahirosaeki
0
110
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
760
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
180
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
680
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
130
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
470
AIの中の人になってみる
htkym
0
170
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
220
[DroidKaigi 2026] Bring your own phones to Gradle Managed Devices
f2lk
0
110
Featured
See All Featured
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
540
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Optimising Largest Contentful Paint
csswizardry
37
3.9k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
490
We Are The Robots
honzajavorek
0
350
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
490
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
210
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
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化やっていき