Calico

In order to easily install Calico, Tigera operator can be used. Details can be found in Quickstart for Calico on Kubernetes. Tigera operator provides lifecycle management for Calico exposed via the Kubernetes API defined as a custom resource definition. It can be installed by command:

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.1/manifests/tigera-operator.yaml

with example output:

namespace/tigera-operator created
customresourcedefinition.apiextensions.k8s.io/bgpconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/bgpfilters.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/bgppeers.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/blockaffinities.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/caliconodestatuses.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/clusterinformations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/felixconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/globalnetworkpolicies.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/globalnetworksets.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/hostendpoints.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamblocks.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamconfigs.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamhandles.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ippools.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipreservations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/kubecontrollersconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/networkpolicies.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/networksets.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/tiers.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/adminnetworkpolicies.policy.networking.k8s.io created
customresourcedefinition.apiextensions.k8s.io/apiservers.operator.tigera.io created
customresourcedefinition.apiextensions.k8s.io/imagesets.operator.tigera.io created
customresourcedefinition.apiextensions.k8s.io/installations.operator.tigera.io created
customresourcedefinition.apiextensions.k8s.io/tigerastatuses.operator.tigera.io created
serviceaccount/tigera-operator created
clusterrole.rbac.authorization.k8s.io/tigera-operator created
clusterrolebinding.rbac.authorization.k8s.io/tigera-operator created
deployment.apps/tigera-operator created

After installation pods for operator can be verified by command:

kubectl get pods -n tigera-operator

with example output:

NAME                               READY   STATUS    RESTARTS   AGE
tigera-operator-76c4976dd7-j5wvm   1/1     Running   0          1m

Next step is to download resource for Calico 3.26.1 version:

curl https://raw.githubusercontent.com/projectcalico/calico/v3.29.1/manifests/custom-resources.yaml -o calico-custom-resources.yaml

Then create custom resource to configure Calico:

kubectl create -f calico-custom-resources.yaml

with example output:

installation.operator.tigera.io/default created
apiserver.operator.tigera.io/default created

Finally watch changes in resource while applying downloaded YAML:

watch kubectl get pods -n calico-system

with example output:

Every 2.0s: kubectl g...  MacBook-Pro-M3-Sebastian.local: Fri Dec 27 16:36:45 2024

NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-578cbdf488-t49jf   1/1     Running   0          2m44s
calico-node-95ppl                          1/1     Running   0          2m44s
calico-node-mshzr                          1/1     Running   0          2m44s
calico-node-w2ck6                          1/1     Running   0          2m44s
calico-typha-5c5bb69d97-4mn68              1/1     Running   0          2m44s
calico-typha-5c5bb69d97-vp45t              1/1     Running   0          2m40s
csi-node-driver-8bvjb                      2/2     Running   0          2m44s
csi-node-driver-ngxfm                      2/2     Running   0          2m44s
csi-node-driver-x2zjn                      2/2     Running   0          2m44s

While working with Calico, CLI tool can be useful to work with CNI and it can be installed by command:

curl -L https://github.com/projectcalico/calico/releases/download/v3.29.1/calicoctl-darwin-amd64 -o calicoctl
sudo mv calicoctl /usr/local/bin/

calicoctl can be used to verify Calico installation:

calicoctl version