Calico NetworkPolicy
Install calicoctl
curl -L https://github.com/projectcalico/calico/releases/download/v3.27.2/calicoctl-linux-amd64 -o calicoctl
chmod +x ./calicoctl
sudo mv ./calicoctl /usr/local/bin/calicoctl
Install Calico with Helm
helm repo add projectcalico https://docs.tigera.io/calico/charts
echo '{ installation: {kubernetesProvider: EKS }}' > values.yaml
helm install calico projectcalico/tigera-operator \
--version v3.29.2 -f values.yaml \
--namespace tigera-operator --create-namespace
Permissions and environment variable settings
cat << EOF > append.yaml
- apiGroups:
- ""
resources:
- pods
verbs:
- patch
EOF
kubectl apply -f <( cat <( kubectl get clusterrole aws-node -o yaml) append.yaml)
kubectl set env daemonset aws-node -n kube-system ANNOTATE_POD_IP = true
CALICO_POD_NAME = $( kubectl get pods -n calico-system -o name | grep calico-kube-controllers- | cut -d '/' -f 2 )
kubectl delete pod $CALICO_POD_NAME -n calico-system
CALICO_POD_NAME = $( kubectl get pods -n calico-system -o name | grep calico-kube-controllers- | cut -d '/' -f 2 )
kubectl describe pod $CALICO_POD_NAME -n calico-system | grep vpc.amazonaws.com/pod-ips
Resource
Kubernetes NetworkPolicy
NetworkPolicy Maker
apiVersion : networking.k8s.io/v1
kind : NetworkPolicy
metadata :
name : skills
spec :
podSelector :
matchLabels :
app : skills
policyTypes :
- Ingress
- Egress
ingress :
- from :
- ipBlock :
cidr : 10.0.0.0/24
- from :
- ipBlock :
cidr : 10.0.1.0/24
- from :
- ipBlock :
cidr : 10.0.2.0/24
egress :
- to :
- ipBlock :
cidr : 0.0.0.0/0
ports :
- port : 53
protocol : UDP
- port : 53
protocol : TCP
- port : 80
protocol : TCP
- port : 443
protocol : TCP
Calico NetworkPolicy
GlobalNetworkPolicy
apiVersion : projectcalico.org/v3
kind : GlobalNetworkPolicy
metadata :
name : default-deny
spec :
selector : projectcalico.org/namespace not in {'kube-system', 'calico-system', 'calico-apiserver', 'tigera-operator'}
types :
- Ingress
- Egress
NetworkPolicy
apiVersion : projectcalico.org/v3
kind : NetworkPolicy
metadata :
name : match
namespace : skills
spec :
selector : app == 'match'
ingress :
- action : Deny
source :
selector : app == 'stress'
- action : Allow
source :
nets :
- 10.0.0.0/24
- 10.0.1.0/24
egress :
- action : Allow
protocol : TCP
destination :
ports :
- 53
- 80
- 443
- action : Allow
protocol : UDP
destination :
ports :
- 53