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
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
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
180
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
150
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
360
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
190
1B+ /day規模のログを管理する技術
broadleaf
0
140
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
9.1k
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
960
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
2
550
継続モナドとリアクティブプログラミング
yukikurage
3
610
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
260
Performance Engineering for Everyone
elenatanasoiu
0
270
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
510
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Design in an AI World
tapps
1
260
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
400
Everyday Curiosity
cassininazir
0
260
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
240
Bash Introduction
62gerente
615
220k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Tell your own story through comics
letsgokoyo
1
1k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
220
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
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化やっていき