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