Евгений Штольц - Облачная экосистема

Здесь есть возможность читать онлайн «Евгений Штольц - Облачная экосистема» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Год выпуска: 2021, Жанр: Базы данных, Программирование, Интернет, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Облачная экосистема: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Облачная экосистема»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

В этой книге главный Архитектор Департамента Архитектуры компетенций Cloud Native в Сбербанк делится знанием и опытом с читателем созданием и перехода на облачную экосистему, так и созданием и адаптацией приложений под неё. В книге автор старается провести читателя по пути, минуя ошибки и сложности. Для этого демонстрируется практическое применение и даются пояснения, чтобы читатель смог ими воспользоваться как инструкцией для учебных и рабочих целей. Читателем может быть как разработчики разных уровней, так и специалисты по экосистеме, желающие не потерять актуальность своих умений в уже изменившимся мире.

Облачная экосистема — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Облачная экосистема», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

essh@kubernetes-master:~/node-cluster/Kubernetes$ cat main.tf

provider "google" {

credentials = "${file("../kubernetes_key.json")}"

project = "node-cluster-243923"

region = "europe-north1"

}

resource "google_container_cluster" "node-ks" {

name = "node-ks"

location = "europe-north1-a"

node_locations = ["europe-north1-b", "europe-north1-c"]

initial_node_count = 1

}

resource "google_container_node_pool" "node-ks-pool" {

name = "node-ks-pool"

cluster = "${google_container_cluster.node-ks.name}"

location = "europe-north1-a"

node_count = "1"

node_config {

machine_type = "n1-standard-1"

}

autoscaling {

min_node_count = 1

max_node_count = 2

}

}

Посмотрим, что получалось и поищем IP- адрес точки входа в кластер:

essh@kubernetes-master:~/node-cluster/Kubernetes$ gcloud container clusters list

NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS

node-ks europe-north1-a 1.12.8-gke.6 35.228.20.35 n1-standard-1 1.12.8-gke.6 6 RECONCILING

essh@kubernetes-master:~/node-cluster/Kubernetes$ gcloud container clusters describe node-ks | grep '^endpoint'

endpoint: 35.228.20.35

essh@kubernetes-master:~/node-cluster/Kubernetes$ ping 35.228.20.35 -c 2

PING 35.228.20.35 (35.228.20.35) 56(84) bytes of data.

64 bytes from 35.228.20.35: icmp_seq=1 ttl=59 time=8.33 ms

64 bytes from 35.228.20.35: icmp_seq=2 ttl=59 time=7.09 ms

-– 35.228.20.35 ping statistics –

2 packets transmitted, 2 received, 0% packet loss, time 1001ms

rtt min/avg/max/mdev = 7.094/7.714/8.334/0.620 ms

Добавив переменные, которые я выделил в отдельный файл только для наглядности, которые параметризуют наш конфиг под разное использование, мы сможем его использовать, например, для создания тестового и рабочего кластеров. Добавлять переменные можно как var.name_value, а вставлять в текст аналогично JS: ${var.name_value}, а также path.root.

essh@kubernetes-master:~/node-cluster/Kubernetes$ cat variables.tf

variable "region" {

default = "europe-north1"

}

variable "project_name" {

type = string

default = ""

}

variable "gce_key" {

default = "./kubernetes_key.json"

}

variable "node_count_zone" {

default = 1

}

Передать их можно через ключ -var, например: sudo ./terraform apply -var="project_name=node-cluster-243923".

essh@kubernetes-master:~/node-cluster/Kubernetes$ cp ../kubernetes_key.json .

essh@kubernetes-master:~/node-cluster/Kubernetes$ sudo ../terraform apply -var="project_name=node-cluster-243923"

Наш проект в папке является не только проектом, но и модулем, готовым к использованию:

essh@kubernetes-master:~/node-cluster/Kubernetes$ cd ..

essh@kubernetes-master:~/node-cluster$ cat main.tf

module "Kubernetes" {

source = "./Kubernetes"

project_name = "node-cluster-243923"

}

essh@kubernetes-master:~/node-cluster$ sudo ./terraform apply

Или же загрузить в публичный репозиторий:

essh@kubernetes-master:~/node-cluster/Kubernetes$ git init

Initialized empty GIT repository in /home/essh/node-cluster/Kubernetes/.git/

essh@kubernetes-master:~/node-cluster/Kubernetes$ echo "terraform.tfstate" >> .gitignore

essh@kubernetes-master:~/node-cluster/Kubernetes$ echo "terraform.tfstate.backup" >> .gitignore

essh@kubernetes-master:~/node-cluster/Kubernetes$ echo ".terraform/" >> .gitignore

essh@kubernetes-master:~/node-cluster/Kubernetes$ rm -f kubernetes_key.json

essh@kubernetes-master:~/node-cluster/Kubernetes$ git remote add origin https://github.com/ESSch/terraform-google-kubernetes.git

essh@kubernetes-master:~/node-cluster/Kubernetes$ git add .

essh@kubernetes-master:~/node-cluster/Kubernetes$ git commit -m 'create a k8s Terraform module'

[master (root-commit) 4f73c64] create a Kubernetes Terraform module

3 files changed, 48 insertions(+)

create mode 100644 .gitignore

create mode 100644 main.tf

create mode 100644 variables.tf

essh@kubernetes-master:~/node-cluster/Kubernetes$ git push -u origin master

essh@kubernetes-master:~/node-cluster/Kubernetes$ git tag -a v0.0.2 -m 'publish'

essh@kubernetes-master:~/node-cluster/Kubernetes$ git push origin v0.0.2

После публикации в реестре модулей https://registry.terraform.io/, выполнив требования, такие как наличие описания, мы можем его использовать:

essh@kubernetes-master:~/node-cluster$ cat main.tf

module "kubernetes" {

# source = "./Kubernetes"

source = "ESSch/kubernetes/google"

version = "0.0.2"

project_name = "node-cluster-243923"

}

essh@kubernetes-master:~/node-cluster$ sudo ./terraform init

essh@kubernetes-master:~/node-cluster$ sudo ./terraform apply

При очередном создании кластера у меня возникла ошибка ZONE_RESOURCE_POOL_EXHAUSTED "does not have enough resources available to fulfill the request. Try a different zone, or try again later", говорящая о том, что в данном регионе нет нужных серверов. Для меня это не проблема и мне не нужно править код модуля, ведь я параметризовал модуль регионом, и если я просто передам модулю в качестве параметра регионregion = "europe-west2", terraform после команды обновления и инициализации ./terrafrom init и команды применения ./terraform apply перенесёт мой кластер в указный регион. Ещё немного улучшим наш модуль тем, что вынесем провайдер (provider) из дочернего модуля Kubernetes в главный модуль (основной скрипт также является модулем). Вынеся в главный модуль, мы сможем использовать ещё один модуль, в противном случае провайдер в одном модуле будет конфликтовать с провайдером в другом. Наследование из главного модуля в дочерние и их прозрачность относится только к провайдерам. Остальные же данные для передачи из дочернего в родительский придётся использовать внешние переменные, а из родительского в дочерний – параметризовать родительский, но это позже, когда мы будем создавать ещё один модель. Также, вынесение провайдера в родительский модуль, будет полезно при создании следующего модуля, который мы создадим, так как он будет создавать элементы Kubernetes, которые не зависят от провайдера, и мы сможем тем самым отвязать провайдера Google от нашего модуля и его можно будет использовать с другими провайдерами, поддерживающим Kubernetes. Теперь нам не нужна передавать в переменной название проекта – он задан в провайдере. Для удобства разработки я буду пока использовать локальное подключение модуля. Я создал папку и файл нового модуля:

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Облачная экосистема»

Представляем Вашему вниманию похожие книги на «Облачная экосистема» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Владислав Картавцев - Вера Штольц и солнечный остров
Владислав Картавцев
Отзывы о книге «Облачная экосистема»

Обсуждение, отзывы о книге «Облачная экосистема» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x