Mình biết đến Cilium là do các anh bên infra trong công ty đang có plan POC and migrate các workload sang dataplane-v2 on GKE.
Và mình có thấy 1 dashboard cũng hay hay kiểu giống giống như kiali.
1) A few researching first.
Điều đầu tiên trong link này dưới:
https://cloud.google.com/kubernetes-engine/docs/how-to/dataplane-v2
You can enable GKE Dataplane V2 when you create new clusters with GKE version 1.20.6-gke
Chúng ta sẽ cần dựng 1 cụm mới, 1 cluster mới. chứ không phải là upgrade cluster đang sử dụng.
Vấn để khá là khoai. My mission is the migrating spinnaker which is very hard.
Vấn đề này thì khá là hay ho trong: https://docs.cilium.io/en/v1.9/gettingstarted/kubeproxy-free/
Kubernetes Without kube-proxy:
This guide explains how to provision a Kubernetes cluster without kube-proxy
, and to use Cilium to fully replace it
=> Điều này nghĩ là chúng ta ko cần sử dụng kube-proxy và nếu bạn đang sử dụng CNI: Calico hay Flannel thì xoá hết chúng đi vì Cilium cân được hết.
2) Install new kubernetes cluster with Cilium.
Làm gì thì làm chúng ta cần cài lên thì mới vọc được.
Mình cài cluster k8s ở dưới on-premise bằng K0S. Nếu các bạn đã sem nhiều post của Nim chắc không là gì. Bạn làm theo link bên dưới nhé.
Install kubernetes with Cilium CNI Provider by K0s(update Sun, Mar 20th, 2022)
Giờ test lại xem cluster mới cài lên đã work ngon lành chưa?
https://docs.cilium.io/en/v1.9/gettingstarted/k8s-install-kubeadm/#deploy-the-connectivity-test
>>>>>>create namespace.
kubectl create ns cilium-test
>>>>>>>deploy workload.
kubectl apply -n cilium-test -f https://raw.githubusercontent.com/cilium/cilium/v1.9/examples/kubernetes/connectivity-check/connectivity-check.yaml
Sau đó bạn show all ns cilium-test sẽ thấy có 1 service NodePort. Rồi bạn truy cập vào svc đó bằng browser nếu hiện lên hình thì ngon.
kubectl get all -n cilium-test
Vậy là ngon rồi đó!
3) Enable the Hubble UI
https://docs.cilium.io/en/stable/gettingstarted/hubble/#service-map-hubble-ui
Hiện tại mình sẽ vẫn cài theo helm nhé.
Vì lúc trước mình cái cilium bằng cách khai báo helm chart trên K0s. Giờ mình muốn cài thêm Hubble UI
helm upgrade cilium cilium/cilium --version 1.11.2 --namespace kube-system --reuse-values --set hubble.relay.enabled=true --set hubble.ui.enabled=true
Vậy mình install
helm install cilium cilium/cilium --version 1.11.2 --namespace kube-system --set hubble.relay.enabled=true --set hubble.ui.enabled=true
Vì mình biết helm name sẽ là cilium-1647758336
nên mình thực hiện upgrade cho đúng.
helm upgrade cilium-1647758336 cilium/cilium --version 1.11.2 --namespace kube-system --reuse-values --set hubble.relay.enabled=true --set hubble.ui.enabled=true
Giờ thì config Nodeport sài ngay cho nóng.
kubectl edit service/hubble-ui -n kube-system
Ok phần này chúng ta sẽ dụng lại ở việc cài chạy.
Nếu có tính năng ghì hay ho mình sẽ post thêm
Provide LoadBalancer IP Address by Cilium.
Ở phiên cilium 1.13 chúng ta có feature so hot và rất vui cho anh em sài k8s on-premise.
từ giờ chúng ta không cần sử dụng metallb để provide IP Address cho service LoadBalancer
Reference Links:
https://dariomader.io/post/how_i_moved_from_metallb_to_cilium/
https://github.com/cilium/cilium/issues/18240
https://redmine.ungleich.ch/projects/open-infrastructure/wiki/The_ungleich_kubernetes_infrastructure
###Helm### bgp: enabled: true announce: podCIDR: true loadbalancerIP: true ###ConfigMap### apiVersion: v1 kind: ConfigMap metadata: name: bgp-config namespace: cilium data: config.yaml: | address-pools: - name: default protocol: bgp addresses: - 192.168.101.220/32