Test
What Will You Do¶
In this exercise you will create and deploy two test workloads in different namespaces to verify the network policy has been properly deployed to namespace-a
Assumptions¶
- You have already configured and installed Network Policy on your upstream Kubernetes cluster
Step 1: Create Namespace-a Manifest¶
- Copy the file below and save as deployment-namespace-a.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: praqma
name: debug
namespace: namespace-a
spec:
replicas: 3
selector:
matchLabels:
app: praqma
template:
metadata:
labels:
app: praqma
spec:
containers:
- image: praqma/network-multitool:latest
imagePullPolicy: Always
name: debug
restartPolicy: Always
Step 2: Create Namespace-b Manifest¶
- Copy the file below and save as deployment-namespace-b.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: praqma
name: debug
namespace: namespace-b
spec:
replicas: 3
selector:
matchLabels:
app: praqma
template:
metadata:
labels:
app: praqma
spec:
containers:
- image: praqma/network-multitool:latest
imagePullPolicy: Always
name: debug
restartPolicy: Always
Step 3: Create NameSpace A Workload¶
- Under Applications, select "Workloads"
- Select "New Workload" and enter a Name, set Package Type to "k8s YAML", and select the Namespace namespace-a
- Upload file deployment-namespace-a.yaml
- Set the placement
- Publish Workload
Step 4: Create NameSpace B Workloads¶
Under Applications, select "Workloads" - Select "New Workload" and enter a Name, set Package Type to "k8s YAML", and select the Namespace namespace-b
- Upload file deployment-namespace-b.yaml
- Set the placement
- Publish Workload
Step 5: Verify Workload¶
Click on the Kubectl button on the cluster to open a virtual terminal and run the following kubectl command
kubectl get pod -n namespace-a -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
debug-79d8b57ff4-5svbq 1/1 Running 0 16m 10.244.0.47 mac-demo <none> <none>
debug-79d8b57ff4-7d7g5 1/1 Running 0 16m 10.244.0.48 mac-demo <none> <none>
debug-79d8b57ff4-g2ptf 1/1 Running 0 16m 10.244.0.49 mac-demo <none> <none>
kubectl get pod -n namespace-b -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
debug-744ff55bbf-cw2sx 1/1 Running 0 8m7s 10.244.0.50 mac-demo <none> <none>
debug-744ff55bbf-m8g6z 1/1 Running 0 8m7s 10.244.0.52 mac-demo <none> <none>
debug-744ff55bbf-rd56n 1/1 Running 0 8m7s 10.244.0.51 mac-demo <none> <none>
kubectl get pod -n rafay-infra -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
log-aggregator-68db4c7c77-5gjgk 1/1 Running 1 32h 10.244.0.31 mac-demo <none> <none>
log-router-5n2wg 2/2 Running 16 7d1h 10.244.0.40 mac-demo <none> <none>
rafay-metrics-server-679c698f9f-zr6p2 1/1 Running 6 7d1h 10.244.0.43 mac-demo <none> <none>
rafay-prometheus-adapter-6fd9868c56-mf6wf 1/1 Running 6 7d1h 10.244.0.34 mac-demo <none> <none>
rafay-prometheus-alertmanager-0 2/2 Running 12 7d1h 10.244.0.44 mac-demo <none> <none>
rafay-prometheus-helm-exporter-6b8cb59775-vpffw 1/1 Running 1 32h 10.244.0.27 mac-demo <none> <none>
rafay-prometheus-kube-state-metrics-cd48f5595-9n6g4 1/1 Running 6 7d1h 10.244.0.28 mac-demo <none> <none>
rafay-prometheus-node-exporter-2542c 1/1 Running 6 7d1h 10.244.0.41 mac-demo <none> <none>
rafay-prometheus-server-0 2/2 Running 12 7d1h 10.244.0.26 mac-demo <none> <none>
Step 6: Verify Network policy¶
- Go to workloads and right-click on Actions and select Debug
- Select the LAUNCH option for any one of the pods in namespace-a. It will open up a shell into the container. You should be able to ping and run a curl command and access pods in namespace-a and namespace-b. All other namespaces will be denied.
# ping -c 1 10.244.0.49
PING 10.244.0.49 (10.244.0.49) 56(84) bytes of data.
64 bytes from 10.244.0.49: icmp_seq=1 ttl=63 time=0.050 ms
--- 10.244.0.49 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.050/0.050/0.050/0.000 ms
# ping -c 1 10.244.0.51
PING 10.244.0.51 (10.244.0.51) 56(84) bytes of data.
64 bytes from 10.244.0.51: icmp_seq=1 ttl=63 time=0.047 ms
--- 10.244.0.51 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.047/0.047/0.047/0.000 ms
# curl http://10.244.0.49
Praqma Network MultiTool (with NGINX) - debug-79d8b57ff4-g2ptf - 10.244.0.49/32
# curl http://10.244.0.51
Praqma Network MultiTool (with NGINX) - debug-744ff55bbf-rd56n - 10.244.0.51/32
# ping -c 1 10.244.0.26
PING 10.244.0.26 (10.244.0.26) 56(84) bytes of data.
--- 10.244.0.26 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
Recap¶
Congratulations! You have successfully created and deployed a network policy.