Skip to content

Latest commit

 

History

History
114 lines (92 loc) · 3.99 KB

File metadata and controls

114 lines (92 loc) · 3.99 KB

Практическое задание #4. Работа с Crossplane

Список задач практического задания:

4.1 Установка Crossplane в кластер Kubernetes

Развернуть Crossplane с помощью Helm:

NS=crossplane-system
kubectl create namespace $NS
helm repo add crossplane-stable https://charts.crossplane.io/stable
helm repo update
helm install crossplane --namespace $NS crossplane-stable/crossplane

# Install Crossplane CLI
curl -sL https://raw.githubusercontent.com/crossplane/crossplane/master/install.sh | sh
sudo mv kubectl-crossplane $(dirname $(which kubectl))

Проверить состояние Crossplane после развёртывания:

helm list -n $NS
kubectl get all -n $NS

Установить Crossplane Provider:

kubectl crossplane install provider cr.yandex/crp0kch415f0lke009ft/crossplane/provider-jet-yc:v0.1.37

Создать ключи для работы Crossplane Provider:

SA_NAME=webinar-sa
SA_ID=$(yc iam service-account list --format=json | jq -r '.[] | select(.name == ('\"$SA_NAME\"')) | .id')
yc iam key create --service-account-id $SA_ID --output key.json

Создать в кластере Secret для Crossplane Provider:

kubectl create secret generic yc-creds -n $NS --from-file=credentials=./key.json

Создать в кластере Crossplane ProviderConfig:

cd ~/labs/lab-04-crossplane/
kubectl apply -f providerconfig.yml

4.2 Развёртывание ВМ с веб-сервером

Подготовить входные данные для развёртывания ВМ:

export ZONE_ID="ru-central1-b"
export VM_NAME="crossplane-vm"
export SUBNET_NAME=$NET_NAME-$ZONE_ID
export NET_NAME=$(yc vpc network list --limit=1 --format=json | jq -r .[0].name)
export SUBNET_ID=$(yc vpc subnet get --name=$SUBNET_NAME --format=json | jq -r .id)
export NET_ID=$(yc vpc subnet get $SUBNET_ID --format=json | jq -r .network_id)
export SUBNET_PREFIX=$(yc vpc subnet get $SUBNET_ID --format=json | jq -r .v4_cidr_blocks[0])
export FOLDER_ID=$(yc config get folder-id)
export IMAGE_ID=$(yc compute image get --folder-id standard-images --name=lemp-v20220606 --format=json | jq -r .id)

Заполнить шаблон манифеста crossplane для создания ВМ нужными значениями из исходных данных:

envsubst < vm-instance.tpl > vm-instance.yml

Проверить полученный манифест для создания ВМ перед его применением:

cat vm-instance.yml

Создать ВМ с веб-сервером из подготовленного манифеста ВМ:

kubectl apply -f vm-instance.yml

Проверить состояния созданных в кластере Kubernetes объектов под управлением Crossplane:

kubectl get network
kubectl get subnet
kubectl get instance
yc compute instance list

Проверить работоспособность развёрнутой ВМ:

LEMP_IP=$(yc compute instance get --name=$VM_NAME --format=json | jq -r .network_interfaces[0].primary_v4_address.address)

ping -c 3 $LEMP_IP
curl http://$LEMP_IP

4.3 Удаление ВМ с веб-сервером

Удалить ВМ с помощью Crossplane:

kubectl delete instance $VM_NAME

Убедиться, что ВМ удалена

kubectl get instance
yc compute instance list

Поздравляем! Вы успешно справились с заданием!