Skip to content

Service Mesh: CCA practice questions

A service mesh takes connectivity, load balancing, security and observability out of application code and provides them as infrastructure. Cilium splits that work by layer. IP, TCP and UDP processing happens in the kernel with eBPF, while application protocols such as HTTP, gRPC and DNS are parsed by a proxy, Envoy.

By Ibrahim Yesilay · Published · Updated

Independent community practice, not affiliated with or endorsed by CNCF or The Linux Foundation.

What Service Mesh covers in CCA

A service mesh takes connectivity, load balancing, security and observability out of application code and provides them as infrastructure. Cilium splits that work by layer. IP, TCP and UDP processing happens in the kernel with eBPF, while application protocols such as HTTP, gRPC and DNS are parsed by a proxy, Envoy. The Envoy instances are node-local: the layer 7 policy documentation describes traffic being proxied through a node-local Envoy, which can run as its own DaemonSet or embedded in the agent pod, and Ingress and Gateway API use these per-node proxies too. This is the basis of the sidecarless design, since workloads do not need a proxy container injected into each pod.

Ingress support uses the standard Kubernetes Ingress resource with ingressClassName: cilium. It is enabled with the Helm value ingressController.enabled=true and requires kubeProxyReplacement=true and the layer 7 proxy, which is on by default. The controller creates a LoadBalancer Service, so the environment must support one, though NodePort and host network mode are alternatives. The load balancer mode is either dedicated, one load balancer per Ingress, which avoids conflicts such as overlapping path prefixes, or shared, one load balancer for all Ingresses. Switching modes can drop active connections because the address changes.

Gateway API is the successor to Ingress and is enabled with gatewayAPI.enabled=true, again with kube-proxy replacement as a prerequisite and the Gateway API CRDs installed first. Cilium only programs Gateways whose class is cilium. A GatewayClass names the implementation, a Gateway defines listeners and receives an address from a LoadBalancer Service, and routes such as HTTPRoute, GRPCRoute and TLSRoute attach to it, with ReferenceGrant among the supported resources. kubectl get gateway shows the address and whether the Gateway is programmed, and the Accepted, Programmed and ResolvedRefs conditions are the first place to look when traffic does not arrive. Traffic splitting is among the documented Gateway API examples, and GAMMA support applies Gateway API to service-to-service traffic.

Beyond Ingress and Gateway API, the CiliumEnvoyConfig and CiliumClusterwideEnvoyConfig custom resources give direct control of Envoy for layer 7 traffic management such as load balancing, circuit breaking, path translation and traffic shifting. They are cluster-administrator resources, and envoyConfig.enabled=true turns them on without Ingress.

Mutual authentication is a beta feature. It uses SPIFFE identities issued through SPIRE, with a SPIRE server as the root of trust and an agent on each node, and Cilium performs the mutual TLS handshake out of band rather than inside each connection. It is enabled with authentication.mutual.spire.enabled=true. Authentication alone does not encrypt the traffic; the documentation tells users to enable WireGuard or IPsec transparent encryption for that. The listed limitations are that it is only validated with SPIRE, does not work across Cluster Mesh, and is incompatible with external mTLS solutions. For teams that want Istio instead, Cilium documents integration with both its ambient and sidecar modes.

Key points

  • Cilium uses node-local Envoy proxies for layer 7 work instead of a sidecar in every pod.
  • Both Cilium Ingress and Gateway API require kubeProxyReplacement=true.
  • Cilium programs only Gateways with gatewayClassName cilium.
  • Mutual authentication is beta and does not encrypt traffic; WireGuard or IPsec does.

Three sample questions

8 CCA questions on Service Mesh, 8 with explanations. How practice works

Question 1

Which feature does Cilium Service Mesh offer that traditional sidecar-based service meshes do not?
  1. A.mTLS encryption between services
  2. B.Traffic routing based on HTTP headers
  3. C.Sidecarless architecture using eBPF
  4. D.Circuit breaking for backend services

Correct answer: C

Cilium Service Mesh uniquely offers a sidecarless architecture using eBPF, which implements service mesh functions directly in the kernel without requiring proxy sidecars. Traditional service meshes like Istio or Linkerd require sidecar proxies in each pod.

Question 2

When using Cilium as an Ingress Controller, which annotation makes a service accessible globally across clusters?
  1. A.kubernetes.io/ingress.class: cilium
  2. B.io.cilium/global-service: "true"
  3. C.cilium.io/ingress-global: "true"
  4. D.service.cilium.io/global: "true"

Correct answer: D

The annotation "service.cilium.io/global: "true"" makes a service accessible globally across clusters in a Cilium Cluster Mesh.

Question 3

What is the primary advantage of Cilium's sidecarless service mesh architecture compared to traditional service meshes?
  1. A.It offers more protocol-awareness for L7 filtering
  2. B.It provides better integration with cloud provider load balancers
  3. C.It significantly reduces resource overhead and performance impact
  4. D.It simplifies certificate management for mTLS

Correct answer: C

The primary advantage of Cilium's sidecarless service mesh architecture is the significant reduction in resource overhead and performance impact. Without sidecars, there's no need for the additional containers, memory, and CPU overhead, and traffic doesn't need to be redirected through proxies.

Practice this topic

Focus mode keeps every question on Service Mesh until you leave it. 10 free guest answers, then a free account; no credit card.

Or open CCA practice across all topics.

Sources

The explanation above was checked against these official documents.

Frequently asked questions

What is the difference between the dedicated and shared Ingress load balancer modes?

Dedicated creates a separate load balancer for each Ingress, which avoids conflicts between resources. Shared uses one load balancer for every Ingress in the cluster, which saves resources. Changing the mode gives the Ingress a new address and can drop active connections.