Проектная работа по курсу otus kubernetes

Подготовка

wget https://releases.hashicorp.com/terraform/0.13.1/terraform_0.13.1_linux_amd64.zip
unzip ./terraform_0.13.1_linux_amd64.zip 
sudo mv ./terraform /usr/local/bin/terraform

echo "deb https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y install google-cloud-sdk kubectl

gcloud init

gcloud выдаст ссылку, которую надо будет открыть в браузере, согласиться выдать разрешения и скопировать verification code.
Выбираем зону 1 (us-east1-b) и тип машин будем юзать e2-standard-2 (2vCPU, 8GB RAM).
Включаем необходимые APIшки:

gcloud services enable compute.googleapis.com
gcloud services enable servicenetworking.googleapis.com
#gcloud services enable cloudresourcemanager.googleapis.com
#gcloud services enable container.googleapis.com

Теперь можно получить токен, с которым будем ходить в GCP.

gcloud auth print-access-token

И в дальнейшем полученную строку будем юзать в качестве значения параметра access_token в конфиге terraform-провайдера google.

Текущий статус

  • Поднимаются виртуалки с помощью terraform по списку.
  • Между виртуалками есть сеть и у каждой есть внешний IP.
  • Формируется inventory-файл для kubespray и нормально разворачивается кластер.
  • Цепляются пара дисков (один монтируется в /var/lib/docker, а второй - /var/lib/data - для PersistentVolumes)
  • Протестировал провижининг OpenEBS Local PV Hostpath. Вроде работает OpenEBS - хороший вариант В итоге - включил провижининг, который идет в комплекте с kubespray - rancher/local-path-provisioner (local_path_provisioner_enabled: true)
  • Развернул ELK (с помощью оператора и чартика).

Задачи





По сетевой части нашлось вот что: https://github.com/Wi3ard/k8s-nginx-ingress/blob/gke-gdns-certmgr-wildcard/main.tf

https://www.terraform.io/docs/providers/google/r/compute_global_forwarding_rule.html#

  • Нужно прописывать DNS-записи для всех сервисов
  • Развернуть Ingress (NodePort)
  • Развернуть CertManager
  • Нужно забрать оттуда admin.conf от кластера кубера. Сделал, но наверное не надо. api-сервер слушает на локальном адресе.

ЛИШНЕЕ и пока не очен понятное

Создадим Service Account:

gcloud iam service-accounts create otus-course-project --display-name "Otus Course Project Service Account"

И посмотрим какие с ней связаны ключи:

gcloud iam service-accounts keys list --iam-account=otus-course-project@otus-kuber-course.iam.gserviceaccount.com

Сгенерируем новый (https://cloud.google.com/sdk/gcloud/reference/iam/service-accounts/keys/create):

gcloud iam service-accounts keys create ./otus-kubernetes-course.yaml --iam-account=otus-course-project@otus-kuber-course.iam.gserviceaccount.com

В результате - получим файлик otus-kubernetes-course.yaml, который уже может быть использован terraform.
И потом активируем его:

gcloud auth activate-service-account otus-course-project@otus-kuber-course.iam.gserviceaccount.com --key-file=./otus-kubernetes-course.yaml

Также можно привязать уже имеющийся файлик примерно вот так: https://cloud.google.com/sdk/gcloud/reference/auth/activate-service-account .
В дальнейшем переключаться между аккаунтами можно так:

gcloud config set account otus-course-project@otus-kuber-course.iam.gserviceaccount.com
Enter your comment. Wiki syntax is allowed:
S E O T D
 
  • devops/otus_course_final.txt
  • Last modified: 2020/09/17 14:55
  • by admin