Установка gcloud
Перед использованием необходимо создать проект и включить биллинг для этого проекта в Google Console
Экспорт переменной окружения с корректным дистрибутивом
1 |
# export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" |
Добавление репозитария Googl SDK
1 |
# echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list |
Импортирование Google Cloud публичного ключа
1 |
# curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - |
Обновление локального кеша пакетов и установка google-cloud-sdk
1 |
# sudo apt-get update && sudo apt-get install google-cloud-sdk |
Базовая инициализация конфигурации
1 |
# gcloud init |
— разрешаем доступ для gcloud в Google-аккаунте
— выбираем проект на который будет конфигурироваться gcloud
Список аккаунтов, чьи credentials сохраняются на этом компе
1 |
# gcloud auth list |
1 2 3 4 5 |
Credentialed Accounts ACTIVE ACCOUNT * myname@mydomain.com To set the active account, run: $ gcloud config set account `ACCOUNT` |
Просмотр Cloud SDK свойств для текущей активной конфигурации
1 |
# gcloud config list |
1 2 3 4 5 6 7 8 9 |
[compute] region = europe-west1 zone = europe-west1-b [core] account = myname@mydomain.com disable_usage_reporting = True project = mydemoproject-123456 Your active configuration is: [default] |
Просмотр сушествующих и активной конфигураций
1 |
# gcloud config configurations list |
Просмотр информации о текущем gcloud окружении
1 |
# gcloud info |
Gcloud хранит свои настройки по пути
1 |
~/.config/gcloud/ |
Установка,удаление,обновление и просмотр Google Cloud SDK компонентов
1 |
# gcloud components list |
Справка по команде gcloud
1 |
# gcloud help |
1 2 3 4 5 |
After you set this property, all of your gcloud compute commands use the default project ID unless you override it with the --project flag or set the CLOUDSDK_CORE_PROJECT environment variable. If you do not set a default project or environment variable, you must include a --project flag in each gcloud compute command that you run. gcloud uses the concept of configurations to help you manage your credentials for different accounts. Each configuration contains the email account to authenticate with, and specific settings like the default project ID, default zone setting, and so on. gcloud automatically comes installed with a default configuration. This is the configuration whose credentials will be used to authenticate to Google Cloud Platform services. For most users, just using the default configuration is enough. If you have use cases that require that you switch between accounts, you can create more configurations that you can alternate between. |
Изменение/установка настроек зоны и региона
Перед изменением/установкой зоны и региона необходимо проверить и выбрать необходимую конфигурацию gcloud, на которой нужно изменить/настроить регион и зону
Просмотр существующих конфигураций
1 |
# gcloud config configurations list |
1 2 |
NAME IS_ACTIVE ACCOUNT PROJECT DEFAULT_ZONE DEFAULT_REGION default True myname@mydomain.com mydemoproject-123456 |
Активация нужной конфигурацц(если она еще не активирована)
1 |
# gcloud config configurations activate CONFIGURATION_NAME |
Порядок применеия настроек региона и зоны:
Отсортированы по самому высокому приоритету
1. Указанные в командной строке при выполнении команды через параметры
1 |
--zone и/или --region |
2. Указанные в переменных окружения
1 2 |
export CLOUDSDK_COMPUTE_ZONE=ZONE export CLOUDSDK_COMPUTE_REGION=REGION |
Чтобы сделать эти переменные постоянными, необходимо добавить их в файл
~/.bashrc и выполнить source ~/.bashrc
3.Установлены в локальной конфигурации через команды
1 2 |
gcloud config set compute/zone ZONE gcloud config set compute/region REGION |
Например
1 |
# gcloud config set compute/zone europe-west1-b |
1 |
# gcloud config set compute/region europe-west1 |
4.Установлены через metadata-сервер с помощью команды,например
1 |
# gcloud compute project-info add-metadata --metadata google-compute-default-region=europe-west1,google-compute-default-zone=europe-west1-b |
После выполнения этой команды необходимо выполнить команду
1 |
# gcloud init |
для изменения настроек в default-конфигурации
Просмотр дефолтной конфигурации
1 |
# gcloud config list |
Список доступных зон
1 |
# gcloud compute zones list |
Список доступных регионов
1 |
# gcloud compute regions list |
https://cloud.google.com/compute/docs/gcloud-compute/#default-properties
Создание новой конфигурации(в добавок к уже существующей default-конфигурации)
gcloud может иметь только одну активную конфигурацию в текущий момент времени
Все остальные конфигурации gcloud являются неактивными и не оказывают влияние на gcloud до тех пор,пока одна из них не станет активной
https://cloud.google.com/sdk/gcloud/reference/topic/configurations
1 |
gcloud init→Create a new configuration→myproject2(имя конфигурации)→выбрать акаунт,который имеет доступ к этому проекту(myname@mydomain.com)→выбрать необходисый проект(myproject2-654321)→настроить дефолтную зону(автоматичкески установится дефолтный регион исходя из выбранной зоны) |
По умолчанию вновь созданная конфигурация становится текущей и доступна по команде
1 |
# gcloud config list |
1 2 3 4 5 6 7 8 9 |
[compute] region = us-east1 zone = us-east1-b [core] account = myname@mydomain.com disable_usage_reporting = True project = myproject2-654321 Your active configuration is: [myproject2] |
Список всех конфигураций
1 |
# gcloud config configurations list |
1 2 3 |
NAME IS_ACTIVE ACCOUNT PROJECT DEFAULT_ZONE DEFAULT_REGION myproject2 True myname@mydomain.com myproject2-654321 us-east1-b us-east1 default False myname@mydomain.com mydemoproject-123456 europe-west1-b europe-west1 |
Устанавливаем активную default-конфигурацию
1 |
# gcloud config configurations activate default |
1 |
Activated [default]. |
1 |
# gcloud config configurations list |
1 2 3 |
NAME IS_ACTIVE ACCOUNT PROJECT DEFAULT_ZONE DEFAULT_REGION myproject2 False myname@mydomain.com myproject2-654321 us-east1-b us-east1 default True myname@mydomain.com mydemoproject-123456 europe-west1-b europe-west1 |
Для push Docker-образов в Google Container registry
1 |
# gcloud auth configure-docker |
При попытки загрузить образ в Google Container registry получааем ошибку
1 |
# docker push gcr.io/mydemoproject-123456/alpine:3.7 |
1 2 3 |
The push refers to repository [gcr.io/mydemoproject-123456/alpine] ebf12965380b: Preparing denied: Token exchange failed for project 'mydemoproject-123456'. Please enable Google Container Registry API in Cloud Console at https://console.cloud.google.com/apis/api/containerregistry.googleapis.com/overview?project=mydemoproject-123456 before performing this operation. |
По указанной ссылке
https://console.cloud.google.com/apis/api/containerregistry.googleapis.com/overview?project=mydemoproject-123456
включаем Google Container Registry API
После чего загружаем образ
1 |
# docker push gcr.io/mydemoproject-123456/alpine:3.7 |
После чего образ становися доступным в
1 |
Google Cloud Console→Container Registry→Images |
Если ноды кластера находятся в одном и том же проекте,что и Docker/Container registry, то ноды автоматически имеют доступ к приватным образам(т.е. могут выполнить docker pull)
Создание Kubernetes-кластера в Google с помощью gcloud
https://cloud.google.com/kubernetes-engine/docs/quickstart
Создание кластера из 3-х worker-нод с указанным размером диска на каждой ноде и указанным типа инстанса
Мы не указываем регион и зону т.к. эти значения были установлены в настройках gcloud(при нобходимости переопределения этих настроек используем опции —region=REGION —zone=ZONE)
1 |
# gcloud container clusters create persistent-disk-tutorial --num-nodes=3 --disk-size=30GB --machine-type=n1-standard-1 |
1 2 |
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS persistent-disk-tutorial europe-west1-b 1.11.6-gke.2 35.187.115.26 n1-standard-1 1.11.6-gke.2 3 RUNNING |
В
1 |
Google Cloud Console→Kubernetes Engine→Cluster-name→Connect |
Будет выдана команда,которую необходимо выполнить на своем десктопе, где установлен gcloud
Она имеет формат
1 |
# gcloud container clusters get-credentials <cluster-name> --zone <zone-name> --project <project-name> |
получение доступов аутентификации для работы с кластером
1 |
# gcloud container clusters get-credentials persistent-disk-tutorial --zone europe-west1-b --project mydemoproject-123456 |
После чего с десктопа можно управлять кластером через gcloud и деплоить через kubectl
Управление/работа с Google Kubernetes кластером через утилиту gcloud
Например,посмотреть список нод
1 |
# gcloud compute instances list |
Просмотр доступных и активной Kubernetes-версий используемый для master и node, а также тип образа используемый для операционной системы в нодах
1 |
# gcloud container get-server-config |
Просмотр доступных типов инстансов для запуска в кластере
1 |
# gcloud compute machine-types list |
Изменение типа инстанса(предварительно его необходимо остановить)
1 |
# gcloud compute instances set-machine-type gke-persistent-disk-tuto-default-pool-4a6c9ac4-nbpc --machine-type=n1-standard-1 |
Просмотр доступных Google Kubernetes-кластеров
1 |
# gcloud container clusters list |
1 2 |
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS persistent-disk-tutorial europe-west1-b 1.11.6-gke.2 35.187.115.26 n1-standard-1 1.11.6-gke.2 3 RUNNING |
Удаление кластера по его имени
1 |
# gcloud container clusters delete persistent-disk-tutorial |
1 2 3 4 5 6 |
The following clusters will be deleted. - [persistent-disk-tutorial] in [europe-west1-b] Do you want to continue (Y/n)? Deleting cluster persistent-disk-tutorial...done. Deleted [https://container.googleapis.com/v1/projects/mydemoproject-123456/zones/europe-west1-b/clusters/persistent-disk-tutorial]. |
Полный список поддерживаемых опций доступен по команде
1 |
# gcloud --help |
Источник:
https://cloud.google.com/sdk/docs/downloads-apt-get
https://cloud.google.com/sdk/docs/quickstart-debian-ubuntu
https://cloud.google.com/sdk/docs/components
https://cloud.google.com/sdk/install#deb-extras