Green 機能 B 機能 B 機能 A 機能B Service Istio で Blue / Green Deployment の実現 ◦ Istio により柔軟なトラフィック制御が可能 ▪ Blue / Green デプロイ ▪ カナリアデプロイ ◦ マイクロサービス間のトラフィックを可視化可能 ▪ 障害時等にも素早い原因調査が可能
POD POD POD POD POD POD POD POD POD Service A Service B Service C Service D Service E Load Balancer Load Balancer Load Balancer Load Balancer Load Balancer IP A IP B IP C IP D IP E External IP (type: LoadBalancer) hoge.uzabase.com fuga.uzabase.com ・・・ • Kubernetes の Service リソースに対して FQDN を解決させる必要がある ◦ 手運用で静的に名前解決の設定をするのでは生産性が落ちてしまう
各クラスタにドメインを与えてそれぞれの CoreDNS にフォワード Service Service Service Kubernetes POD POD Service Load Balancer Service Service Service Kubernetes POD POD Service Load Balancer Service Service Service Kubernetes POD POD Service Load Balancer cluster-a.uzabase.com hoge.uzabase.com Dnsmasq
Gateway *.fuga.lan *.hoge.lan b.svc.cluster.local 機能 A Pod A 機能 B Pod B • Istio によって各 POD にサイドカー Proxy がデプロイ ◦ POD に関する In / Out トラフィックが Proxy を経由 ▪ これによって Istio によってトラフィック制御が可能になる
Blue Green Istio Ingress Gateway 機能 A Kubernetes 機能 A Kubernetes VirtualService Resource DestinationRule Resource 論理的な経路 実際の経路 POD Inside Cluster Istio Ingress Gateway VirtualService Resource DestinationRule Resource POD Inside Cluster • subnet: blue であれば ◦ version: blue ラベルがついた POD に通信
Blue Green Istio Ingress Gateway 機能 A Kubernetes 機能 A Kubernetes VirtualService Resource DestinationRule Resource 論理的な経路 実際の経路 POD Inside Cluster VirtualService Resource