Skip to content

Building Calico with Kubernetes

linuxonz edited this page Nov 28, 2024 · 47 revisions

Integrating Calico with Kubernetes

Calico enables networking and network policy in Kubernetes clusters across the cloud. The instructions provided you the steps to integrate Calico with Kubernetes on Linux on IBM Z for following distribution:

  • RHEL (8.8, 8.10, 9.2, 9.4)
  • SLES (15 SP5, 15 SP6)
  • Ubuntu (20.04, 22.04, 24.04, 24.10)

General Notes:

  • When following the steps below please use a standard permission user unless otherwise specified.

  • A directory /<source_root>/ will be referred to in these instructions, this is a temporary writable directory anywhere you'd like to place it.

  • Following build instructions were tested using Kubernetes version 1.29

1. Build Calico basic components

Instructions for building the basic Calico components, which includes calico/ctl , calico/node and calico/kube-controllers can be found here

2. Build Kubernetes Support

2.1. Pull the Tigera Operator image

  • This pulls a docker image tigera/operator that will be used to manage the lifecycle of a Calico installation on Kubernetes.

    docker pull quay.io/tigera/operator:v1.36.1-s390x
    # The image needs to be tagged with the version number to correctly work with kubernetes
    docker tag quay.io/tigera/operator:v1.36.1-s390x quay.io/tigera/operator:v1.36.1

2.2. Build the node-driver-registrar image

cd $GOPATH/src/github.com/projectcalico/calico/pod2daemon/
make image
docker tag calico/node-driver-registrar:latest-s390x calico/node-driver-registrar:v3.29.0
  • Verify the following images are on the system:

    REPOSITORY                                    TAG
    calico/kube-controllers                       latest-s390x
    calico/node-driver-registrar                  latest-s390x
    quay.io/tigera/operator                       latest-s390x
    calico/felix                                  latest-s390x
    calico/node                                   latest-s390x
    calico/typha                                  latest-s390x
    calico/dikastes                               latest-s390x
    calico/flannel-migration-controller           latest-s390x
    calico/apiserver                              latest-s390x
    calico/cni                                    latest-s390x
    calico/ctl                                    latest-s390x
    calico/csi                                    latest-s390x
    calico/pod2daemon-flexvol                     latest-s390x
    calico/pod2daemon                             latest-s390x
    calico/bird                                   latest-s390x
    calico/kube-controllers                       v3.29.0
    calico/node-driver-registrar                  v3.29.0
    quay.io/tigera/operator                       v3.29.0
    calico/felix                                  v3.29.0
    calico/node                                   v3.29.0
    calico/typha                                  v3.29.0
    calico/dikastes                               v3.29.0
    calico/flannel-migration-controller           v3.29.0
    calico/apiserver                              v3.29.0
    calico/cni                                    v3.29.0
    calico/ctl                                    v3.29.0
    calico/pod2daemon-flexvol                     v3.29.0
    calico/pod2daemon                             v3.29.0

3. Install Calico in Kubernetes environment

Once you have all necessary components built on Z systems, you can

  • Configure and run your Kubernetes following here

  • Install Calico as per instructions; ensure tigera-opeartor.yaml and custom-resources.yaml have correct values reflecting the operational cluster:

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.0/manifests/tigera-operator.yaml
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.0/manifests/custom-resources.yaml
  • Following pods are expected following a successful deployment:
NAMESPACE          NAME                                           READY   STATUS    RESTARTS   AGE
calico-apiserver   calico-apiserver-5d6d9cbbdf-br5sr              1/1     Running   0          50m
calico-apiserver   calico-apiserver-5d6d9cbbdf-jw4sb              1/1     Running   0          50m
calico-system      calico-kube-controllers-86b95bfcd6-cdr9n       1/1     Running   0          2m2s
calico-system      calico-node-6t6zp                              1/1     Running   0          60s
calico-system      calico-typha-68dfc6dcd9-9w5wk                  1/1     Running   0          2m2s
calico-system      csi-node-driver-fptl6                          2/2     Running   0          2m2s
kube-system        coredns-76f75df574-hz62d                       1/1     Running   0          50m
kube-system        coredns-76f75df574-qhf7b                       1/1     Running   0          50m
kube-system        etcd-c3879v1.fyre.ibm.com                      1/1     Running   0          49m
kube-system        kube-apiserver-c3879v1.fyre.ibm.com            1/1     Running   0          49m
kube-system        kube-controller-manager-c3879v1.fyre.ibm.com   1/1     Running   0          49m
kube-system        kube-proxy-qfh5z                               1/1     Running   0          49m
kube-system        kube-scheduler-c3879v1.fyre.ibm.com            1/1     Running   0          49m
tigera-operator    tigera-operator-56b74f76df-2v4g5               1/1     Running   0          49m

4. (Optional) Use Calico network policy on top of flannel networking - Flannel

  • Ensure you have a Calico compatible Kubernetes cluster

  • Download and install flannel networking manifest for the Kubernetes API datastore

curl https://raw.githubusercontent.com/projectcalico/calico/v3.29.0/manifests/canal.yaml -O
kubectl apply -f canal.yaml
  • Following pods are expected upon successful deployment:
NAMESPACE          NAME                                            READY   STATUS       RESTARTS     AGE
calico-apiserver   calico-apiserver-7c8c4668c-c98f6                1/1     Running      0            2m44s
calico-apiserver   calico-apiserver-7c8c4668c-ppn26                1/1     Running      0            2m44s
calico-system      calico-kube-controllers-964bb7d7f-jwp7j         1/1     Running      0            3m20s
calico-system      calico-node-lgnhs                               1/1     Running      0            3m20s
calico-system      calico-typha-66955454c8-cngld                   1/1     Running      0            3m21s
calico-system      csi-node-driver-gdzb2                           2/2     Running      0            3m20s
kube-system        calico-kube-controllers-867bf4f5b5-ktnjg        1/1     Running      0            9s
kube-system        canal-qgrtf                                     2/2     Running      1 (7s ago)   10s
kube-system        coredns-5d78c9869d-trpj2                        1/1     Running      0            5m59s
kube-system        coredns-5d78c9869d-wl6xh                        1/1     Running      0            5m59s
kube-system        etcd-c43192v1.fyre.ibm.com                      1/1     Running      0            6m10s
kube-system        kube-apiserver-c43192v1.fyre.ibm.com            1/1     Running      0            6m10s
kube-system        kube-controller-manager-c43192v1.fyre.ibm.com   1/1     Running      0            6m10s
kube-system        kube-proxy-w2gch                                1/1     Running      0            5m59s
kube-system        kube-scheduler-c43192v1.fyre.ibm.com            1/1     Running      0            6m10s
tigera-operator    tigera-operator-7ff8dc855-dh5qx                 1/1     Running      0            4m54s

References:

Clone this wiki locally