Bird
Raised Fist0
GCPcloud~5 mins

GKE Ingress with Load Balancer in GCP - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of an Ingress in GKE?
An Ingress in GKE manages external access to services in a cluster, typically HTTP and HTTPS, by routing traffic to the right service based on rules.
Click to reveal answer
beginner
Which GCP resource does GKE Ingress create to expose services externally?
GKE Ingress creates a Google Cloud HTTP(S) Load Balancer to expose services outside the cluster.
Click to reveal answer
intermediate
What is the role of the Ingress controller in GKE?
The Ingress controller watches Ingress resources and configures the cloud load balancer to route traffic according to the Ingress rules.
Click to reveal answer
intermediate
Name one key annotation used in GKE Ingress to specify backend service timeout.
The annotation 'ingress.gcp.kubernetes.io/backend-config' is used to specify backend service settings like timeout.
Click to reveal answer
intermediate
How does GKE Ingress handle SSL/TLS termination?
GKE Ingress can terminate SSL/TLS at the load balancer by specifying TLS certificates in the Ingress resource, so encrypted traffic is decrypted before reaching services.
Click to reveal answer
What type of load balancer does GKE Ingress create by default?
ANetwork Load Balancer
BTCP Load Balancer
CInternal Load Balancer
DHTTP(S) Load Balancer
Which Kubernetes resource defines routing rules for GKE Ingress?
AIngress
BPod
CService
DConfigMap
How do you specify TLS certificates in GKE Ingress?
AUsing a Secret referenced in the Ingress TLS section
BIn the Service resource
CDirectly in the Pod spec
DIn the ConfigMap
What happens if you create an Ingress without any backend service?
AIngress controller returns an error
BTraffic is routed to default backend
CNo external access is configured
DLoad balancer routes traffic to all pods
Which annotation would you use to enable Cloud Armor security policies on GKE Ingress?
Aingress.kubernetes.io/enable-cloud-armor
Bingress.gcp.kubernetes.io/pre-shared-cert
Cingress.gcp.kubernetes.io/security-policy
Dingress.kubernetes.io/ssl-redirect
Explain how GKE Ingress uses a Load Balancer to route external traffic to services inside the cluster.
Think about how external users reach your app through the cloud load balancer.
You got /5 concepts.
    Describe the steps to enable HTTPS traffic using GKE Ingress with a TLS certificate.
    Focus on how certificates are stored and linked to Ingress.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using an Ingress with a Load Balancer in GKE?
      easy
      A. To restrict access to the cluster nodes only
      B. To expose multiple services through a single external IP address
      C. To create multiple IP addresses for each pod
      D. To manage internal DNS records automatically

      Solution

      1. Step 1: Understand Ingress role in GKE

        Ingress allows routing external traffic to multiple services inside the cluster using one IP.
      2. Step 2: Recognize Load Balancer function

        The Load Balancer created by Ingress exposes a single external IP to route traffic.
      3. Final Answer:

        To expose multiple services through a single external IP address -> Option B
      4. Quick Check:

        Ingress + Load Balancer = Single IP for many services [OK]
      Hint: Ingress combines services under one IP address [OK]
      Common Mistakes:
      • Thinking each pod gets its own IP
      • Confusing internal DNS with external exposure
      • Assuming Load Balancer creates multiple IPs
      2. Which annotation is used in a GKE Ingress resource to specify the creation of a Google Cloud HTTP(S) Load Balancer?
      easy
      A. cloud.google.com/load-balancer-type: 'internal'
      B. kubernetes.io/ingress.class: 'nginx'
      C. kubernetes.io/ingress.class: 'gce'
      D. networking.gke.io/load-balancer: 'external'

      Solution

      1. Step 1: Identify GKE Ingress annotation for Load Balancer

        The annotation 'kubernetes.io/ingress.class: gce' tells GKE to use Google Cloud Load Balancer.
      2. Step 2: Differentiate from other ingress classes

        'nginx' is for NGINX ingress controller, not GCP Load Balancer.
      3. Final Answer:

        kubernetes.io/ingress.class: 'gce' -> Option C
      4. Quick Check:

        Use 'gce' annotation for GCP Load Balancer [OK]
      Hint: Use 'kubernetes.io/ingress.class: gce' for GCP Load Balancer [OK]
      Common Mistakes:
      • Using 'nginx' instead of 'gce' annotation
      • Confusing internal vs external load balancer annotations
      • Using non-existent annotation keys
      3. Given this Ingress YAML snippet, what will happen when a user visits http://example.com/api?
      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: example-ingress
        annotations:
          kubernetes.io/ingress.class: "gce"
      spec:
        rules:
        - host: example.com
          http:
            paths:
            - path: /api
              pathType: Prefix
              backend:
                service:
                  name: api-service
                  port:
                    number: 80
            - path: /
              pathType: Prefix
              backend:
                service:
                  name: web-service
                  port:
                    number: 80
      
      medium
      A. Traffic to /api goes to api-service; all other paths go to web-service
      B. Traffic to /api goes to web-service; all other paths go to api-service
      C. All traffic goes to api-service regardless of path
      D. Ingress will reject traffic because of conflicting paths

      Solution

      1. Step 1: Analyze path rules in Ingress

        The rule for path '/api' with pathType Prefix directs matching requests to 'api-service'.
      2. Step 2: Understand default path routing

        The path '/' with Prefix matches all other requests and routes them to 'web-service'.
      3. Final Answer:

        Traffic to /api goes to api-service; all other paths go to web-service -> Option A
      4. Quick Check:

        Specific path matches first, then default [OK]
      Hint: Specific paths route before general '/' path [OK]
      Common Mistakes:
      • Assuming '/' path overrides /api
      • Thinking all traffic goes to one service
      • Believing Ingress rejects overlapping paths
      4. You created an Ingress with annotation kubernetes.io/ingress.class: nginx in GKE but no external IP is assigned. What is the likely cause?
      medium
      A. GKE does not create a Google Cloud Load Balancer for 'nginx' ingress class
      B. The Ingress resource is missing the service port definition
      C. The cluster nodes are not labeled correctly
      D. The Ingress controller is automatically created and running

      Solution

      1. Step 1: Understand Ingress class annotation effect

        Annotation 'nginx' tells GKE to use NGINX ingress controller, which does not create a GCP Load Balancer automatically.
      2. Step 2: Recognize Load Balancer creation requirements

        Only 'gce' ingress class triggers Google Cloud Load Balancer creation with external IP.
      3. Final Answer:

        GKE does not create a Google Cloud Load Balancer for 'nginx' ingress class -> Option A
      4. Quick Check:

        'nginx' ingress needs separate controller, no auto Load Balancer [OK]
      Hint: Use 'gce' annotation for auto Load Balancer in GKE [OK]
      Common Mistakes:
      • Assuming 'nginx' creates GCP Load Balancer automatically
      • Blaming missing service port for no IP
      • Thinking cluster node labels affect Load Balancer creation
      5. You want to expose two services, frontend and backend, on the same IP but different paths using GKE Ingress with a Load Balancer. Which YAML snippet correctly configures this?
      hard
      A. apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: multi-service-ingress annotations: kubernetes.io/ingress.class: "gce" spec: rules: - http: paths: - path: /frontend pathType: Prefix backend: service: name: frontend port: number: 80 - path: /backend pathType: Prefix backend: service: name: backend port: number: 80
      B. apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: multi-service-ingress spec: rules: - host: "*" http: paths: - path: /frontend backend: serviceName: frontend servicePort: 80 - path: /backend backend: serviceName: backend servicePort: 80
      C. apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: multi-service-ingress annotations: kubernetes.io/ingress.class: "nginx" spec: rules: - host: example.com http: paths: - path: /frontend pathType: Prefix backend: service: name: frontend port: number: 80 - path: /backend pathType: Prefix backend: service: name: backend port: number: 80
      D. apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: multi-service-ingress annotations: kubernetes.io/ingress.class: "gce" spec: rules: - host: example.com http: paths: - path: /frontend pathType: Prefix backend: service: name: frontend port: number: 80 - path: /backend pathType: Prefix backend: service: name: backend port: number: 80

      Solution

      1. Step 1: Confirm correct annotation for GCP Load Balancer

        Options A and D use 'kubernetes.io/ingress.class: gce', which is correct for GKE Load Balancer.
      2. Step 2: Check pathType and host usage

        apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: multi-service-ingress annotations: kubernetes.io/ingress.class: "gce" spec: rules: - host: example.com http: paths: - path: /frontend pathType: Prefix backend: service: name: frontend port: number: 80 - path: /backend pathType: Prefix backend: service: name: backend port: number: 80 uses 'Prefix' pathType with a host, ensuring precise routing for /frontend and /backend paths on example.com.
      3. Step 3: Identify deprecated or incorrect syntax

        apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: multi-service-ingress spec: rules: - host: "*" http: paths: - path: /frontend backend: serviceName: frontend servicePort: 80 - path: /backend backend: serviceName: backend servicePort: 80 uses deprecated 'serviceName' and 'servicePort' keys and lacks annotation; apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: multi-service-ingress annotations: kubernetes.io/ingress.class: "nginx" spec: rules: - host: example.com http: paths: - path: /frontend pathType: Prefix backend: service: name: frontend port: number: 80 - path: /backend pathType: Prefix backend: service: name: backend port: number: 80 uses 'nginx' ingress class, not GCE; apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: multi-service-ingress annotations: kubernetes.io/ingress.class: "gce" spec: rules: - http: paths: - path: /frontend pathType: Prefix backend: service: name: frontend port: number: 80 - path: /backend pathType: Prefix backend: service: name: backend port: number: 80 is missing host and incomplete.
      4. Final Answer:

        Option D correctly configures two services on same IP with prefix path matching and GCE Load Balancer -> Option D
      5. Quick Check:

        Use 'gce' annotation + prefix paths + host for precise multi-service routing [OK]
      Hint: Use 'gce' annotation and prefix pathType for multi-service routing [OK]
      Common Mistakes:
      • Using 'nginx' annotation instead of 'gce'
      • Using deprecated serviceName/servicePort keys
      • Not specifying host or using wrong pathType
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard