Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

 kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d ## get the token for argocd




Proxy setting for ArgoCD (optional)

If you are behind a proxy probably some chart repository cannot be accessed.

...

Code Block
languageyaml
titleProxy env LNF example
env:
    - name: HTTP_PROXY
      value: "http://squid.lnf.infn.it:3128"
    - name: HTTPS_PROXY
      value: "http://squid.lnf.infn.it:3128"
    - name: NO_PROXY
      value: "baltig.infn.it,argocd-repo-server,argocd-server,localhost,127.0.0.0/24,::1,*.lnf.infn.it,.svc,.cluster.local,10.0.0.0/8,192.168.0.0/16"  


Restart the ArgoCD Components

After updating the deployments, restart the affected components to apply the changes:

...

kubectl rollout restart deployment argocd-application-controller -n argocd


Install Multus CNI

Next, you need to install Multus. You can do this by applying the official Multus CNI manifest from its GitHub repository. Here's the command to download and apply the Multus DaemonSet to your MicroK8s cluster:


kubectl apply -f https://raw.githubusercontent.com/k8snetworkplumbingwg/multus-cni/master/deployments/multus-daemonset-thick.yml


This will install Multus CNI as a DaemonSet across all nodes in the cluster.

  • Verify Multus Installation

    Once installed, verify that the Multus pod is running in the kube-system namespace:


    microk8s kubectl get pods -n kube-system

    Look for the multus pod. The pod should be in a Running state. If it is not, inspect the logs to troubleshoot:


    microk8s kubectl logs <multus-pod-name> -n kube-system


  • Modify NetworkAttachmentDefinition

    To use Multus, you will need to define additional networks for your pods. This is done by creating a NetworkAttachmentDefinition.

    Here's an example YAML file for our testbeamline it adds access to the gigavision network of our cameras:


    Code Block
    languageyaml
    titleNetwork attachement configuration
    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      name: gigevision-network
      namespace: testbeamline
    spec:
      config: '{
        "cniVersion": "0.3.1",
        "type": "bridge",
        "master": "enp4s0f0",
        "bridge": "br0", 
        "ipam": {
          "type": "host-local",
          "subnet": "192.168.115.0/24",
          "rangeStart": "192.168.115.220",
          "rangeEnd": "192.168.115.254",
          "routes": [
            {
              "dst": "192.168.115.0/24",
              "gw": "192.168.115.2"
            }
          ],
          "gateway": "192.168.115.2"
        }
      }'




  • Apply the NetworkAttachmentDefinition with:


    microk8s kubectl apply -f <filename>.yaml


  • Deploy Pods Using Multiple Networks

    After Multus is installed and your custom networks are defined, you can deploy pods with multiple network interfaces. Here's an example pod spec using two networks (one default and one from Multus):

    Code Block
    languageyaml
    titleTest gige camera access
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-with-multus
      annotations:
        k8s.v1.cni.cncf.io/networks: gigevision-network
    spec:
      containers:
      - name: app-container
        image: https://baltig.infn.it/epics-containers/ioc-chart.git
        command: ["/bin/sh", "-c", "sleep 3600"]




  • Verify Pod's Network Interfaces & camera access

    Once the pod is running, you can verify that it has multiple network interfaces by logging into the pod and using the ip command:

    microk8s kubectl exec -it pod-with-multus -- ip a

    microk8s kubectl exec -it pod-with-multus -- arv-tool-0.8