Стадия жизненного цикла модуля: General Availability

Для взаимодействия с ресурсами в DVP компоненты Deckhouse Kubernetes Platform используют API DVP. Для настройки подключения создайте пользователя (ServiceAccount), назначьте ему соответствующие права доступа и сгенерируйте kubeconfig.

Провайдер поддерживает работу только с одним диском в шаблоне виртуальной машины. Убедитесь, что шаблон содержит только один диск.

Если модуль update-hostname пакета cloud-init не отключён, рекомендуется изменить частоту его запуска с always на once-per-instance.

Для этого измените конфигурацию модуля update-hostname в файле /etc/cloud/cloud.cfg:

cloud_init_modules:
  ...
  - [update-hostname, once-per-instance]
  ...

Также модуль update-hostname можно полностью отключить, удалив его из списка модулей cloud_init_modules в файле /etc/cloud/cloud.cfg.

Создание пользователя

Создайте нового пользователя в кластере DVP с помощью следующей команды:

d8 k create -f -<<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
  name: sa-demo
  namespace: default
---
apiVersion: v1
kind: Secret
metadata:
  name: sa-demo-token
  namespace: default
  annotations:
    kubernetes.io/service-account.name: sa-demo
type: kubernetes.io/service-account-token
EOF

Добавление роли

Добавьте роль созданному пользователю в кластере DVP с помощью следующей команды:

d8 k create -f -<<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: sa-demo-rb
  namespace: default
subjects:
  - kind: ServiceAccount
    name: sa-demo
    namespace: default
roleRef:
  kind: ClusterRole
  name: d8:use:role:manager
  apiGroup: rbac.authorization.k8s.io
EOF

Генерация kubeconfig

Сгенерируйте kubeconfig, который будет использоваться в файле первичной конфигурации кластера:

cat <<EOF > kubeconfig
apiVersion: v1
clusters:
- cluster:
    server: https://<KUBE-APISERVER-URL>   # Замените на реальный адрес API-сервера кластера.
  name: <CLUSTER-NAME>                     # Замените на имя кластера.
contexts:
- context:
    cluster: <CLUSTER-NAME>                # Замените на имя кластера.
    user: sa-demo
    namespace: default
  name: sa-demo-context
current-context: sa-demo-context
kind: Config
preferences: {}
users:
- name: sa-demo
  user:
    token: $(d8 k get secret sa-demo-token -n default -o json | jq -rc .data.token | base64 -d)
EOF

Закодируйте сгенерированный kubeconfig в кодировке Base64 (он указывается в файле первичной конфигурации в таком виде):

base64 kubeconfig | tr -d '\n'