Практикум: Безопасный и быстрый деплой в Kubernetes®

На этом практикуме пошагово развернём приложение с облачной инфраструктурой и распределим входящий трафик между его разными компонентами. Обсудим важные вопросы хранения секретов и безопасности.

Начало работы

Настройте окружение.

Склонируйте репозиторий, выполнив в окне терминала:

git clone https://github.com/skipor/yandex-scale-2021-kubernetes-workshop.git
cd ./yandex-scale-2021-kubernetes-workshop

Дальнейшая работа разбита на этапы. Перед каждым этапом вам будут показаны слайды и демонстрация прохождения этапа с пояснениями. После этого, вам будет предложено пройти этап самостоятельно. Для этого, для каждого этапа есть директория в ./steps. В ней в файле README.md содержится подробная инструкция с пояснениями и блоками команд. Блоки команд нужно копировать кликая на них, а затем вставлять в окно терминала.

Теперь можете перейти к первому этапу, и ждать окончания его демонстрации или начать его самостоятельное выполнение.

Для работы вам потребуются:

yc (Yandex Cloud CLI)
terraform >= 1.0.8
kubectl >= 1.20
docker
jq
curl
git
tree

Ниже описаны шаги для их установки на различных операционных системах.

Виртуальная машина

Можно не устанавливать все зависимости на свой компьютер, а работать из преднастроенной виртуальной машины. В таком случае установите yc CLI. Если у вас ещё нет пары ssh ключей, то создайте её.

На первом этапе, будет показано как создать виртуальную машину и зайти на неё по SSH.

Windows

  • Установите WSL
  • Запустите Ubuntu Linux
  • Настройте согласно инструкции для Ubuntu Linux

Ubuntu Linux

В случае Linux отличного от Ubuntu, установите те же пакеты, используя пакетный менеджер вашего дистрибутива.

yc CLI

Установите yc CLI

curl https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash
exec -l $SHELL
yc version

docker

Установите docker:

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
sudo docker run hello-world

Настройте запуск docker без sudo

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world

Предзагрузите образ aws-cli:

docker pull amazon/aws-cli

Прочее

Установите terraform версии не ниже 1.0.8:

sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install terraform -y
terraform version

Установите kubectl версии не ниже 1.20:

curl -LO https://dl.k8s.io/release/v1.22.0/bin/linux/amd64/kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version

Установите прочие пакеты:

sudo apt-get install jq curl git tree -y

macOS

Установите yc CLI

curl https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash
exec -l $SHELL
yc version

Установите docker Предзагрузите образ aws-cli:

docker pull amazon/aws-cli

Установите brew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# terraform
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
terraform version


# kubectl
brew install kubectl 
kubectl version

# Прочее
brew install jq curl git tree