Note that the backing pods for both services are on workers 2 and 3, while the ingress is being exposed on worker 1.
Accessing the ingress
Now, first access the service normally:
mininet> C0w1 curl 100.64.11.1:8000
S1-W2
If you run this a few times, the output fill alternate between S1-W2 and S1-W3. You can do a similar check with the other service: "100.64.11.2:8000".
Now, access it via the ingress:
mininet> C0w1 curl localhost:8001/svc1
S1-W2
If you call it a few times, you will see the output vary as before. Similarly call the "/svc2" path on the host.
Accessing from "outside"
First check the IP of the worker1 host:
mininet> C0w1 hostname -I
10.0.0.3 ...
Now, run the curl command above from another worker in the cluster. Let us use the etcd nodes for this purpose - they have nothing programmed on them - no services etc.
mininet> C0e1 curl 10.0.0.3:8001/svc1
Check that this access works for both paths. Think about the full stack of operations that are running right now to make this work.
Progress so far
Workers and containers
Container-Container communication
Service abstraction
Ingress
Multi-cluster communication
C5: Multi-cluster communication
We have seen how containers and services within a cluster communicate.
What about services across clusters?
Sharded workloads
Why Multi-cluster?
Same provider: different zones, data centers
Different providers: multi-cloud, hybrid-cloud, edge/telco clouds
Multi-cloud
Hybrid-cloud
Connect public-cloud deployments with on-prem enterprise data centers
Allows cloud transformation journey
Allows mix and match of legacy applications with new apps
Allows moving workloads from on-prem to clouds (and vice-versa) as situation changes
Edge clouds
Multi-cluster Networking Requirements
Allow containers/services to talk across clusters
Features:
Routing: how to find the pathway from a container to another
skupper init
# on one end
skupper token create site1.token
# on the other end
skupper link create site1.token
Exposing a service:
skupper expose deployment/backend --port 8080
Message pattern
Any number of services communicate over the same skupper router
How does it work?
Based on the AMQP Messaging queue system
Skupper Routers are modified Qpid Dispatch Routers
Skupper in Kubernetes
A bit more complicated:
Skupper Router to do the actual routing
Site-Controller: to manage the links between various clusters
Service-Controller: to manage services as they come up/down
C5: How do we do it?
We also use skupper-router, with manual configuration.
Let us look at how the config file looks like.
(Example is available in conf/ folder as solo0.json and solo1.json)