Cilium- это полноценное решение для управления сетями в kubernetes. Используя cilium мы можем конфигурировать сети внутри кластера и делать (к примеру) loadBalancer (замена Metallb)
Для установки и деплоя cilium нам необходимо:
Скачать утилиту cilium: https://github.com/cilium/cilium-cli/releases
После чего прописать необходимые параметры для установки. К примеру, через файл:
cparams.yaml:
image:
tag: "v1.17.6"
hubble:
enabled: false
prometheus:
enabled: true
envoy:
enabled: false
ipam:
mode: kubernetes
kubeProxyReplacement: true
serviceCIDR: "10.128.0.0/16"
routingMode: tunnel
tunnelProtocol: vxlan
securityContext:
capabilities:
ciliumAgent:
- CHOWN
- KILL
- NET_ADMIN
- NET_RAW
- IPC_LOCK
- SYS_ADMIN
- SYS_RESOURCE
- DAC_OVERRIDE
- FOWNER
- SETGID
- SETUID
cleanCiliumState:
- NET_ADMIN
- SYS_ADMIN
- SYS_RESOURCE
cgroup:
autoMount:
enabled: false
hostRoot: /sys/fs/cgroup
bpf:
masquerade: true
endpointRoutes:
enabled: true
localRedirectPolicy: true
rollOutCiliumPods: true
operator:
rollOutPods: true
k8sServiceHost: 10.10.0.20
k8sServicePort: 6443
И устанавливаем командой: cilium install -f cparams.yaml
После чего проверяем статус установки cilium с помощью cilium status
Ну и можем задеплоить loadBalancer в наш кластер используя следующий манифест:
l2.yaml:
apiVersion: cilium.io/v2alpha1
kind: CiliumL2AnnouncementPolicy
metadata:
name: l2-announcement
namespace: kube-system
spec:
nodeSelector:
matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: DoesNotExist
externalIPs: true
loadBalancerIPs: true
---
apiVersion: cilium.io/v2alpha1
kind: CiliumLoadBalancerIPPool
metadata:
name: default-pool
namespace: kube-system
spec:
blocks:
- cidr: 10.10.0.20/32 #Тут подставляем vip адрес