Bird
Raised Fist0
Kubernetesdevops~10 mins

Ingress and egress rules in Kubernetes - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Ingress and egress rules
Start: Pod wants to communicate
↓
Check Egress Rules
↓
Send Out
↓
Incoming Traffic
↓
Check Ingress Rules
↓
Deliver
↓
End Communication
Traffic from pods first passes egress rules to allow or block outgoing connections. Incoming traffic passes ingress rules to allow or block access to pods.
Execution Sample
Kubernetes
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-web
spec:
  podSelector:
    matchLabels:
      role: web
  ingress:
  - from:
    - ipBlock:
        cidr: 10.0.0.0/24
This NetworkPolicy allows incoming traffic to pods with label role=web only from IPs in 10.0.0.0/24 subnet.
Process Table
StepTraffic DirectionSource IPDestination PodRule CheckedAllowed?Action
1EgressPod AExternal IP 8.8.8.8Egress rule: allow allYesSend Out
2IngressIP 10.0.0.5Pod with role=webIngress rule: allow from 10.0.0.0/24YesDeliver
3IngressIP 192.168.1.10Pod with role=webIngress rule: allow from 10.0.0.0/24NoDrop Packet
4EgressPod BExternal IP 192.168.1.10Egress rule: allow allYesSend Out
5IngressIP 10.0.0.50Pod without role=webNo ingress rule matchesNoDrop Packet
6EgressPod CExternal IP 10.0.0.5Egress rule: deny allNoBlock Traffic
💡 Traffic is either allowed or blocked based on matching ingress and egress rules.
Status Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4After Step 5After Step 6
Traffic StatusPendingSent OutDeliveredDroppedSent OutDroppedBlocked
Source IPPod APod A10.0.0.5192.168.1.10Pod B10.0.0.50Pod C
Destination Pod8.8.8.88.8.8.8role=webrole=web192.168.1.10no role=web10.0.0.5
Key Moments - 3 Insights
Why is traffic from IP 192.168.1.10 to a pod with role=web dropped?
Because the ingress rule only allows traffic from 10.0.0.0/24 subnet, as shown in execution_table row 3 where Allowed? is No.
What happens if there is no ingress rule matching the incoming traffic?
The traffic is dropped by default, as seen in execution_table row 5 where no ingress rule matches and action is Drop Packet.
Why is egress traffic from Pod C blocked?
Because the egress rule denies all outgoing traffic for Pod C, shown in execution_table row 6 with Allowed? No and action Block Traffic.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the action taken at step 3 for incoming traffic from IP 192.168.1.10?
ADeliver to pod
BDrop Packet
CSend Out
DBlock Traffic
💡 Hint
Check the 'Action' column in execution_table row 3.
At which step does egress traffic get blocked?
AStep 2
BStep 4
CStep 6
DStep 1
💡 Hint
Look for 'Block Traffic' in the 'Action' column of execution_table.
If the ingress rule allowed all IPs, what would change at step 5?
ATraffic would be delivered
BTraffic would be blocked
CTraffic would be dropped
DNo change
💡 Hint
Refer to execution_table row 5 where traffic is dropped due to no matching ingress rule.
Concept Snapshot
Ingress and egress rules control pod network traffic.
Egress rules filter outgoing traffic from pods.
Ingress rules filter incoming traffic to pods.
Traffic allowed by rules passes; else it is blocked or dropped.
Rules use selectors and IP blocks to specify allowed sources/destinations.
Full Transcript
Ingress and egress rules in Kubernetes control network traffic to and from pods. When a pod sends traffic out, egress rules check if the traffic is allowed. If allowed, the traffic goes out; if not, it is blocked. Incoming traffic to pods is checked against ingress rules. If the source IP matches allowed rules, traffic is delivered; otherwise, it is dropped. This example shows traffic from different IPs and pods being allowed or blocked based on these rules. Understanding these rules helps secure pod communication by controlling who can talk to whom.

Practice

(1/5)
1. What do Ingress rules control in Kubernetes NetworkPolicies?
easy
A. CPU resource limits for pods
B. Incoming traffic to pods
C. Storage access for pods
D. Outgoing traffic from pods

Solution

  1. Step 1: Understand the role of Ingress rules

    Ingress rules specify which incoming network traffic is allowed to reach the pods.
  2. Step 2: Differentiate from Egress rules

    Egress rules control outgoing traffic, not incoming.
  3. Final Answer:

    Incoming traffic to pods -> Option B
  4. Quick Check:

    Ingress = Incoming traffic [OK]
Hint: Ingress means incoming traffic control [OK]
Common Mistakes:
  • Confusing ingress with egress
  • Thinking ingress controls resource limits
  • Mixing network traffic with storage access
2. Which of the following is the correct syntax to allow all incoming traffic from pods in namespace frontend using a NetworkPolicy ingress rule?
easy
A. ingress: - from: - namespaceSelector: matchLabels: name: frontend
B. egress: - to: - namespaceSelector: matchLabels: name: frontend
C. ingress: - to: - namespaceSelector: matchLabels: name: frontend
D. egress: - from: - namespaceSelector: matchLabels: name: frontend

Solution

  1. Step 1: Identify ingress rule syntax

    Ingress rules use ingress: with from: to specify allowed sources.
  2. Step 2: Confirm namespaceSelector usage

    Using namespaceSelector with matchLabels is correct to select pods in a namespace.
  3. Final Answer:

    ingress: - from: - namespaceSelector: matchLabels: name: frontend -> Option A
  4. Quick Check:

    Ingress uses 'from' to allow incoming traffic [OK]
Hint: 'ingress' with 'from' allows incoming traffic sources [OK]
Common Mistakes:
  • Using 'to' instead of 'from' in ingress
  • Confusing ingress with egress syntax
  • Misplacing namespaceSelector under egress
3. Given this NetworkPolicy snippet, what traffic is allowed?
egress:
  - to:
    - ipBlock:
        cidr: 10.0.0.0/24
        except:
        - 10.0.0.5/32
medium
A. All outgoing traffic to 10.0.0.0/24 except 10.0.0.5
B. All incoming traffic from 10.0.0.0/24 except 10.0.0.5
C. All outgoing traffic to 10.0.0.5 only
D. All incoming traffic from 10.0.0.5 only

Solution

  1. Step 1: Analyze egress rule with ipBlock

    The rule allows outgoing traffic to IPs in 10.0.0.0/24 except 10.0.0.5.
  2. Step 2: Confirm direction and exceptions

    Egress means outgoing traffic; 'except' excludes 10.0.0.5 from allowed IPs.
  3. Final Answer:

    All outgoing traffic to 10.0.0.0/24 except 10.0.0.5 -> Option A
  4. Quick Check:

    Egress with ipBlock except excludes IPs [OK]
Hint: Egress 'to' with ipBlock allows excepted IPs blocked [OK]
Common Mistakes:
  • Confusing ingress with egress direction
  • Misreading 'except' as allowed IP
  • Mixing incoming and outgoing traffic
4. You wrote this NetworkPolicy egress rule but pods still cannot reach external IPs:
egress:
  - from:
    - ipBlock:
        cidr: 0.0.0.0/0
What is the error?
medium
A. NetworkPolicy must not have egress rules
B. CIDR 0.0.0.0/0 is invalid
C. Missing 'ports' section
D. Egress rules use 'to', not 'from'

Solution

  1. Step 1: Check egress rule syntax

    Egress rules specify destinations with 'to', not 'from'. Using 'from' is invalid here.
  2. Step 2: Understand correct usage

    Correct egress syntax uses 'to' to define allowed outgoing IP blocks.
  3. Final Answer:

    Egress rules use 'to', not 'from' -> Option D
  4. Quick Check:

    Egress uses 'to' for destinations [OK]
Hint: Egress rules always use 'to' keyword [OK]
Common Mistakes:
  • Using 'from' in egress rules
  • Assuming CIDR 0.0.0.0/0 is invalid
  • Thinking ports are always required
5. You want to restrict pods to only receive traffic from pods in the same namespace and send traffic only to a specific external IP range 192.168.1.0/24. Which NetworkPolicy configuration achieves this?
hard
A. ingress: - from: - podSelector: {} egress: - from: - ipBlock: cidr: 192.168.1.0/24
B. ingress: - from: - namespaceSelector: {} egress: - to: - ipBlock: cidr: 10.0.0.0/24
C. ingress: - from: - podSelector: {} egress: - to: - ipBlock: cidr: 192.168.1.0/24
D. ingress: - to: - podSelector: {} egress: - to: - ipBlock: cidr: 192.168.1.0/24

Solution

  1. Step 1: Configure ingress to allow same-namespace pods

    Using podSelector: {} allows traffic from all pods in the same namespace.
  2. Step 2: Configure egress to allow only specific external IP range

    Egress uses to with ipBlock for 192.168.1.0/24 to restrict outgoing traffic.
  3. Final Answer:

    ingress: - from: - podSelector: {} egress: - to: - ipBlock: cidr: 192.168.1.0/24 -> Option C
  4. Quick Check:

    Ingress 'from' podSelector + Egress 'to' ipBlock [OK]
Hint: Ingress uses 'from' podSelector; egress uses 'to' ipBlock [OK]
Common Mistakes:
  • Using 'from' in egress rules
  • Using namespaceSelector instead of podSelector for ingress
  • Mixing 'to' and 'from' keywords incorrectly
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