TLS termination with Ingress in Kubernetes - Time & Space Complexity
We want to understand how the time it takes to handle TLS termination with Ingress changes as more requests come in.
Specifically, how does the system handle more connections securely and efficiently?
Analyze the time complexity of the following Kubernetes Ingress TLS termination setup.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
tls:
- hosts:
- example.com
secretName: tls-secret
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: example-service
port:
number: 80
This code configures an Ingress resource to handle HTTPS traffic by terminating TLS using a secret, then forwarding requests to a backend service.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Processing each incoming HTTPS request through TLS termination and routing.
- How many times: Once per request, repeated for every client connection.
As the number of incoming requests grows, the Ingress controller must perform TLS termination and routing for each one.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 TLS terminations and routing operations |
| 100 | 100 TLS terminations and routing operations |
| 1000 | 1000 TLS terminations and routing operations |
Pattern observation: The work grows directly with the number of requests, so more requests mean proportionally more processing.
Time Complexity: O(n)
This means the time to handle requests grows linearly with the number of incoming requests.
[X] Wrong: "TLS termination happens once and then all requests are instantly secure without extra work."
[OK] Correct: Each request requires its own TLS handshake and decryption, so the work repeats for every connection.
Understanding how TLS termination scales helps you explain real-world system behavior and resource needs clearly and confidently.
"What if TLS termination was offloaded to a dedicated proxy before Ingress? How would that affect the time complexity for the Ingress controller?"
Practice
Solution
Step 1: Understand TLS termination role
TLS termination means decrypting encrypted HTTPS traffic at a central point.Step 2: Identify Ingress function
Kubernetes Ingress can handle TLS termination by decrypting traffic before sending it to backend pods.Final Answer:
To decrypt HTTPS traffic at the Ingress before forwarding to backend services -> Option DQuick Check:
TLS termination = decrypt at Ingress [OK]
- Confusing TLS termination with encryption between services
- Thinking Ingress generates certificates automatically
- Assuming TLS termination monitors traffic
Solution
Step 1: Review TLS section syntax
The correct syntax uses a list under tls with hosts as a list and secretName key.Step 2: Compare options
tls: - hosts: - example.com secretName: tls-secret matches the correct YAML structure with 'secretName' and hosts list.Final Answer:
tls: - hosts: - example.com secretName: tls-secret -> Option BQuick Check:
Correct TLS YAML uses secretName and hosts list [OK]
- Using 'secret' instead of 'secretName'
- Not using a list for hosts
- Incorrect indentation or missing dash
tls:
- hosts:
- myapp.example.com
secretName: myapp-tls
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: myapp-service
port:
number: 80
What happens when a user accesses https://myapp.example.com?Solution
Step 1: Understand TLS termination in Ingress
The Ingress uses the secret to decrypt HTTPS traffic for the host.Step 2: Check backend service port and protocol
The backend service listens on port 80 (HTTP), so decrypted HTTP traffic is forwarded.Final Answer:
The Ingress decrypts TLS and forwards HTTP traffic to myapp-service on port 80 -> Option AQuick Check:
Ingress decrypts TLS, backend gets HTTP [OK]
- Assuming backend receives encrypted traffic
- Thinking backend must use HTTPS port
- Confusing TLS termination with passthrough
Solution
Step 1: Check TLS secret validity
If the secret does not have a valid TLS cert and key, HTTPS will fail with certificate errors.Step 2: Verify other options
Backend port or missing rules do not cause cert errors; controller usually supports TLS.Final Answer:
The secret referenced in tls section does not contain a valid TLS certificate -> Option AQuick Check:
Invalid TLS secret = cert error [OK]
- Blaming backend port for TLS cert errors
- Assuming Ingress controller lacks TLS support
- Ignoring TLS secret correctness
Solution
Step 1: Understand TLS with multiple hosts
A single secret can contain a certificate with multiple Subject Alternative Names (SANs) for multiple domains.Step 2: Configure Ingress tls section
The tls field is a list, so add multiple entries under tls, each with a hosts list and referencing the same secretName containing the SAN cert.Final Answer:
Add multiple entries under the tls section with hosts and a single secret containing SAN certificates -> Option CQuick Check:
Multiple tls entries share SAN secret [OK]
- Trying different secrets for each host in one tls entry
- Creating many Ingress resources unnecessarily
- Not using SAN certificates for multiple domains
Ready to prove it?
Pass the test and this pattern moves unknown
