SlideShare a Scribd company logo
俺のKubernetes Workflow with HashiStack
Toru Makabe
Cloud Solution Architect at Microsoft
自己紹介
CODE EDITOR
apiVersion: selfIntroduction/v1
name: “真壁 徹(まかべ とおる)”
company:
name: “日本マイクロソフト株式会社”
role: “クラウド ソリューションアーキテクト”
love: “Cloud Computing & Craft Beer”
お伝えしたいこと
本日のお品書き
▪ Kubernetes における構成管理の課題
▪ 俺のGitOps (Terraform & Flux)
▪ 俺のWorkflow (Terraform Cloud & Visual Studio Code & GitHub Actions)
▪ Now Challenging… Consul Service Mesh on Kubernetes
Azureでの経験をもとに
お話しします
ですが、Terraformがサポートしているプラットフォームであれば
他でも参考になると思います
Kubernetes における
構成管理の課題
Kubernetesの環境、
何を使って作っていますか?
Terraform
CLI by Cloud Provider
Provisioning Tool by Cloud Provider (e.g. Azure Resource Manager Template)
Other
Kubernetesクラスターを作るだけで
出来上がるシステムは稀
Kubernetes クラスター
仮想マシン
外部リソース
(データストア、
シークレットストア、
監視サービス、etc)
Kubernetes リソース
(Deployment、DarmonSet、StorageClass、
Secret、ConfigMap、etc)
ネットワーク ストレージ
Kubernetes クラスター
外部リソース
(データストア、
シークレットストア、
監視サービス、etc)
仮想マシン ネットワーク ストレージ
Azureが提供するプロビジョニングツールの
カバー範囲
Kubernetes リソース
(Deployment、DarmonSet、StorageClass、
Secret、ConfigMap、etc)
Kubernetes リソース
(Deployment、DarmonSet、StorageClass、
Secret、ConfigMap、etc)
Kubernetes クラスター
外部リソース
(データストア、
シークレットストア、
監視サービス、etc)
仮想マシン ネットワーク ストレージ
Terraformの
カバー範囲
k8sの構成管理におけるTerraformの利点
Kubernetesクラスター外部のリソースも構成管理できる
DBなどデータストア、シークレットストア、監視サービス、etc
リソース間で設定情報を受け渡せる(識別子、IPアドレス、etc)
Kubernetesクラスター上のリソースも構成管理できる
TerraformのKubernetes/Helmプロバイダーを活用
だがしかし
リソースには属性の違いがある
ライフサイクルの違い
一度作成したらあまり変更がないリソース
アプリの機能追加や変更に合わせて頻繁、継続的に操作されるリソース
担当者の役割の違い
変更の影響、リスクや機密性の観点から、管理者に権限を限定したいリソース
スピード感や柔軟性を重視し、アプリ開発者にも権限を委譲したいリソース
Kubernetes クラスター
仮想マシン
外部リソース
(データストア、
シークレットストア、
監視サービス、etc)
Kubernetes リソース – Platform寄り
(Ingress Controller、DaemonSet、
StorageClass、Secret、ConfigMap、etc)
Kubernetes リソース – App寄り
(Deployment、Ingress、Secret、
ConfigMap,、etc)
ネットワーク ストレージ
分離!!
Kubernetes クラスター
仮想マシン
外部リソース
(データストア、
シークレットストア、
監視サービス、etc)
Kubernetes リソース – Platform寄り
(Ingress Controller、DaemonSet、
StorageClass、Secret、ConfigMap、etc)
Kubernetes リソース – App寄り
(Deployment、Ingress、Secret、
ConfigMap,、etc)
ネットワーク ストレージ
Terraformの
カバー範囲
管理者向けの
“Bootstrap”ツールと
位置付ける
Kubernetes クラスター
仮想マシン
外部リソース
(データストア、
シークレットストア、
監視サービス、etc)
Kubernetes リソース – Platform寄り
(Ingress Controller、DaemonSet、
StorageClass、Secret、ConfigMap、etc)
Kubernetes リソース – App寄り
(Deployment、Ingress、Secret、
ConfigMap,、etc)
ネットワーク ストレージ
Terraformの
カバー範囲
ここを
どうする?
俺のGitOps
(Terraform & Flux)
Kubernetes クラスター
仮想マシン
外部リソース
(データストア、
シークレットストア、
監視サービス、etc)
Kubernetes リソース – Platform寄り
(Ingress Controller、DaemonSet、
StorageClass、Secret、ConfigMap、etc)
Kubernetes リソース – App寄り
(Deployment、Ingress、Secret、
ConfigMap,、etc)
ネットワーク ストレージ
Terraform
Flux & Helm Operator
GitHub(*)
継続的な
pull & apply
構築時のapply
(*)経験上Bootstrapはレポジトリを分けることが多い
それぞれの位置づけ
Terraform - Bootstrapping
一度作成したらあまり変更しない or したくないリソース
GitOpsの準備を整える
Flux & Helm Operator – GitOps Continuous Configuration
Bootstrap後にGitHubから構成をpull、適用し続ける
Fluxの他にはArgo CDも人気がある印象
GitHub - Single Source of Truth
ここさえ見れば構成が分かる、と信頼できる情報源
Kubernetesクラスターを直接操作せず、変更はGitHubへ
作成・設定・維持対象リソース例
Flux & Helm Operator
User Application
(e.g. Deployment, Service, HPA, ConfigMap)
Cache
Utilities & Tools
(e.g. Kured, Prometheus)
Terraform
Azure Virtual Network
Azure Public IP Address (For Ingress)
Azure Kubernetes Service
Azure Monitor Integration
Kubernetes Storage Class
Flux & Helm Operator
Ingress Controller (e.g. NGINX)
Service Mesh (e.g. Consul)
作成・設定・維持対象リソース例
▪ 一度作成したら変更したくない or
させたくないリソース
▪ 管理者に操作権限を限定させたい
リソース
▪ Flux & Helm Operatorが動き出
す前に作成を完了したいリソース
▪ 作成、設定順序を意識するリソー
ス
Terraform
Azure Virtual Network
Azure Public IP Address (For Ingress)
Azure Kubernetes Service
Azure Monitor Integration
Kubernetes Storage Class
Flux & Helm Operator
Ingress Controller (e.g. NGINX)
Service Mesh (e.g. Consul)
作成・設定・維持対象リソース例
Flux & Helm Operator
User Application
(e.g. Deployment, Service, HPA, ConfigMap)
Cache
Utilities & Tools
(e.g. Kured, Prometheus)
▪ 継続的に変更するリソース
▪ アプリ開発者にも権限を委譲した
いリソース
▪ 作成、設定順序を意識しない、宣
言的構成管理、Kubernetes Way
に沿ったリソース
▪ Bootstrapで構成する強い理由が
ないリソース (Terraformでは
Kubernetes YAMLマニフェスト
をHCLに書き換える必要があるた
め)
俺のWorkflow
(Terraform Cloud &
Visual Studio Code &
GitHub Actions)
俺の開発環境
もろもろの要件&条件
▪ 開発端末はプロジェクトに合わせてWindowsもmacOSも使う
▪ いくつかの端末を使い分ける
▪ オフィスでもお客様先でも家でもコードを書く
▪ コードは一元管理したい
▪ Terraformのステートも一元管理したい
▪ 開発環境の設定も一元管理したい
Windows 10
WSL 2
VS Code
Remote
Dev. Ext.
Terraform
Ext. GitHub
Settings Sync
Ext.
macOS
VS Code
Terraform
Ext.
Settings Sync
Ext.
Terraform
Cloud
Git Terraform Git Terraform
State
Code &
VS Code settings
俺の開発環境
いつでも どこでも Terraform
▪ Terraform Cloudでステートを管理
▪ VS Codeの設定を複数端末で同期(Settings Sync拡張を利用)
– 同期機能は標準提供される予定(現在はInsidersで提供)
Terraform Visual Studio Code Extension
▪ v2からHashiCorpが開発をリード
▪ HCL 2やTerraform Language
Server対応など意欲的
▪ v2への移行に伴い、ややIssueが
多めですが、前向きにフィードバ
ックして育てていきましょう
https://github.com/hashicorp/vscode-terraform
俺のTerraform CI & Review
プルリク時にGitHub Actionsでplanし、レビューやマージ判断に活用
GitHub
Pull Request
Trigger
GitHub
Actions
• terraform fmt
• terraform init
• terraform plan
Result
applyの自動化は、あまりやっていません (技術的には可能ですが、リスクを考慮)
俺のKubernetes Workflow 全体像
Dev/Test Production
Apps Flow
Bootstrap
GitOps
参考: Azure Kubernetes Service インフラ ブートストラップ開発フロー&コードサンプル 2020春版
Now Challenging…
Consul Service Mesh
on Kubernetes
サービスメッシュの需要と必要性↑
正直、サービスメッシュが必要なプロジェクトは限られると感じていた
既存アプリの移行に使われる/妥当なケースは、あまりない(経験上)
技術やエコシステムの変化が激しく追従が大変
(Kubernetesだけでも激しいのに、サービスメッシュをそこに載せたら…)
採用が妥当と思えるプロジェクトが、少しずつ増えている印象
新しく作るシステムの共通機能としては非常に有用
(経路暗号化、トラフィック制御、可観測性向上、etc)
本気の相談をいただく機会も、少しずつ
Consul Connect
Service Mesh on k8s
激しく期待を込めて検証中
俺のConsul Connect Service Mesh on k8s
絶賛検証中
Consul
Server
Consul
Client
Consul
Connect &
Envoy
NGINX
Ingress
Controller
Backend
App
Frontend
App
Consul
Connect &
Envoy
Consul
Connect &
Envoy
構成管理4人衆
可観測性コンビ
現在の印象
かっちり動いて
開発のリード、ガバナンスに
安心感がある
おねだり‼
Consul
Server
Consul
Client
Consul
Connect &
Envoy
NGINX
Ingress
Controller
Backend
App
Frontend
App
Consul
Connect &
Envoy
Consul
Connect &
Envoy
構成管理4人衆
可観測性コンビ
代表的なIngress
Gatewayだけで構
わないので、もっ
と楽に設定したい
Helmで設定可
能な属性が増
えると幸せ
より容易な
統合手段があ
ると嬉しい
まとめ
お伝えしたかったこと
▪ Kubernetes における構成管理の課題
▪ 俺のGitOps (Terraform & Flux)
▪ 俺のWorkflow (Terraform Cloud & Visual Studio Code & GitHub Actions)
▪ Now Challenging… Consul Service Mesh on Kubernetes
俺の Kubernetes Workflow with HashiStack

More Related Content

PDF
インフラ野郎AzureチームProX
PDF
半日でわかる コンテナー技術 (応用編)
PDF
インフラ野郎 Azureチーム at クラウド boost
PDF
帰ってきた インフラ野郎 Azureチーム ~Azure データセンターテクノロジー解体新書2018春~ - de:code2018
PDF
Real World Azure RBAC
PDF
Essentials of container
PDF
俺とHashiCorp
PDF
Azure Infrastructure as Code 体験入隊
インフラ野郎AzureチームProX
半日でわかる コンテナー技術 (応用編)
インフラ野郎 Azureチーム at クラウド boost
帰ってきた インフラ野郎 Azureチーム ~Azure データセンターテクノロジー解体新書2018春~ - de:code2018
Real World Azure RBAC
Essentials of container
俺とHashiCorp
Azure Infrastructure as Code 体験入隊

What's hot (20)

PDF
Demystifying Identities for Azure Kubernetes Service
PDF
半日でわかる コンテナー技術 (入門編)
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PDF
ダイ・ハード in the Kubernetes world
PDF
Ingress on Azure Kubernetes Service
PDF
今改めて学ぶ Microsoft Azure 基礎知識
PDF
Azure Blueprints - 企業で期待される背景と特徴、活用方法
PDF
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
PDF
Azure update flash
PDF
一歩先行く Azure Computing シリーズ(全3回) 第2回 Azure VM どれを選ぶの? Azure VM 集中講座
PDF
de:code 2019 Cloud トラック 総まとめ! 完全版
PDF
Terraform Bootcamp - Azure Infrastructure as Code隊
PDF
コマンド1発でAzureにDC/OS環境を作る方法
PDF
クラウドネイティブガバナンスの実現
PDF
インフラCICDの勘所
PDF
インフラ廻戦 品川事変 前夜編
PDF
俺のサイジング
PDF
AWS 技術者向け Azure サービス解説 de:code2019版 #CD81
PDF
de:code 2019 Cloud トラック 総まとめ!
PDF
次世代の企業ITインフラを支えるエンジニアとは
Demystifying Identities for Azure Kubernetes Service
半日でわかる コンテナー技術 (入門編)
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
ダイ・ハード in the Kubernetes world
Ingress on Azure Kubernetes Service
今改めて学ぶ Microsoft Azure 基礎知識
Azure Blueprints - 企業で期待される背景と特徴、活用方法
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
Azure update flash
一歩先行く Azure Computing シリーズ(全3回) 第2回 Azure VM どれを選ぶの? Azure VM 集中講座
de:code 2019 Cloud トラック 総まとめ! 完全版
Terraform Bootcamp - Azure Infrastructure as Code隊
コマンド1発でAzureにDC/OS環境を作る方法
クラウドネイティブガバナンスの実現
インフラCICDの勘所
インフラ廻戦 品川事変 前夜編
俺のサイジング
AWS 技術者向け Azure サービス解説 de:code2019版 #CD81
de:code 2019 Cloud トラック 総まとめ!
次世代の企業ITインフラを支えるエンジニアとは
Ad

Similar to 俺の Kubernetes Workflow with HashiStack (20)

PDF
Building andobservingcloudnativeappliactionusingazure elastic-terraform
PDF
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
PDF
VMware が考えるコンテナと Kubernetes の世界
PDF
20191209 hccjp azure-stackhub_overview
PPTX
Java on Kubernetes on Azure
PDF
Rancher/k8sを利用した運用改善の取り組み(Rancher Day 2019)
PDF
Kubecon NA 2019 Recap: Your Path to Production Ready Kubernetes hosted by Wea...
PPTX
Container x azure x kubernetes
PDF
クラスターを分割するという運用の現実解
PDF
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
PPTX
K8s meetup containerized_cloud_foundry
PDF
Infrastructure as code for azure
PPTX
AKS on Azure Stack HCI/Windows Serverのデプロイ _ Deploying AKS on Azure Stack HCI...
PPTX
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料
PDF
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
PDF
Hccjp rancher+azurearc 201009
PDF
OpenStack上の環境構築自動化に向けたTerraform/Pulumiの活用
PPTX
Step by stepで学ぶTerraformによる監視付きAWS構築
PDF
ConsulとNomadで簡単クッキング
PDF
俺のTerraform CI/CD ライフサイクル
Building andobservingcloudnativeappliactionusingazure elastic-terraform
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
VMware が考えるコンテナと Kubernetes の世界
20191209 hccjp azure-stackhub_overview
Java on Kubernetes on Azure
Rancher/k8sを利用した運用改善の取り組み(Rancher Day 2019)
Kubecon NA 2019 Recap: Your Path to Production Ready Kubernetes hosted by Wea...
Container x azure x kubernetes
クラスターを分割するという運用の現実解
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
K8s meetup containerized_cloud_foundry
Infrastructure as code for azure
AKS on Azure Stack HCI/Windows Serverのデプロイ _ Deploying AKS on Azure Stack HCI...
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
Hccjp rancher+azurearc 201009
OpenStack上の環境構築自動化に向けたTerraform/Pulumiの活用
Step by stepで学ぶTerraformによる監視付きAWS構築
ConsulとNomadで簡単クッキング
俺のTerraform CI/CD ライフサイクル
Ad

More from Toru Makabe (12)

PDF
ミッション : メガクラウドを安全にアップデートせよ!
PDF
Resilience Engineering on Kubernetes
PDF
Azure Kubernetes Service 2019 ふりかえり
PDF
NoOps Japan Community 1st Anniversary 祝辞
PDF
ZOZOTOWNのCloud Native Journey
PDF
Ops meets NoOps
PDF
インフラエンジニア エボリューション ~激変する IT インフラ技術者像、キャリアとスキルを考える~ at Tech Summit 2018
PDF
インフラ野郎 Azureチーム v18.11 at Tech Summit 2018
PDF
NoOps?よろしいならば戦争だ
PDF
Azure Design Review Checklist Availabilityの巻
PDF
インフラ野郎 Azureチーム 博多夏祭り
PDF
Azure Virtual Data Centerで学ぶ 企業向けAzureネットワーク設計
ミッション : メガクラウドを安全にアップデートせよ!
Resilience Engineering on Kubernetes
Azure Kubernetes Service 2019 ふりかえり
NoOps Japan Community 1st Anniversary 祝辞
ZOZOTOWNのCloud Native Journey
Ops meets NoOps
インフラエンジニア エボリューション ~激変する IT インフラ技術者像、キャリアとスキルを考える~ at Tech Summit 2018
インフラ野郎 Azureチーム v18.11 at Tech Summit 2018
NoOps?よろしいならば戦争だ
Azure Design Review Checklist Availabilityの巻
インフラ野郎 Azureチーム 博多夏祭り
Azure Virtual Data Centerで学ぶ 企業向けAzureネットワーク設計

俺の Kubernetes Workflow with HashiStack