Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
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.7k
Other Decks in Programming
See All in Programming
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
6.4k
霧の中の代数的エフェクト
funnyycat
1
400
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
180
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
140
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
110
AI時代の仕事技芸論〜ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ(スクフェス仙台 2026バージョン)
kuranuki
0
650
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
170
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
210
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
590
AIエージェントで 変わるAndroid開発環境
takahirom
2
680
継続モナドとリアクティブプログラミング
yukikurage
3
610
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.7k
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Facilitating Awesome Meetings
lara
57
7k
Ethics towards AI in product and experience design
skipperchong
2
330
What's in a price? How to price your products and services
michaelherold
247
13k
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
460
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
880
Code Reviewing Like a Champion
maltzj
528
40k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
The Invisible Side of Design
smashingmag
301
52k
Designing for Performance
lara
611
70k
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化やっていき