Cilium
Подготовка конфигурации машины
При создании конфигурации машины для узла ALT Orchestra установите для параметра CNI значение none. Например, с помощью патча конфигурации:
$ cat <<EOF > patch.yaml
cluster:
network:
cni:
name: none
EOF
$ talosctl gen config \
my-cluster https://mycluster.local:6443 \
--config-patch @patch.yamlПримечание: после применения конфигурации машины и начальной загрузки, ALT Orchestra зависнет на этапе 18/19 с сообщением: retrying error: node not ready. Это происходит потому, что узлы в Kubernetes помечаются как готовые только после запуска CNI. Поскольку CNI не определен, процесс загрузки находится в состоянии ожидания, и узел будет перезагружен для повторной попытки через 10 минут, что является ожидаемым поведением.
Установка с помощью cilium CLI
Для установки и управления Cilium с рабочего места администратора можно использовать утилиту cilium-cli. Например, команда установки без использования kube-proxy может выглядеть так:
# apt-get update && apt-get install cilium-cli
$ cilium install \
--set ipam.mode=kubernetes \
--set kubeProxyReplacement=true \
--set securityContext.capabilities.ciliumAgent="{CHOWN,KILL,NET_ADMIN,NET_RAW,IPC_LOCK,SYS_ADMIN,SYS_RESOURCE,DAC_OVERRIDE,FOWNER,SETGID,SETUID}" \
--set securityContext.capabilities.cleanCiliumState="{NET_ADMIN,SYS_ADMIN,SYS_RESOURCE}" \
--set cgroup.autoMount.enabled=false \
--set cgroup.hostRoot=/sys/fs/cgroup \
--set k8sServiceHost=localhost \
--set k8sServicePort=7445 \
--version $VERSIONДля установки Cilium на базе ALT Linux добавьте:
-f https://altlinux.space/cloud/charts/raw/branch/master/cilium/<branch>/<version>/values.yamlПримечание: перед установкой желательно проверить, удовлетворяют ли вас настройки в указанном выше файле.
Далее ожидайте устновки Cilium на кластере ALT Orchestra (процесс может занять несколько минут). Статус установки можно отслеживать с помощью cilium-cli утилиты, установленной на рабочем месте администратора:
$ cilium status --waitУстановка с помощью Helm
При необходимости обратитесь к документации Cilium по установке с помощью helm.
Установите helm на рабочее место администратора. Добавьте репозиторий helm для Cilium и обновите ресурсы.
$ helm repo add cilium https://helm.cilium.io/
$ helm repo updateУстановите Cilium, выполнив следующую команду:
$ helm install \
cilium \
cilium/cilium \
--version $VERSION \
--namespace kube-system \
--set ipam.mode=kubernetes \
--set kubeProxyReplacement=false \
--set securityContext.capabilities.ciliumAgent="{CHOWN,KILL,NET_ADMIN,NET_RAW,IPC_LOCK,SYS_ADMIN,SYS_RESOURCE,DAC_OVERRIDE,FOWNER,SETGID,SETUID}" \
--set securityContext.capabilities.cleanCiliumState="{NET_ADMIN,SYS_ADMIN,SYS_RESOURCE}" \
--set cgroup.autoMount.enabled=false \
--set cgroup.hostRoot=/sys/fs/cgroupИли, если вы хотите развернуть Cilium без kube-proxy, также установите несколько дополнительных параметров:
$ helm install \
cilium \
cilium/cilium \
--version $VERSION \
--namespace kube-system \
--set ipam.mode=kubernetes \
--set kubeProxyReplacement=true \
--set securityContext.capabilities.ciliumAgent="{CHOWN,KILL,NET_ADMIN,NET_RAW,IPC_LOCK,SYS_ADMIN,SYS_RESOURCE,DAC_OVERRIDE,FOWNER,SETGID,SETUID}" \
--set securityContext.capabilities.cleanCiliumState="{NET_ADMIN,SYS_ADMIN,SYS_RESOURCE}" \
--set cgroup.autoMount.enabled=false \
--set cgroup.hostRoot=/sys/fs/cgroup \
--set k8sServiceHost=localhost \
--set k8sServicePort=7445А также с поддержкой GatewayAPI:
...
--set=gatewayAPI.enabled=true \
--set=gatewayAPI.enableAlpn=true \
--set=gatewayAPI.enableAppProtocol=trueДля установки Cilium на базе ALT Linux добавьте:
-f https://altlinux.space/cloud/charts/raw/branch/master/cilium/<branch>/<version>/values.yamlПримечание: перед установкой желательно проверить, удовлетворяют ли вас настройки в указанном выше файле. Например, с помощью следующей команды можно получить результирующий манифест для проверки, и, если все в порядке, применить его:
$ helm template \
cilium \
cilium/cilium \
--version $VERSION \
--namespace kube-system \
--set ipam.mode=kubernetes \
--set kubeProxyReplacement=false \
--set securityContext.capabilities.ciliumAgent="{CHOWN,KILL,NET_ADMIN,NET_RAW,IPC_LOCK,SYS_ADMIN,SYS_RESOURCE,DAC_OVERRIDE,FOWNER,SETGID,SETUID}" \
--set securityContext.capabilities.cleanCiliumState="{NET_ADMIN,SYS_ADMIN,SYS_RESOURCE}" \
--set cgroup.autoMount.enabled=false \
--set cgroup.hostRoot=/sys/fs/cgroup > cilium.yaml
$ kubectl apply -f cilium.yamlДалее ожидайте устновки Cilium на кластере ALT Orchestra (процесс может занять несколько минут). Статус установки можно отслеживать с помощью cilium-cli утилиты, установленной на рабочем месте администратора:
$ cilium status --waitПроверка работы сети
После успешной установки Cilium на кластере можете проверить работоспособность сети с помощью встроенной команды тестирования в утилиту cilium-cli. Предварительно можно активировать веб-интерфейс hubble, по-умолчанию встроенный в конфигурацию Cilium, для отслеживания сетевого трафика.
# apt-get update && apt-get install cilium-cli
$ cilium status # проверка статуса
$ cilium connectivity test # запуск тестого трафикаПримечание: проверка сети может зависнуть и/или выдать ошибки, аналогичные нижеуказанным. Это ожидаемо, вы можете обойти это, добавив pod-security.kubernetes.io/enforce=privileged метку на уровне namespase.
Error creating: pods "client-69748f45d8-9b9jg" is forbidden: violates PodSecurity "baseline:latest": non-default capabilities (container "client" must not include "NET_RAW" in securityContext.capabilities.add)