Estimated time: 20 min
We deployed security alerts in the first module. While we were implementing the use cases, some of them have triggered the alerts and now we can explore them.
Review alerts manifests.
Navigate to demo/50-alerts path and review YAML manifests that represent alerts definitions. Each file containes an alert template and alert definition. Alerts templates can be used to quickly create an alert definition in the UI.
View triggered alerts.
Open Alerts view to see all triggered alerts in the cluster. Review the generated alerts.

You can also review the alerts configuration and templates by navigating to alerts configuration in the top right corner.
Refer to packet capture documentation for more details about this capability.
Configure packet capture.
Navigate to demo/60-packet-capture and review YAML manifests that represent packet capture definition. Each packet capture is configured by deploing a PacketCapture resource that targets endpoints using selector and labels.
Deploy packet capture definition to capture packets for dev/nginx pods.
kubectl apply -f demo/60-packet-capture/nginx-pcap.yamlOnce the
PacketCaptureresource is deployed, Calico starts capturing packets for all endpoints configured in theselectorfield.
Install calicoctl CLI
The easiest way to retrieve captured *.pcap files is to use calicoctl CLI.
CALICO_VERSION=$(kubectl get clusterinformation default -ojsonpath='{.spec.cnxVersion}')
# download and configure calicoctl
curl -o calicoctl -O -L https://docs.tigera.io/download/binaries/${CALICO_VERSION}/calicoctl
chmod +x calicoctl
sudo mv calicoctl /usr/local/bin/
calicoctl versionFetch and review captured payload.
The captured
*.pcapfiles are stored on the hosts where pods are running at the time thePacketCaptureresource is active.
Retrieve captured *.pcap files and review the content.
# get pcap files
calicoctl captured-packets copy nginx-pcap --namespace dev
ls dev-nginx*
# view *.pcap content
tcpdump -Ar $(ls dev-* | head -1)
tcpdump -Xr $(ls dev-* | head -1)Clean up packet capture resource
If a packet capture resource does not have endTime field, the capture would be continuous until the resource is removed.
Stop packet capture by removing the PacketCapture resource.
kubectl delete -f demo/60-packet-capture/nginx-pcap.yamlNote Packet Captures can also be created and scheduled directly from the Calico UI. Follow the Service Graph method for this alternative procedure.
Refer to deep packet inspection documentation for more details about this capability.
Configure deep packet inspection (DPI) resource.
Deploy DPI resource to allow Calico inspect packets bound for dev/nginx pods.
kubectl apply -f demo/70-deep-packet-inspection/nginx-dpi.yamlOnce the
DeepPacketInspectionresource is deployed, Calico configures DPI controller to scan packets for endpoints matching theselectorfield configuration.
Wait until all DPI pods become Ready
watch kubectl get po -n tigera-dpiSimulate malicious request and review alerts.
Query dev/nginx application with payload that triggers a Snort rule alert.
kubectl -n dev exec -t centos -- sh -c "curl http://nginx-svc/secid_canceltoken.cgi -H 'X-CMD: Test' -H 'X-KEY: Test' -XPOST"Navigate to the Alerts view in Tigera UI and review alerts triggered by DPI controller. Calico DPI controller uses Snort signatures to perform DPI checks.