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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
Materialが消えた日 〜真っ白なFlutterキャンバスにRenderObjectで絵を描く〜
umigishiaoi
0
160
AI Augmentation Techniques with Liberty
ivargrimstad
1
420
Performance Optimization With LLMs
xleitix
0
250
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
320
Goコンパイラを作ってGoをもっと理解する / Build a Go compiler to better understand Go
ikura_hamu
0
130
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
350
Getting Started with Vibe Coding
miccheng
0
200
作れるエンジニアから、価値を届けるエンジニアへ
ryunakayama
1
250
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
3
1.5k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
220
AI時代のIaC入門 〜なぜインフラをコードで管理したいのか?〜 / Introduction to IaC in the AI Era
akihisaikeda
6
1.5k
Featured
See All Featured
Building an army of robots
kneath
307
47k
Music & Morning Musume
bryan
48
7.5k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
480
Designing Powerful Visuals for Engaging Learning
tmiket
1
650
How to Talk to Developers About Accessibility
jct
2
620
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
350
Claude Code のすすめ
schroneko
67
230k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
sira's awesome portfolio website redesign presentation
elsirapls
0
500
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
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化やっていき