Cilium Addon 설치

Cilium v1.17.3 기준

Prerequisite

Cilium download

  • 필요한 cilium chart 및 image를 다운로드 합니다.

$ curl -sfL https://cube.k3.acornsoft.io/download-addon | ACCOUNT=<user> PASSWD=<password> NAME=cilium sh -
$ curl -sfL https://cube.k3.acornsoft.io/download-addon | ACCOUNT=<user> PASSWD=<password> NAME=cilium VERSION=v1.17.3 sh -
...
  • 다운로드 받은 cilium 이미지를 archive/push/registry 경로로 압축을 해제합니다.

$ tar -zxvf ./extends/addon/images/cilium/cilium-v1.17.3.tgz -C ./archive/push/registry
x docker.io_library_busybox:1.37.0.tar
...
x quay.io_cilium_operator:v1.17.3.tar
x quay.io_cilium_startup-script:c54c7edeab7fde4da68e59acd319ab24af242c3f.tar
cubectl-v1.3.1
├── archive
│   ├── cubectl-image-v1.3.1.tgz
│   ├── extend-images.tgz
│   ├── local-repo-ubuntu2204-amd64-R250314.tgz
│   ├── push
│   │   ├── localrepo
│   │   └── registry
│   │       ├── docker.io_library_busybox:1.37.0.tar
│   │       ├── ghcr.io_spiffe_spire-agent:1.9.6.tar
│   │       ├── ghcr.io_spiffe_spire-server:1.9.6.tar
│   │       ├── quay.io_cilium_certgen:v0.2.1.tar
│   │       ├── quay.io_cilium_cilium-envoy:v1.32.5-1744305768-f9ddca7dcd91f7ca25a505560e655c47d3dec2cf.tar
│   │       ├── quay.io_cilium_cilium:v1.17.3.tar
│   │       ├── quay.io_cilium_clustermesh-apiserver:v1.17.3.tar
│   │       ├── quay.io_cilium_hubble-relay:v1.17.3.tar
│   │       ├── quay.io_cilium_hubble-ui-backend:v0.13.2.tar
│   │       ├── quay.io_cilium_hubble-ui:v0.13.2.tar
│   │       ├── quay.io_cilium_operator-alibabacloud:v1.17.3.tar
│   │       ├── quay.io_cilium_operator-aws:v1.17.3.tar
│   │       ├── quay.io_cilium_operator-azure:v1.17.3.tar
│   │       ├── quay.io_cilium_operator-generic:v1.17.3.tar
│   │       ├── quay.io_cilium_operator:v1.17.3.tar
│   │       └── quay.io_cilium_startup-script:c54c7edeab7fde4da68e59acd319ab24af242c3f.tar
...

├── extends
│   └── addon
│       ├── charts
│       │   ├── cilium-v1.17.3.tgz
│       │   ├── csi-driver-nfs-v4.6.0.tgz
│       │   ├── csi-driver-nfs-v4.8.0.tgz
│       │   ├── csi-driver-nfs-v4.9.0.tgz
│       │   ├── gpu-operator-v23.9.0.tgz
│       │   ├── gpu-operator-v24.9.0.tgz
│       │   └── kore-board-0.5.5.tgz
│       ├── images
│       │   └── cilium
│       │       └── cilium-v1.17.3.tgz
│       └── profile
│           ├── cilium
│           │   ├── default-airgap-clustermesh.yaml
│           │   ├── default-airgap.yaml
│           │   ├── default-clustermesh.yaml
│           │   └── default.yaml
│           ├── csi-driver-nfs
│           │   └── default.yaml
│           ├── gpu-operator
│           │   └── default.yaml
│           └── kore-board
│               └── default.yaml
└── LICENSE.txt

Push cilium image

  • Push registry 명령어를 이용하여 cilium image를 업로드해야합니다.

$ bin/cubectl push registry -u test -p ~/Desktop/key-list/node-ssh
┌─────────────────┬───────────┬────────────────┬───────────────┬─────────────────────────────────────────────────────────────────────────────────────────────┐
│ KIND            │ NODE      │ IP             │ PRIVATE IP    │ PUSH IMAGES                                                                                 │
├─────────────────┼───────────┼────────────────┼───────────────┼─────────────────────────────────────────────────────────────────────────────────────────────┤
│ Push Repository │ node-regi │ 192.168.88.188 │ 10.50.240.253 │ docker.io_library_busybox:1.37.0.tar                                                        │
│                 │           │                │               │ ghcr.io_spiffe_spire-agent:1.9.6.tar                                                        │
│                 │           │                │               │ ghcr.io_spiffe_spire-server:1.9.6.tar                                                       │
│                 │           │                │               │ quay.io_cilium_certgen:v0.2.1.tar                                                           │
│                 │           │                │               │ quay.io_cilium_cilium-envoy:v1.32.5-1744305768-f9ddca7dcd91f7ca25a505560e655c47d3dec2cf.tar │
│                 │           │                │               │ quay.io_cilium_cilium:v1.17.3.tar                                                           │
│                 │           │                │               │ quay.io_cilium_clustermesh-apiserver:v1.17.3.tar                                            │
│                 │           │                │               │ quay.io_cilium_hubble-relay:v1.17.3.tar                                                     │
│                 │           │                │               │ quay.io_cilium_hubble-ui-backend:v0.13.2.tar                                                │
│                 │           │                │               │ quay.io_cilium_hubble-ui:v0.13.2.tar                                                        │
│                 │           │                │               │ quay.io_cilium_operator-alibabacloud:v1.17.3.tar                                            │
│                 │           │                │               │ quay.io_cilium_operator-aws:v1.17.3.tar                                                     │
│                 │           │                │               │ quay.io_cilium_operator-azure:v1.17.3.tar                                                   │
│                 │           │                │               │ quay.io_cilium_operator-generic:v1.17.3.tar                                                 │
│                 │           │                │               │ quay.io_cilium_operator:v1.17.3.tar                                                         │
│                 │           │                │               │ quay.io_cilium_startup-script:c54c7edeab7fde4da68e59acd319ab24af242c3f.tar                  │
└─────────────────┴───────────┴────────────────┴───────────────┴─────────────────────────────────────────────────────────────────────────────────────────────┘

Cilium addon install

  • Addon install 실행 전 각각의 클러스에서 해당 명령어 실행 필수

$ sudo kubectl create secret generic -n kube-system cilium-etcd-secrets --from-file=etcd-client-ca.crt=/etc/kubernetes/pki/etcd/ca.crt --from-file=etcd-client.key=/etc/kubernetes/pki/etcd/healthcheck-client.key --from-file=etcd-client.crt=/etc/kubernetes/pki/etcd/healthcheck-client.crt --kubeconfig [ kubeconfig path ]
secret/cilium-etcd-secrets created
  • 설치 가능한 애드온 명칭 및 profile 조회

    • --kubeconfig 미입력 시 기본값 : ${CUBE_HOME}/config/{{ CLUSTER }}/acloud-client-kubeconfig

    • --profile 미입력 시 기본 적용 파일 : ${CUBE_HOME}/extends/addon/profile/cilium/default.yaml

$ bin/cubectl addon list
┌────────────────┬─────────┬─────────┬────────────────────────────┬────────────────────────────────────────┐
│ ADDON NAME     │ VERSION │ STATUS  │ PROFILE                    │ VALUES PATH                            │
├────────────────┼─────────┼─────────┼────────────────────────────┼────────────────────────────────────────┤
│ gpu-operator   │ v24.9.0 │ unknown │                            │ gpu-operator/default.yaml              │
│ cilium         │ 1.17.3  │ unknown │ default-airgap-clustermesh │ cilium/default-airgap-clustermesh.yaml │
│                │         │         │ default-airgap             │ cilium/default-airgap.yaml             │
│                │         │         │ default-clustermesh        │ cilium/default-clustermesh.yaml        │
│                │         │         │                            │ cilium/default.yaml                    │
│ csi-driver-nfs │ v4.10.0 │ unknown │                            │ csi-driver-nfs/default.yaml            │
└────────────────┴─────────┴─────────┴────────────────────────────┴────────────────────────────────────────┘
Duration 30.379208ms time
  • profile 값 수정

    • default.yaml(cilium 온라인 기본 설치)

    • default-clustermesh.yaml(cilium clustermesh 설치, 수정 필요)

    • default-airgap.yaml(cilium 폐쇄망 설치, 수정 필요)

    • default-airgap-clustermesh.yaml(cilium 폐쇄망 clustermesh 설치, 수정 필요)

$ vi ${CUBE_HOME}/extends/addon/profile/cilium/default-airgap.yaml
...
  • Addon 설치

$ bin/cubectl addon enable cilium -n kube-system --profile default-airgap.yaml
addon enable start: cilium ...
addon enable complete: cilium
Duration 1m16.91672575s time
  • Addon 설치 확인

$ bin/cubectl addon list
┌────────────────┬─────────┬────────────┬────────────────────────────┬────────────────────────────────────────┐
│ ADDON NAME     │ VERSION │ STATUS     │ PROFILE                    │ VALUES PATH                            │
├────────────────┼─────────┼────────────┼────────────────────────────┼────────────────────────────────────────┤
│ cilium         │ 1.17.3  │ enabled ✅ │ default-airgap-clustermesh │ cilium/default-airgap-clustermesh.yaml │
│                │         │            │ default-airgap             │ cilium/default-airgap.yaml             │
│                │         │            │ default-clustermesh        │ cilium/default-clustermesh.yaml        │
│                │         │            │                            │ cilium/default.yaml                    │
│ csi-driver-nfs │ v4.10.0 │ disabled   │                            │ csi-driver-nfs/default.yaml            │
│ gpu-operator   │ v24.9.0 │ disabled   │                            │ gpu-operator/default.yaml              │
│ kore-board     │ 0.5.5   │ disabled   │                            │ kore-board/default.yaml                │
└────────────────┴─────────┴────────────┴────────────────────────────┴────────────────────────────────────────┘
Duration 241.054958ms time

$ kubectl get pod -A
NAMESPACE     NAME                                     READY   STATUS    RESTARTS   AGE
kube-system   cilium-cz8j8                             1/1     Running   0          3m3s
kube-system   cilium-envoy-lqrrk                       1/1     Running   0          3m3s
kube-system   cilium-envoy-z87nh                       1/1     Running   0          3m3s
kube-system   cilium-hfrmw                             1/1     Running   0          3m3s
kube-system   cilium-operator-86d86869fd-444fv         1/1     Running   0          3m3s
kube-system   cilium-operator-86d86869fd-bn848         1/1     Running   0          3m3s
kube-system   coredns-7b9dbb4b67-2255m                 1/1     Running   0          6m38s
kube-system   coredns-7b9dbb4b67-vdlkv                 1/1     Running   0          6m38s
kube-system   haproxy-temp-wk-node-1                   1/1     Running   0          4m56s
kube-system   kube-apiserver-temp-cp-node-1            1/1     Running   0          6m39s
kube-system   kube-controller-manager-temp-cp-node-1   1/1     Running   0          6m39s
kube-system   kube-proxy-24xsp                         1/1     Running   0          4m56s
kube-system   kube-proxy-bl97s                         1/1     Running   0          6m23s
kube-system   kube-scheduler-temp-cp-node-1            1/1     Running   0          6m39s
kube-system   metrics-server-5ccf9c5678-rbrc5          1/1     Running   0          6m18s

Addon 삭제

$ bin/cubectl addon disable cilium --kubeconfig [ kubeconfig path ]
addon disable start: cilium ...
Error: addon disable fail: uninstallation completed with 1 error(s): context deadline exceeded
exit status 1

삭제 후 재설치 시도시 에러 발생할 때

해당하는 클러스터 이동하여 아래 명령어를 순차적으로 실행 후 재설치 시도

$ kubectl get ns -A

$ kubectl get ns
NAME              STATUS        AGE
cilium-secrets    Terminating   66s
default           Active        9m37s
kube-node-lease   Active        9m37s
kube-public       Active        9m37s
kube-system       Active        9m37s

$ kubectl get namespace cilium-secrets -o json > tmp-ns.json
$ vi tmp-ns.json
# 해당 파일 수정 시 spec 부분을 빈칸으로 만들어준다.
# ex) spec: {},
$ kubectl replace --raw "/api/v1/namespaces/cilium-secrets/finalize" -f ./tmp-ns.json
{"kind":"Namespace","apiVersion":"v1","metadata":{"name":"cilium-secrets","uid":"e47bd9f0-983f-414a-a351-62e2e7a9753a","resourceVersion":"1744",
...
"reason":"ContentHasNoFinalizers","message":"All content-preserving finalizers finished"}]}}

Last updated