Для управления ресурсами в Google Cloud с помощью Deckhouse Kubernetes Platform необходимо создать Service Account.
Провайдер поддерживает работу только с одним диском в шаблоне виртуальной машины. Убедитесь, что шаблон содержит только один диск.
Создание Service Account
Подробную инструкцию по созданию Service Account можно найти в документации провайдера.
Созданный service account key
невозможно восстановить, только удалить и создать новый.
Настройка через Google Cloud Console
Перейдите в Google Cloud Console, выберите проект и создайте новый Service Account (также можно выбрать уже существующий).
Созданному Service Account должны быть присвоены несколько обязательных ролей:
Compute Admin
Service Account User
Network Management Admin
Роли можно присвоить на этапе создания Service Account либо изменить.
Чтобы получить service account key
в JSON-формате, на странице в колонке «Actions» нажмите на три вертикальные точки и выберите «Manage keys». Затем нажмите «Add key» → «Create new key» → «Key type» → «JSON».
Настройка через Google Cloud CLI
Установите и инициализируйте Google Cloud CLI, следуя официальной инструкции.
Для создания Service Account через интерфейс командной строки выполните следующие шаги:
-
Экспортируйте переменные окружения:
export PROJECT_ID=sandbox export SERVICE_ACCOUNT_NAME=deckhouse
-
Выберите project:
gcloud config set project $PROJECT_ID
-
Создайте Service Account:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME
-
Присвойте роли созданному Service Account:
for role in roles/compute.admin roles/iam.serviceAccountUser roles/networkmanagement.admin; do gcloud projects add-iam-policy-binding ${PROJECT_ID} --member=serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com \ --role=${role}; done
Список необходимых ролей:
roles/compute.admin roles/iam.serviceAccountUser roles/networkmanagement.admin
-
Выполните проверку ролей Service Account:
gcloud projects get-iam-policy ${PROJECT_ID} --flatten="bindings[].members" --format='table(bindings.role)' \ --filter="bindings.members:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"
-
Создайте
service account key
:gcloud iam service-accounts keys create --iam-account ${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com \ ~/service-account-key-${PROJECT_ID}-${SERVICE_ACCOUNT_NAME}.json
Использование созданного Service Account
Полученный service account key
указывается в секции provider.serviceAccountJSON: "<SERVICE_ACCOUNT_JSON>"
ресурса GCPClusterConfiguration.
Пример:
apiVersion: deckhouse.io/v1
kind: GCPClusterConfiguration
layout: WithoutNAT
sshKey: "<SSH_PUBLIC_KEY>"
subnetworkCIDR: 10.36.0.0/24
masterNodeGroup:
replicas: 1
zones:
- europe-west3-b
instanceClass:
machineType: n1-standard-4
image: projects/ubuntu-os-cloud/global/images/ubuntu-2404-noble-amd64-v20240523a
diskSizeGb: 50
nodeGroups:
- name: static
replicas: 1
zones:
- europe-west3-b
instanceClass:
machineType: n1-standard-4
image: projects/ubuntu-os-cloud/global/images/ubuntu-2404-noble-amd64-v20240523a
diskSizeGb: 50
additionalNetworkTags:
- tag1
additionalLabels:
kube-node: static
provider:
region: europe-west3
serviceAccountJSON: "<SERVICE_ACCOUNT_JSON>"