BRKETI-2003 - Understanding Multicluster Kubernetes Connectivity Options
BRKETI-2003 - Understanding Multicluster Kubernetes Connectivity Options
Understanding Multicluster
Kubernetes Connectivity
Options
Shannon McFarland – CCIE #5245
Distinguished Engineer
@eyepv6
BRKETI-2003
#CiscoLive
Cisco Webex App
Questions?
Use Cisco Webex App to chat
with the speaker after the session
How
1 Find this session in the Cisco Live Mobile App
2 Click “Join the Discussion”
3 Install the Webex App or go directly to the Webex space Enter your personal notes here
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 3
• Multicluster Connectivity – Pain points
• Kubernetes Services, Ingress, Load
Balancer
Agenda • Cilium Cluster Mesh
• Service Mesh
• Linkerd
• Istio
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 4
Multicluster Connectivity – What is all the
fuss about?
• There are several reasons for establishing connectivity between Kubernetes clusters
to include:
• Service load balancing
• Data replication Network
• Service dependencies Services
• Partner-provided service connectivity FW VPN
• etc..
• Today, many assumptions are made about the underlying infrastructure that exists
underneath and in between these clusters:
• Use ingress/load balancers and let basic networking and name resolution sort it out CNI CNI
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 5
Multicluster Connectivity – Options Galore!
• There are many solutions for linking workloads that are hosted on different
Kubernetes clusters – let’s look at a few of them
• CNI-based
• Cilium Cluster Mesh – Global load balancing is great – Service-to-service can be
dicey
• Gateway-based
• Submariner – A Layer 3/4 centric approach – Service-to-service is a strength -
Not the smoothest implementation
• Application Service Mesh-based – Layer 4/7 networking, robust security
and observability
• Linkerd
• Istio
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 6
A Couple of Use Cases
Global Load Balancing
Service-to-Service/Pod-to-Pod
DN DN
S S
Load Balancer Load Balancer
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 7
Reference
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 8
Kubernetes
Services, Ingresses,
Load Balancers
K8s Multicluster Connectivity – Using Ingress,
Services, LBs
Networking Service
VPC peering, Hybrid Cloud, etc.
DNS CA
Ingress Ingress
Pain:
db-leader • Global DNS db-follower
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 10
Cilium CNI + Cilium
Cluster Mesh
Cilium Cluster Mesh
• eBPF-based Networking, Observability and Security:
• https://cilium.io/
• A CNCF project
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 12
Microservices Demo Topology
Cluster1 Cluster2
https://github.com/GoogleCloudPlatform/microservices-demo
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 13
K8s Multicluster Connectivity – Global Service LB
Setup # cilium install --cluster-name shmcfarl-mc-2 --cluster-id 2 --context
[email protected] --inherit-ca shmcfarl@shmcfarl-mc-
1.us-west-2.eksctl.io
DNS CA
redis-cart
frontend
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 14
K8s Multicluster Connectivity – Global Service LB
VXLAN
VXLAN Networking Service
VPC peering, Hybrid Cloud, etc.
DNS CA
Load Load
Balancer Balancer
# cilium bpf tunnel list Node IP:
TUNNEL VALUE 10.11.121.200
172.17.0.0:0 10.10.123.229:0
Node IP: 172.18.0.0:0 10.11.121.200:0 Cluster CIDR:
10.10.123.229 172.18.0.0/16
Cluster CIDR:
172.17.0.0/16
K8s Cluster
K8s Cluster
Cluster 172.17.0.0/16 Cluster 172.18.0.0/16
10.10.123.2 10.11.121.2
29 00
VXLAN
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 15
K8s Multicluster Connectivity – Global Service LB
Global LB
DNS CA
Load Balancer
redis-cart
apiVersion: v1
frontend kind: Service 172.18.115.114:6379
metadata:
name: redis-cart-cls1
redis-cart
K8s Cluster cartservice annotations:
io.cilium/global-service: "true 10.11.126.169:6379
10.96.144.119:6379 spec: K8s Cluster
redis-cart- type: ClusterIP
cls1 selector:
redis-cart apiVersion: v1
app: redis-cart kind: Service
metadata:
name: redis-cart-cls1
annotations:
redis-cart 10.244.1.231:6379 io.cilium/global-service: "true
NOTE: No selector spec:
for “redis-cart” app type: ClusterIP
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 17
K8s Multicluster Connectivity – Service-to-
Service
# cilium service list # cilium service list
ID Frontend Service Type Backend ID Frontend Service Type Backend
23 10.96.89.208:6379 ClusterIP 1 => 10.244.1.231:6379 26 10.97.136.93:6379 ClusterIP 1 => 10.245.1.219:6379
30 10.96.144.119:6379 ClusterIP 1 => 10.244.1.231:6379 32 10.97.246.126:6379 ClusterIP 1 => 10.244.1.231:6379
Load Balancer
redis-cart
10.97.136.93:6379 10.97.246.126:6379
frontend
redis-cart
K8s Cluster cartservice
10.245.1.219:6379
10.96.144.119:6379 K8s Cluster
redis-cart-
10.96.89.208:6379 cls1
redis-cart apiVersion: v1
kind: Service
metadata:
name: redis-cart-cls1
annotations:
redis-cart 10.244.1.231:6379 io.cilium/global-service: "true
NOTE: No selector spec:
for “redis-cart” app type: ClusterIP
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 18
K8s Multicluster Connectivity – Service-to-
Service
# cilium service list # cilium service list
ID Frontend Service Type Backend ID Frontend Service Type Backend
23 10.96.89.208:6379 ClusterIP 1 => 10.244.1.231:6379 26 10.97.136.93:6379 ClusterIP 1 => 10.245.1.219:6379
30 10.96.144.119:6379 ClusterIP 1 => 10.244.1.231:6379 32 10.97.246.126:6379 ClusterIP 1 => 10.244.1.231:6379
Load Balancer
redis-cart
10.97.136.93:6379 10.97.246.126:6379
frontend
redis-cart
K8s Cluster cartservice
10.245.1.219:6379
10.96.144.119:6379 K8s Cluster
redis-cart-
10.96.89.208:6379 cls1
redis-cart
127.0.0.1:6379> replicaof redis-cart-cls1.default.svc.cluster.local 6379
127.0.0.1:6379> keys *
1) "5c605f89-0f26-41e5-a3b2-fe6d1962be7f”
redis-cart 10.244.1.231:6379
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 19
Submariner
Submariner
• Gateway-based multicluster connectivity for Kubernetes services:
https://submariner.io/
• A CNCF project
• What is it?
• Gateway-based with support for IPSec (libreswan), WireGuard and VXLAN
• Connect ‘exported’ services between clusters
• Can be used as a transport for other stuff like Istio: https://cloud.redhat.com/blog/set-up-
istio-multicluster-with-submariner-in-red-hat-advanced-cluster-management-for-kubernetes
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 21
Microservices Demo Topology
Cluster1 Cluster2
Leader Follower
https://github.com/GoogleCloudPlatform/microservices-demo
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 22
K8s Multicluster Connectivity – Submariner Service Export
Setup # subctl show all
GATEWAY CLUSTER REMOTE IP NAT CABLE DRIVER SUBNETS STATUS RTT avg.
cluster2-worker cluster2 172.18.0.5 no libreswan 100.2.0.0/16, 10.2.0.0/16 connected 152.062µs
DNS CA
RA RA
Ingress
GA GA
redis-cart
frontend
Broker
# subctl deploy-broker
redis-cart
K8s Cluster cartservice K8s Cluster
LA LA
cluster-2
redis-cart
# subctl export service --namespace default redis-cart
RA=Route Agent
redis-cart
cluster-1
GA=Gateway Agent
LA=Lighthouse Agent
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 23
K8s Multicluster Connectivity – Submariner Service Export
Make the Service Known
IPSec, WireGuard, VXLAN Networking Service
VPC peering, Hybrid Cloud, etc.
DNS CA
RA RA
Ingress
GA GA
redis-cart
frontend
Broker
# kubectl get serviceexport -A redis-cart
K8s Cluster cartservice NAMESPACE NAME AGE K8s Cluster
default redis-cart 11m
LA LA
cluster-2
redis-cart
# subctl export service --namespace default redis-cart
100.1.39.208:6379
100.1.39.208 = redis-
cart.default.svc.clusterset.local
redis-cart
# kubectl get serviceimport -A
cluster-1 NAMESPACE NAME TYPE IP AGE
submariner-operator redis-cart-default-cluster1 ClusterSetIP ["100.1.39.208"] 13m
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 24
K8s Multicluster Connectivity – Submariner Service Export
Redis Replication
IPSec, WireGuard, VXLAN Networking Service
VPC peering, Hybrid Cloud, etc.
DNS CA
RA RA
Ingress
GA GA
redis-cart
frontend
Broker
# kubectl get serviceexport -A redis-cart
K8s Cluster cartservice NAMESPACE NAME AGE K8s Cluster
default redis-cart 11m
LA LA
cluster-2
redis-cart
# subctl export service --namespace default redis-cart
100.1.39.208:6379
100.1.39.108 = redis-
cart.default.svc.clusterset.local
127.0.0.1:6379> replicaof redis-cart.default.svc.clusterset.local 6379
redis-cart 127.0.0.1:6379> keys *
1) "1991ffa8-ffa0-49d4-91d2-d165590b35b0"
cluster-1
127.0.0.1:6379> client list
. . .
id=29 addr=100.1.39.208:6379
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 25
Linkerd
Reference
🔥 4 years in production
🔥 5,000+ Slack channel
members
🔥 10,000+ GitHub stars
🔥 100+ contributors
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 27
Reference
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 28
Reference
Linkerd Design
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 29
https://linkerd.io/2/reference/architecture/
Linkerd 2.x Architecture
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 30
Reference
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 31
Reference
Get involved!
• Linkerd has a friendly, welcoming community! Join us!
• Development is all on https://github.com/linkerd
• Thriving community in the https://slack.linkerd.io/
• Formal announcements on the
CNCF https://lists.cncf.io/g/cncf-linkerd-users
• Linkerd is 100% Apache v2 licensed, owned by a neutral foundation
(https://www.cncf.io/), and is
https://linkerd.io/2019/10/03/linkerds-commitment-to-open-
governance/.
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 32
Microservices Demo Topology
Cluster1 Cluster2
Leader Follower
https://github.com/GoogleCloudPlatform/microservices-demo
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 33
Reference
Linkerd Multicluster Setup – Pre-setup Stuff
https://linkerd.io/2.11/getting-started/ https://linkerd.io/2.11/features/multicluster/
• Create certs
# step certificate create root.linkerd.cluster.local root.crt root.key \
--profile root-ca --no-password --insecure
• Follow the documented steps for addons such as Linkerd ‘viz’ (UI)
installation
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 34
K8s Multicluster Connectivity – Linkerd Multicluster
Setup
Networking Service
VPC peering, Hybrid Cloud, etc.
DNS CA
redis-cart
frontend
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 35
K8s Multicluster Connectivity – Linkerd Multicluster
Link Setup # linkerd --context=linkerd-mc-1 multicluster link --cluster-name linkerd-mc-1 |
kubectl --context=linkerd-mc-2 apply -f -
# linkerd --context=linkerd-mc-2 multicluster link --cluster-name linkerd-mc-2 |
kubectl --context=linkerd-mc-1 apply -f -
Networking Service
VPC peering, Hybrid Cloud, etc.
DNS CA
Ingress
redis-cart
frontend
redis-cart
linkerd-multicluster linkerd-service-mirror-shmcfarl-mc-1-6b68f84b64-ghwkg
linkerd-multicluster linkerd-service-mirror-shmcfarl-mc-2-779d9f874d-w9g94
redis-cart
Multicluster Multicluster
Gateway Gateway
service mirror:
redis-cart-
linkerd-mc-1
172.20.124.207
service:
redis-cart
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 38
Linkerd Multicluster – Redis Replication
Load Load
Balancer Balancer
Multicluster Multicluster
Gateway Gateway
service mirror:
redis-cart-
linkerd-mc-1
172.20.124.207
service:
redis-cart
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 39
Istio
Istio Overview
• An open-source project started by Google and IBM with help from the
Envoy team at Lyft
• https://istio.io/
• https://github.com/istio
• https://www.envoyproxy.io/
• https://istio.io/docs/concepts/what-is-istio/
• Automatic load balancing for HTTP, gRPC, WebSocket, and TCP traffic
• Robust multicluster connectivity
• Fine-grained control of traffic behavior with rich routing rules, retries, failovers, and fault
injection
• A pluggable policy layer and configuration API supporting access controls, rate limits and
quotas
• Automatic metrics, logs, and traces for all traffic within a cluster, including cluster ingress and
egress
• Secure service-to-service authentication with strong identity assertions between services in a
cluster
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 41
Istio Architecture
https://istio.io/latest/docs/ops/deployment/architecture/
• istiod
• Pilot
• Handles service discovery and config data
• Provides the Envoy proxies with the mesh topology and
route rules
• Galley
• Validates user authored Istio API configuration on behalf of
other control plane components
• Top-level config ingestion, processing and distribution
• Citadel
• Provides certificates to the Envoy proxies for authentication
and authorization
• Envoy
• A proxy attached to every microservice
• The connection point for a microservice to attach to the
mesh
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 42
Envoy
https://www.envoyproxy.io
• Implemented by Lyft • API driven
https://github.com/envoyproxy/envoy
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 43
Istio: How Do I Get It?
• Where to get it:
• Istio currently is available directly from the Istio community at:
https://istio.io/about/community/join/
• It can also be built directly: https://github.com/istio/istio
• It can be enabled as an infrastructure option in GKE
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 44
Reference
Contribution
• Contribution Readme:
https://github.com/istio/community/blob/master/CONTRIBUTING.md
• Contributing to the Docs: https://istio.io/about/contribute/
• Istio Discussion: https://discuss.istio.io/
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 45
Istio Multicluster
• https://istio.io/latest/docs/ops/deployment/deployment-models/
• Primary-Remote – single network
• Primary-Remote – multiple networks
• Multi-Primary – single network
• Multi-Primary – multiple networks
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 46
Microservices Demo Topology
Cluster1 Cluster2
Leader Follower
https://github.com/GoogleCloudPlatform/microservices-demo
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 47
Reference
Istio Multicluster Setup – Pre-setup Stuff
https://istio.io/latest/docs/setup/install/multicluster/before-you-begin/
• Create certs and secrets on first cluster and 2nd clusters
# make -f ../tools/certs/Makefile.selfsigned.mk root-ca
# make -f ../tools/certs/Makefile.selfsigned.mk cluster1-cacerts
# kubectl create namespace istio-system
# kubectl create secret generic cacerts -n istio-system \
--from-file=cluster1/ca-cert.pem \
--from-file=cluster1/ca-key.pem \
--from-file=cluster1/root-cert.pem \
--from-file=cluster1/cert-chain.pem
# make -f ../tools/certs/Makefile.selfsigned.mk cluster2-cacerts
# kubectl create namespace istio-system
# kubectl create secret generic cacerts -n istio-system \
--from-file=cluster2/ca-cert.pem \
--from-file=cluster2/ca-key.pem \
--from-file=cluster2/root-cert.pem \
--from-file=cluster2/cert-chain.pem
• Export context info for future use with ‘kubectl’ and ‘istioctl’
#commands
# export CTX_CLUSTER1=istio-mc-1
export CTX_CLUSTER2=istio-mc-2
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 48
K8s Multicluster Connectivity – Istio Multicluster
Setup – “istio-mc-1”
Networking Service
VPC peering, Hybrid Cloud, etc.
Ingress
# cat <<EOF > istio-mc-1.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator redis-cart
frontend spec:
values:
global:
meshID: mesh1
K8s Cluster cartservice multiCluster:
redis-cart K8s Cluster
clusterName: istio-mc-1
network: network1
istio-mc-2
EOF
redis-cart
# istioctl install --context="${CTX_CLUSTER1}" -f istio-mc-1.yaml
redis-cart
istio-mc-1 # samples/multicluster/gen-eastwest-gateway.sh \
***Do this on existing Istio deployment #CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 49
K8s Multicluster Connectivity – Istio Multicluster
Setup – “istio-mc-2”
Networking Service
VPC peering, Hybrid Cloud, etc.
Ingress
# cat <<EOF > istio-mc-2.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator redis-cart
frontend spec:
values:
global:
meshID: mesh1
K8s Cluster cartservice multiCluster:
redis-cart K8s Cluster
clusterName: istio-mc-2
network: network2
istio-mc-2
EOF network2
redis-cart
# istioctl install --context="${CTX_CLUSTER2}" -f istio-mc-2.yaml
redis-cart
istio-mc-1 # samples/multicluster/gen-eastwest-gateway.sh \
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 50
Warning: It is ALWAYS DNS that kills you ☺
Add to the Istio Operator Config
• By default, Istio does not enable DNS apiVersion: install.istio.io/v1alpha1
https://istio.io/latest/docs/ops/configuratio
# Enable basic DNS proxying
• ISTIO_META_DNS_CAPTURE: "true"
n/traffic-management/dns-
proxy/#getting-started OR edit the config post-deployment
# kubectl edit istiocontrolplanes -n istio-system
meshConfig:
• Without enabling DNS proxy, “redis-cart- defaultConfig:
. . .<output_summarized>
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 51
K8s Multicluster Connectivity – Istio Multicluster
Expose Services – “istio-mc-1”
Networking Service Expose services
VPC peering, Hybrid Cloud, etc.
istio-mc-1
istio-system -f expose-services.yaml
redis-cart
network1 Service-specific Example:
hosts:
- ”<SVC>.default.svc.cluster.local”
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 52
Reference
Istio Multicluster Setup – Endpoint Discovery
• Install remote secrets in both clusters so that each cluster has API
server access to the other cluster
# istioctl x create-remote-secret \
--context="${CTX_CLUSTER1}" \
--name=istio-mc-1 | \
kubectl apply -f - --context="${CTX_CLUSTER2}"
# istioctl x create-remote-secret \
--context="${CTX_CLUSTER2}" \
--name=istio-mc-2 | \
kubectl apply -f - --context="${CTX_CLUSTER1}"
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 53
Istio Multicluster – Redis Replication
Service Mirror – Phantom/Ghost Services
istio- name: cross-network-gateway
eastwest-gw spec:
Load selector:
Balancer AWS LB: 52.11.49.96 istio: eastwestgateway
servers:
- port:
number: 15443
name: tls
protocol: TLS
172.17.43.144 tls:
redis-cart- mode: AUTO_PASSTHROUGH service: redis-cart
cls1
service:
redis-cart
pod: redis-
cart
replica
pod: redis-
cart 127.0.0.1:6379> replicaof redis-cart-cls1.default.svc.cluster.local 6379
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 55
Cisco Calisti – A
Service Mesh
Manager
Cisco Calisti
https://calisti.app/
Operationalize the service mesh
Multi-cloud, multi-cluster connectivity and
observability
Connect any on-prem and public cloud together
Traffic management ensures Complete application and Security at all layers between
smooth app updates health observability clusters and clouds
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 57
Cisco Calisti Benefits
1 2 3
Multi-Cluster Observability Simplified mesh & traffic management Policy based n/w & Security
Leader Follower
https://github.com/GoogleCloudPlatform/microservices-demo
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 59
Cisco Calisti Setup – From 19 steps to 3 ☺
https://calisti.app/
1) Install Cisco Calisti and identify the first cluster name:
# smm install -a --cluster-name smm-mc-1
2) Install Cisco Calisti with a full Istio control plane and attach the 2nd
cluster to the 1st cluster:
# smm istio cluster attach smm-mc-2.yaml --active-istio-control-plane
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 60
Demo
K8s Multicluster Connectivity – Cisco Calisti
Multicluster
Networking Service
VPC peering, Hybrid Cloud, etc.
Changes from
Ingress
earlier Istio
example: redis-cart
frontend
- New eastwest
K8s Cluster cartservice gateway name redis-cart K8s Cluster
- 2nd cluster’s smm-mc-2
smm-mc-2
redis-cart network name is
the same as the
redis-cart
smm-mc-1 cluster name
network1
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 62
Reference
https://istio.io/latest/docs/ops/configuratio
# Enable basic DNS proxying
• ISTIO_META_DNS_CAPTURE: "true"
n/traffic-management/dns-
proxy/#getting-started OR edit the config post-deployment
# kubectl edit istiocontrolplanes -n istio-system
meshConfig:
• Without enabling DNS proxy, “redis-cart- defaultConfig:
. . .<output_summarized>
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 63
K8s Multicluster Connectivity – Cisco Calisti
Multicluster
• Brute force – Control which services are exposed/shared at the
gateway
# kubectl edit -n istio-system gw istio-cross-network-cp-v111x
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: istio-cross-network-cp-v111x
spec:
servers:
- hosts:
- "*.local”
Service-specific Example:
hosts:
- ”<SVC>.default.svc.cluster.local”
Load
Balancer AWS LB: 52.14.79.204
10.100.55.204
redis-cart- service: redis-cart
cls1
service:
redis-cart
pod: redis-
cart
replica
pod: redis-
cart 127.0.0.1:6379> replicaof redis-cart-cls1.default.svc.cluster.local 6379
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 66
Cisco Calisti - Topology Reference
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 67
Summary
• Check out Cisco Calisti – Get started for free (Up to 10 nodes and 2
clusters): https://calisti.app/
• There are many options for connecting workloads in multiple Kubernetes
clusters – we just touched on a few
• Network Service Mesh - https://networkservicemesh.io/
• Many users leverage multicluster connectivity for cross-cluster load-
balancing of services
• For specialized per-service cross-cluster connectivity, special care must
be taken to select a solution that provides a balance of use-case flexibility
and operational supportability
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 68
Technical Session Surveys
• Attendees who fill out a minimum of four
session surveys and the overall event
survey will get Cisco Live branded socks!
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 69
Pay for Learning with
Cisco Learning Credits
Cisco Learning and Certifications (CLCs) are prepaid training
vouchers redeemed directly
From technology training and team development to Cisco certifications and learning with Cisco.
plans, let us help you empower your business and career. www.cisco.com/go/certs
Here at the event? Visit us at The Learning and Certifications lounge at the World of Solutions
#CiscoLive BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 70
• Visit the Cisco Showcase
for related demos
BRKETI-2003 © 2022 Cisco and/or its affiliates. All rights reserved. Cisco Public 71
Thank you
#CiscoLive
#CiscoLive