В этом руководстве показана регистрация Kubernetes-кластера путём развёртывания Kubernetes Service (chart airlock-kube-agent) на защищаемом кластере.

Pod Kubernetes Service определяет, что работает в Kubernetes, и автоматически регистрирует кластер в Airlock.

Предварительные требования

  • Работающий кластер Airlock, airctl и airsh совместимой с сервером версии:
airctl version
airsh version
  • Kubernetes >= 1.28, Helm >= 3.14, kubectl с доступом к целевому кластеру:
helm version
kubectl version
  • Доступ администратора к веб-интерфейсу Airlock (для мастера регистрации) или возможность выполнить шаги вручную ниже.

Шаг 1 из 3. RBAC в Airlock и Kubernetes

Роль Airlock

Создайте kube-access.yaml:

kind: role
metadata:
  name: kube-access
version: v6
spec:
  allow:
    kubernetes_labels:
      '*': '*'
    kubernetes_resources:
      - kind: 'pod'
        namespace: '*'
        name: '*'
    kubernetes_groups:
    - viewers
  deny: {}
airctl create -f kube-access.yaml

Назначьте роль пользователю через airctl users update.

ClusterRoleBinding в Kubernetes

Группа viewers должна иметь права в кластере. Создайте viewers-bind.yaml:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: viewers-crb
subjects:
- kind: Group
  name: viewers
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: view
  apiGroup: rbac.authorization.k8s.io
kubectl apply -f viewers-bind.yaml

Шаг 2 из 3. Развёртывание Kubernetes Service

Helm-репозиторий

helm repo add airlock https://charts.airlock.deckhouse.ru
helm repo update

Ручная установка

Сгенерируйте join-токен:

airctl tokens add --type=kube --ttl=1h

Создайте файл значений airlock-kube-agent-values.yaml (подставьте токен и адрес proxy):

roles: kube
proxyAddr: airlock.example.com:443
authToken: "YOUR_KUBE_JOIN_TOKEN"
kubeClusterName: my-k8s-cluster

Установите chart в namespace airlock-agent:

kubectl create namespace airlock-agent
helm install airlock-agent airlock/airlock-kube-agent \
  --namespace airlock-agent \
  --values airlock-kube-agent-values.yaml

Проверьте pod:

kubectl get pods -n airlock-agent

Через веб-интерфейс: Enroll New Resource → Kubernetes — скопируйте сгенерированную команду и выполните её на рабочей станции.

Шаг 3 из 3. Проверка доступа

Войдите в Airlock:

airsh login --proxy=airlock.example.com:443 --user=myuser

Список кластеров:

airsh kube ls

Получите учётные данные для kubectl:

airsh kube login my-k8s-cluster
kubectl get pods -n airlock-agent

Ожидаемый вывод:

NAME               READY   STATUS    RESTARTS   AGE
airlock-agent-0   1/1     Running   0          8m

Следующие шаги

  • Ограничьте доступ через метки Kubernetes и роли Airlock вместо широких прав view на все namespace.
  • Если Auth Service и Proxy Service уже развёрнуты отдельно, достаточно агента без chart airlock-cluster.