SlideShare une entreprise Scribd logo
1  sur  69
Traffic Management
with Istio
2019/07/11 #ふくばねてす node-2
loftkun
About me
• @loftkun
• 将棋好き
• 対局結果検索サイトなど公開してます
• 音楽好き
• ROCK IN JAPAN FESTIVAL 行きます
• ピアノ習いたい
• コンテナ好き、k8sは前職で使ってた、現職でも使いたい
Event
Bot 福岡新着ITイベント
@ITEventFukuoka
My k8s Environment
Machine
CPU Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz 6C/12T
RAM 64GB
OS Ubuntu 17.10
k8s
minikube v1.2.0 ( Kubernetes v1.15.0 )
kubectl v1.15.0
istio v1.2.2
helm v2.14.1
minikube start vm-driver=virtualbox
Container
VM ( Node )
Minikube
BareMetal
ssh -fNL 12345:192.168.99.100:12345 loft@192.168.3.5
192.168.3.5
grafana service のnodePortが12345の場合
http://localhost:12345 でアクセスできるぞ
192.168.99.100
192.168.3.4
Minikube ssh
でログイン可能
minikube start vm-driver=none
Container
Minikube
BareMetal192.168.3.5
( Node )
grafana service のnodePortが12345の場合
http://192.168.3.5:12345 でアクセスできるぞ
192.168.3.4
minikube start vm-driver=none
Container
Minikube
BareMetal192.168.3.5
( Node )
grafana service のnodePortが12345の場合
http://192.168.3.5:12345 でアクセスできるぞ
192.168.3.4
tcpdump –i docker0
全Pod間の通信をキャプチャできるぞ
Agenda
Introduction
How to use
Bookinfo
Traffic Management
Tools
Introduction
What is Istio?
https://istio.io/
• サービスメッシュを構成するOSS
• CNCF Platinum Member
• Pod内にProxyコンテナ(Envoy)をSidecarとしてInjectionして利用する
• ruleをapplyすることで様々な制御が可能(後ほどご紹介)
• 便利なメトリクスや、サービスメッシュの可視化ツールも同梱されている
• v1.2でDatadogへのメトリクス送信に対応
• Rancher 2.3 Preview 2 がIstioに対応
What is Istio?
• 既存の分散アプリケーションの上に透過的に重なる完全なオープンソースのサービス
メッシュ
• 分散型マイクロサービスアーキテクチャを正常にかつ効率的に実行でき、マイクロ
サービスを安全に接続し、監視する統一的な方法を提供する
https://istio.io/docs/concepts/what-is-istio/
What is a service mesh?
https://istio.io/docs/concepts/what-is-istio/
• 以下を含む
• ディスカバリ
• ロードバランシング
• 障害回復
• メトリック
• モニタリング
• 複雑な運用要件も含む
• A / Bテスト
• カナリーロールアウト
• レート制限
• アクセス制御
• エンドツーエンド認証など
Why use Istio?
• コードを変更することなく、ロードバランシング、サービス
間認証、監視などのサービスをdeployしたネットワーク
を簡単に作成できる
https://istio.io/docs/concepts/what-is-istio/
Core features
• Traffic management
• Security
• Observability ( 可観測性 )
• Platform support
• Integration and customization
https://istio.io/docs/concepts/what-is-istio/
• Traffic management
• サービス間のトラフィックとAPIコールの流れを制御できる
• Security
• 安全な通信チャネルを提供し、サービス通信の認証、承認、および暗号
化を大規模に管理
• Observability(可観測性)
• 強力なトレース、監視、およびログ記録機能
https://istio.io/docs/concepts/what-is-istio/
• platform-independent (プラットフォーム非依存)
• Kubernetes
• Consul
• VM
• Integration and customization
• 既存のソリューションと統合するように拡張およびカスタマイズできる
• ACL
• ログ記録
• 監視
• クォータ
• 監査など
https://istio.io/docs/concepts/what-is-istio/
Proxy
Proxy
Architecture
Proxy
Mixer
Pilot
config
metrics
data plane
control plane
https://istio.io/docs/concepts/what-is-istio/
data plane
a set of Proxies
https://istio.io/docs/concepts/what-is-istio/
control plane
manages and
configures the proxies
to route traffic
https://istio.io/docs/concepts/what-is-istio/
Mixer
collects telemetry
data from the
Envoy proxy and
other services
帆?
Sea・・・
Kubernetes 操舵手(ギリシャ語)
Helm 舵
tiller 舵柄(かじを操作するレバー)
Istio 帆(ギリシャ語)
Spinnaker 大きな三角形の帆
How to use
Install  Sidecar Injection  Apply rule
Install
Use Helm?
$ kubectl apply istio-
demo.yaml
Cluster has tiller?
$ helm template istio
| kubectl apply
$ helm install
istio
N
N
Y
Y
Helm Chart
• incubator/istioはメンテが止まってるので使わない
• istio.ioのdoc記載の最新版をdownloadして使おう
Sidecar Injection
• 2way
• Automatic
• Manual
$ kubectl label namespace my-namespace istio-injection=enabled
対象のnamespaceにラベルを設定しておくだけでOK!
istioctl kube-injectコマンドを利用してSidecarを埋め込む
$ kubectl apply -f < ( istioctl kube-inject -f my-manifests.yaml )
Manual ( Helm Chart )
helm fetch stable/neo4j
helm template neo4j-0.9.0.tgz > neo4j.yaml
istioctl kube-inject -f ./neo4j.yaml > ./neo4j-injected.yaml
kubectl apply –f ./neo4j-injected.yaml
• chartのmanifestを出力する
• istioctl kube-injectコマンドを利用し、Sidecarが埋め込まれたyaml
を生成する
• 生成したyamlをapplyする
neo4j.yaml neo4j-injected.yaml
neo4j.yaml neo4j-injected.yaml
istio-proxyコンテナ
Apply rule
kubectl apply –f ./rule.yaml
• Reviewsサービスへのリクエストをルーティングするルールの例
• VirtualService
• Routing を定義する
• その他様々な設定が可能(後ほどご紹介)
Bookinfo
Istioのサンプルアプリ
review v1のレスポンス
reload
review v2のレスポンス(黒い星)
reload
review v3のレスポンス(赤い星)
Architecture
https://istio.io/docs/examples/bookinfo/
Architecture round-robin ( by reviews service )
https://istio.io/docs/examples/bookinfo/
After Sidecer Injection
Let’s Traffic Management !
Traffic Management
Routing, Shifting, Fault Injection
Request Routing
review v1のレスポンス(星なし)
Request Routing (headers)
review v1のレスポンス(星なし)
Canary Release に使えそう! review v2のレスポンス(黒い星)
Traffic Shifting
review v1のレスポンス(星なし)
Canary Release に使えそう! review v3のレスポンス(赤い星)
Fault Injection (delay )
Injected
Delay : 7sec
hard-corded
Timeout : 10sec
Injected
Delay : 7sec
hard-corded
Timeout : 3sec
Retry : 1
hard-corded
Timeout : 10sec
Injected
Delay : 7sec
Chaos Engineering に使えそう!
Other Traffic Managements
• Circuit Breaking
• Mirroring
and more !
https://istio.io/docs/tasks/traffic-management/
Tools
便利なOSSたち
Prometheus
• 経路毎のメトリクスを取得できる
• istio_requests_total{destination_service="reviews.default.svc.cluste
r.local", destination_version="v3"}
Prometheus/Grafana
• Istio Dashboard
• Istio Galley Dashboard
• Istio Mesh Dashboard
• Istio Mixer Dashboard
• Istio Performance Dashboard
• Istio Pilot Dashboard
• Istio Service Dashboard
• Istio Workload Dashboard
Kiali
• サービスメッシュをGraph構造として可視化できる
• https://www.kiali.io/
Let’s Traffic Management
with Istio!
Thank you for listening !

Contenu connexe

Tendances

静岡のHaskellerはEmacsを使う
静岡のHaskellerはEmacsを使う静岡のHaskellerはEmacsを使う
静岡のHaskellerはEmacsを使うKazufumi Ohkawa
 
Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1Hidetoshi Hirokawa
 
Githubを使って簡単に helm repoを公開してみよう
Githubを使って簡単に helm repoを公開してみようGithubを使って簡単に helm repoを公開してみよう
Githubを使って簡単に helm repoを公開してみようShingo Omura
 
Open shiftoriginquickstart clouddevelopercircle_20170920
Open shiftoriginquickstart clouddevelopercircle_20170920Open shiftoriginquickstart clouddevelopercircle_20170920
Open shiftoriginquickstart clouddevelopercircle_20170920kei omizo
 
OCP Meetup Tokyo #05 ECK on OCP
OCP Meetup Tokyo #05 ECK on OCPOCP Meetup Tokyo #05 ECK on OCP
OCP Meetup Tokyo #05 ECK on OCPTetsuya Sodo
 
A quick tour of the Cysharp OSS
A quick tour of the Cysharp OSSA quick tour of the Cysharp OSS
A quick tour of the Cysharp OSSYoshifumi Kawai
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみましたShuntaro Saiba
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionYoshifumi Kawai
 
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみたKubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみたAkihito Inoh
 
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化Masashi Shinbara
 
OpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? WayOpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? Wayロフト くん
 
Red Hat Forum Tokyo 2019 - Red Hat on Azure
Red Hat Forum Tokyo 2019 - Red Hat on AzureRed Hat Forum Tokyo 2019 - Red Hat on Azure
Red Hat Forum Tokyo 2019 - Red Hat on Azurekei omizo
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE辰徳 斎藤
 
Fabricによるcloud stackインストール自動化
Fabricによるcloud stackインストール自動化Fabricによるcloud stackインストール自動化
Fabricによるcloud stackインストール自動化hiroyuki nakajima
 
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)Akihiro Suda
 
Virtuoso 7 Install Guide for Ubuntu 12.10 (64bit)
Virtuoso 7 Install Guide for Ubuntu 12.10 (64bit)Virtuoso 7 Install Guide for Ubuntu 12.10 (64bit)
Virtuoso 7 Install Guide for Ubuntu 12.10 (64bit)Yusuke Komiyama
 
runC概要と使い方
runC概要と使い方runC概要と使い方
runC概要と使い方Yuji Oshima
 
Docker registry入門 第五回コンテナ型仮想化の情報交換会
Docker registry入門 第五回コンテナ型仮想化の情報交換会Docker registry入門 第五回コンテナ型仮想化の情報交換会
Docker registry入門 第五回コンテナ型仮想化の情報交換会Kengo Okitsu
 

Tendances (20)

静岡のHaskellerはEmacsを使う
静岡のHaskellerはEmacsを使う静岡のHaskellerはEmacsを使う
静岡のHaskellerはEmacsを使う
 
Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1
 
Githubを使って簡単に helm repoを公開してみよう
Githubを使って簡単に helm repoを公開してみようGithubを使って簡単に helm repoを公開してみよう
Githubを使って簡単に helm repoを公開してみよう
 
Open shiftoriginquickstart clouddevelopercircle_20170920
Open shiftoriginquickstart clouddevelopercircle_20170920Open shiftoriginquickstart clouddevelopercircle_20170920
Open shiftoriginquickstart clouddevelopercircle_20170920
 
OCP Meetup Tokyo #05 ECK on OCP
OCP Meetup Tokyo #05 ECK on OCPOCP Meetup Tokyo #05 ECK on OCP
OCP Meetup Tokyo #05 ECK on OCP
 
A quick tour of the Cysharp OSS
A quick tour of the Cysharp OSSA quick tour of the Cysharp OSS
A quick tour of the Cysharp OSS
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
 
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみたKubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
 
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
 
OpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? WayOpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? Way
 
Red Hat Forum Tokyo 2019 - Red Hat on Azure
Red Hat Forum Tokyo 2019 - Red Hat on AzureRed Hat Forum Tokyo 2019 - Red Hat on Azure
Red Hat Forum Tokyo 2019 - Red Hat on Azure
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
 
Fabricによるcloud stackインストール自動化
Fabricによるcloud stackインストール自動化Fabricによるcloud stackインストール自動化
Fabricによるcloud stackインストール自動化
 
対話AI on Kubernetes
対話AI on Kubernetes対話AI on Kubernetes
対話AI on Kubernetes
 
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
 
NDS#31
NDS#31NDS#31
NDS#31
 
Virtuoso 7 Install Guide for Ubuntu 12.10 (64bit)
Virtuoso 7 Install Guide for Ubuntu 12.10 (64bit)Virtuoso 7 Install Guide for Ubuntu 12.10 (64bit)
Virtuoso 7 Install Guide for Ubuntu 12.10 (64bit)
 
runC概要と使い方
runC概要と使い方runC概要と使い方
runC概要と使い方
 
Docker registry入門 第五回コンテナ型仮想化の情報交換会
Docker registry入門 第五回コンテナ型仮想化の情報交換会Docker registry入門 第五回コンテナ型仮想化の情報交換会
Docker registry入門 第五回コンテナ型仮想化の情報交換会
 

Similaire à Traffic Management with Istio

Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションKubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションTakashi Kanai
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Preferred Networks
 
Introduction of skippbox
Introduction of skippboxIntroduction of skippbox
Introduction of skippboxGo Chiba
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみたKatsutoshi Nagaoka
 
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)Satoshi Shimazaki
 
CyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengeCyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengewhywaita
 
OpenStack with SR-IOV
OpenStack with SR-IOVOpenStack with SR-IOV
OpenStack with SR-IOVHideki Saito
 
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版VirtualTech Japan Inc.
 
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi  (July tech festa winter 2021)もっとも簡単なKubernetes構築 on Raspberry pi  (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)Kamon Nobuchika
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)シスコシステムズ合同会社
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"Masaya Aoyama
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021Preferred Networks
 
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜Shuji Yamada
 
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloudNaoto Gohko
 
OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016VirtualTech Japan Inc.
 
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-clusterKubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-clusterPreferred Networks
 
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)Satoshi Shimazaki
 
今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門Toru Miyahara
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門Masahito Zembutsu
 

Similaire à Traffic Management with Istio (20)

Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションKubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
 
Introduction of skippbox
Introduction of skippboxIntroduction of skippbox
Introduction of skippbox
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみた
 
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
 
CyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengeCyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallenge
 
OpenStack with SR-IOV
OpenStack with SR-IOVOpenStack with SR-IOV
OpenStack with SR-IOV
 
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
 
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi  (July tech festa winter 2021)もっとも簡単なKubernetes構築 on Raspberry pi  (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
 
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
 
OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016
 
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-clusterKubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
 
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
 
今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 

Plus de ロフト くん

OpenShiftのサポートを始めるぞ!高頻度で更新されるOSSを効果的にキャッチアップする仕組みを考えました!
 OpenShiftのサポートを始めるぞ!高頻度で更新されるOSSを効果的にキャッチアップする仕組みを考えました! OpenShiftのサポートを始めるぞ!高頻度で更新されるOSSを効果的にキャッチアップする仕組みを考えました!
OpenShiftのサポートを始めるぞ!高頻度で更新されるOSSを効果的にキャッチアップする仕組みを考えました!ロフト くん
 
Demo of write slides and books with VSCode + Markdown
Demo of write slides and books with VSCode + MarkdownDemo of write slides and books with VSCode + Markdown
Demo of write slides and books with VSCode + Markdownロフト くん
 
Write slides and books in VSCode + Markdown
Write slides and books in VSCode + MarkdownWrite slides and books in VSCode + Markdown
Write slides and books in VSCode + Markdownロフト くん
 
Kubernetes The Hard Way をやってみた
Kubernetes The Hard Way をやってみたKubernetes The Hard Way をやってみた
Kubernetes The Hard Way をやってみたロフト くん
 
Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )ロフト くん
 
Getting Started with Graph Database with Python
Getting Started with Graph Database with PythonGetting Started with Graph Database with Python
Getting Started with Graph Database with Pythonロフト くん
 
AbemaTVのコメントビューアを作る話
AbemaTVのコメントビューアを作る話AbemaTVのコメントビューアを作る話
AbemaTVのコメントビューアを作る話ロフト くん
 
Enjoying k8s cluster with Minikube and Helm
Enjoying k8s cluster with Minikube and HelmEnjoying k8s cluster with Minikube and Helm
Enjoying k8s cluster with Minikube and Helmロフト くん
 

Plus de ロフト くん (8)

OpenShiftのサポートを始めるぞ!高頻度で更新されるOSSを効果的にキャッチアップする仕組みを考えました!
 OpenShiftのサポートを始めるぞ!高頻度で更新されるOSSを効果的にキャッチアップする仕組みを考えました! OpenShiftのサポートを始めるぞ!高頻度で更新されるOSSを効果的にキャッチアップする仕組みを考えました!
OpenShiftのサポートを始めるぞ!高頻度で更新されるOSSを効果的にキャッチアップする仕組みを考えました!
 
Demo of write slides and books with VSCode + Markdown
Demo of write slides and books with VSCode + MarkdownDemo of write slides and books with VSCode + Markdown
Demo of write slides and books with VSCode + Markdown
 
Write slides and books in VSCode + Markdown
Write slides and books in VSCode + MarkdownWrite slides and books in VSCode + Markdown
Write slides and books in VSCode + Markdown
 
Kubernetes The Hard Way をやってみた
Kubernetes The Hard Way をやってみたKubernetes The Hard Way をやってみた
Kubernetes The Hard Way をやってみた
 
Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )
 
Getting Started with Graph Database with Python
Getting Started with Graph Database with PythonGetting Started with Graph Database with Python
Getting Started with Graph Database with Python
 
AbemaTVのコメントビューアを作る話
AbemaTVのコメントビューアを作る話AbemaTVのコメントビューアを作る話
AbemaTVのコメントビューアを作る話
 
Enjoying k8s cluster with Minikube and Helm
Enjoying k8s cluster with Minikube and HelmEnjoying k8s cluster with Minikube and Helm
Enjoying k8s cluster with Minikube and Helm
 

Traffic Management with Istio

Notes de l'éditeur

  1. Traffic Management with Istio の発表を始めます、よろしくおねがいします
  2. 自己紹介です
  3. 勉強会などのイベントは週1以上のペースで行ってます 今週はgo con、来週は火曜日にFusicさんでクラウドネイティブ、木曜日にLINE Meetupや、土曜日にengineer dayなどがあって楽しみですね 登壇も平均月1のペースで実施しています、今までk8s関連ではHelmやSkaffoldについて話しました Go言語も手を出しましてAbemaTVのコメントビューアを作るLTをしたりしました。 スライドはspeakerdeck.com/loftkunにアップしています
  4. connpassのイベントを福岡で検索するのが日課だったのですが、めんどくさくなったのでbotを作りました ぜひフォローよろしくおねがいします。
  5. まず、kuberenetes環境を紹介します
  6. 自宅のマシンです。たしか2年前にドスパラでBTOで買いました。 CPUはcore i7 8700K 3.7GHz 6コア12スレッド、メモリは奮発して64GBです。 OSはそろそろ入れ直したいな K8s関連ツールは現在の最新版を入れています。 登壇が決まったことをトリガしてアップデートしてる感じです。 Minikubeには12cpu、40GBを割り当てています
  7. BareMetalのスペックが前のスライドにのせていたものです この上でminikubeが動いています Minikubeの起動引数でvm-driverにvirtualboxなどのハイパバイザを指定すると、VMが立ち上がります、これがkubernetesのノードになります 今の所minikubeはシングルノードクラスタとして開発されているのでノード数は1になります。 (minikubeのロードマップやIssueを見るとマルチノード化は予定されてて議論はされているようです) 左下のMacが普段作業に使ってるマシンです。 このsshコマンドのように BareMetalを踏み台サーバとしてそこから見たVM内で動いているWebアプリのportを、フォワーディングさせることで、 Mac上のブラウザでWeb画面を見たりしています。 このテクニックでkubectlが入ってないマシンでもNodePortのWebアプリを見れます。
  8. こちらはminikubeの起動引数にvm-driverなしを指定した場合です。 この場合はVMは起動せずに、ベアメタルそのものがk8sのノードになります。 この場合はシンプルに、Mac上のブラウザからはベアメタルのIPアドレス指定でWeb画面を見れます
  9. また、ベアメタル上のdockerのインタフェースのパケットをキャプチャすることで 全Podの通信を1つのpcapファイルにキャプチャできます。
  10. [02:00] アジェンダです Istioの紹介と、導入手順を紹介します。 その後、Istioが提供しているサンプルアプリBookInfoと、BookInfoを題材にIstioでTraffic Managementする手順を紹介します。 最後にIstioに付随してくるOSSを紹介します。
  11. まずはIstioについて紹介します
  12. 読む
  13. CNCFのランドスケープです、この中では
  14. SeviceMeshのこの位置に乗っています。探すのに何分かかかりそうですね
  15. Istio公式にWhat is Istioというドキュメントがあります、そこから説明を抜粋してきました 読む 既存のアプリケーションの上にサービスメッシュのレイヤを構築するととらえてよさそうですね
  16. What is a サービスメッシュという章もありました が サービスメッシュとはこれだ!という説明はなかったです、代わりに何が含まれるかが説明されていました。
  17. Why use Istio の章には、このような理由がのっていました
  18. 主要な機能は5項目掲載されていました 今回紹介するTraffic Management セキュリティ オブザーバヴィリティ( 可観測性 ) プラットフォームサポート インテグレーション アンド カスタマイゼイション
  19. 軽く抜粋しました。 読む
  20. アーキテクチャの章から主要なコンポーネントを抜粋しました ProxyはアプリケーションのPodにサイドカーコンテナとして埋め込まれます このレイヤはdata planeと呼ばれます このProxyへの設定は Pilot から Mixierを通じて設定されます PilotやMixierのいるレイヤはcontrol planeと呼ばれます
  21. こちらがwhat is istioに記載されている全体像です Data planeはproxyの集合です 具体的にはenvoyが使われてます
  22. Pilot は Envoyの設定を行います
  23. MixerはEnvoyからメトリクスを収集します Mixerもコントロールプレーンに含まれるようですが、データプレーンとのインタフェースもつ橋渡しのような位置付けですね control plaenには、他に、configのバリデーションを行うGalleyや、認証処理を行うCitadel(スィタデル?)がいます
  24. Istioのロゴです、ヨットに見えますね
  25. 調べてみると、k8s関連OSSは海関連の言葉がよく使われているようです 舵柄 は かじづか と読むらしいです Spinnakerはクラスタを対象としたCDツールです k8s関連のOSSを開発する際は海関連のネーミングにすると親和性がよいかもしれません
  26. [07:00] ここでまんなかくらい Istioの導入手順を紹介します 基本的にはInstall -> SideCar InjectionしてEnvoyを埋め込む -> ルールの適用 の流れになります
  27. インストール方法は大きく3つあります Helmを使用しない場合は、インストール用のマニフェストが用意されているのでそれをapplyします Helmを使用する場合で、tillerがない場合は、helm templateコマンドでマニフェストを生成してapplyします Tillerがある場合はHelm install コマンドでインストールします Helmを使用するとテンプレートに対して設定値を渡せるので便利です 例えばIstioに付随するOSSを一緒にデプロイするかどうかの設定などがあります。 Helmのチャートとしては、読む
  28. Helmのイントールが完了したら、 Istioの管理下に置きたいアプリケーションをデプロイします。 その際、Sidecarを埋め込む方法として2つの方法があります 1つめはAutomatic injectionで、namespaceにラベルを設定しておくと、 そのnamespaceにデプロイされるアプリには自動的にenvoyが埋め込まれます もう1つはManual injectionでistioctl kube-injectコマンドを使用してenvoyを埋め込んだマニフェストを生成する方法です
  29. また、Helmでインストールできるアプリケーションに対してManual Injcetionを行いたい場合は、 Helm templateコマンドでマニフェストを出力しておいて、 そのマニフェストに対して、istioctl kube-injectコマンドでinjectionする方法があります
  30. 埋め込み前後のマニフェストの比較です 左が埋め込み前、右が埋め込み後で、(次ページへ)
  31. 右側には確かにistio/proxyというコンテナが追加されていることがわかります
  32. SideCar Injectionが完了したら、Istioが提供する様々なルールを適用したり、メトリクスを取得したりできます。 これは次の章で紹介するBookInfoというサンプルアプリのreviewsサービスへのアクセスを、バージョン1に固定するルーティングのルールの例です このようなルールをVirtualServiceというリソース?に書くことができます。
  33. [09:00] IstioのサンプルアプリBookInfoについて紹介します
  34. WebUIはこのような外観です 本のデータベースを見れるという体裁です(が、実際には1冊しか見れないです) 左が本の詳細 右が本のレビューになっています。レビューの部分はレビューサービスからのレスポンスが表示されています。
  35. リロードすると、右側のレビューに星が表示されました。 星はアマゾンなどのレビューによくあるような、レーティングを表しています。 この黒い星が表示されているときは、レビューアプリのv2からのレスポンスが表示されています。
  36. さらにリロードすると、右側のレビューに赤い星が表示されました。 赤い星が表示されているときは、レビューアプリののv3からのレスポンスが表示されています。
  37. BookInfoの構成です ブラウザからのリクエストはproductpageというサービスに届きます。 Productpageサービスは、pythonのflaskで実装されています。 レビューサービスにリクエストを投げてWeb画面の右側に表示する情報を取得します また、ディティールサービスにリクエストを投げてWeb画面の左側に表示する情報を取得します、ブラウザにレスポンスを返します。 (次ページへ)
  38. レビュサービスはjava(JAX-RS)で実装されています。v1 , v2 , v3の3バージョンが用意されていて、 レビューサービスのデフォルト設定でラウンドロビンで切り替わります。 レビューアプリののv2とv3はレーティングスサービスからレーティング情報を取得してそれぞれの色で星を描画します。 レーティングサービスはnodeで実装されています。
  39. このアプリケーションに対して、先ほど紹介したautomatic か manualの方法で全てのpodにSidecarをInjecrtionしてIstioの管理下に置きます。 Istioの提供する様々なルールを適用してTrafic managemantができるようになります。 ここまでがBookInfoを題材としたIstioの導入例になります。
  40. [11:30] IstioのTraffic Management機能を紹介します。
  41. これはreviesサービスへのアクセスをv1に限定するルールです。
  42. このルールを適用すると、何度リロードしてもレビューv1アプリのレスポンスが表示されます
  43. さらにHTTP ヘッダに含まれる情報でルーティングする設定を加えてみます ヘッダにユーザ名としてjasonという情報が含まれている場合、レビューv2にルーティングする設定です。
  44. ログインしていない場合は変わらず、レビューv1のレスポンスが表示されます
  45. Jasonというユーザ名でログインしてみます。 これはサンプルアプリなのでパスワードはなんでもよい、入力しなくてもログインできます
  46. 設定どおり、レビューv2のレスポンスが表示されました 特定のユーザに新バージョンを見せられるので、βテストやカナリアリリースに使えそうですね
  47. これは、経路に対してルーティングの重み付けをする設定です。
  48. リロードすると半分の割合で、レビューv1と
  49. V3のレスポンスが表示されます。 カナリアリリースで、少しずつ新バージョンへのトラフィックを増やしていく用途に使えそうですね。
  50. これは失敗を注入する設定で、レーティングサービスへの呼び出しに、7秒のディレイを注入しています この設定だけをみると全体が7secかかるようになるように見えるが、、、、
  51. なんとreviewsの情報が表示できてないという結果になりました、なぜだろう?
  52. これには裏があり、、、
  53. まず、遅延を7秒挿入しているが、こちらのrevewアプリにハードコーディングされているTimeout時間は10秒なのでここはタイムアウトはしない
  54. ただし、ここのproductpage側にハードコーディングされているTimeoutは3秒なのでこちらの方がタイムアウトする さらにリトライ回数も1回ハードコーディングされているので、全体としては、3sec かける 2回分の6秒かかる 設定だけをみると7secの遅延が加算されのですが、 実際の挙動には各マイクロサービス間のタイムアウト設定とリトライ設定が影響してきます、 カオスエンジニアリングに使えそうですね
  55. この辺りの挙動は、実際にパケットが見えると把握しやすいです。 はじめに紹介した方法でDocker の ネットワークインタフェースからパケットをキャプチャするとPod間の通信が確認できるので、 リトライによる通信が何回発生しているかなどの確認に役立ちます。
  56. 他にもリリース戦略や運用に役立ちそうな様々なルールが用意されています。 ここまで、IstioのTraffic Managementについて紹介しました。
  57. [13:30] 最後にIstioに付随するツールを紹介します
  58. まずPrometheusです マイクロサービス間の経路ごとにメトリクスを取得できます。 例えばレスポンスコード毎のリクエスト数などです。
  59. Grafananにはこのようなダッシュボードが入っています
  60. サービス毎のリクエストやレイテンシが確認できたり、
  61. 負荷が確認できます
  62. また、マイクロサービスの構成をグラフ構造として可視化できるキアリというOSSも同梱されています
  63. これはBookInfoの構成を可視化してみた画面です、 実際に発生したトラフィックをもとに描画されるので、呼び出しの経路が確認できるのが便利です Istioに付随するOSSを紹介しました。
  64. [14:45] Let’s Traffic Management with Istio ということで発表を終わります。 ごせいちょうありがとうございました。