Для деплоя в Kubernetes понадобилось написать простой двухшаговый pipeline, который будет собирать Docker контейнер на первом шаге и при помощи kubectl обновлять конфигурацию deployment в шаге два. Скрипты реализации build и deploy в этой статье я упущу и только покажу общий .gitalb-ci.yml файл:
variables:
CONTAINER_IMAGE: registry.docker.com/image
DOCKER_HOST: tcp://docker:2375
DOCKER_DRIVER: overlay2
stages:
- build
- deploy
build:
stage: build
image: docker:stable
services:
- docker:dind
script:
# этот скрипт или другие действия для сборки и отправки docker контейнера в registry
- ./docker/build.sh
deploy:
when: manual
stage: deploy
image: alpine
only:
- master
script:
- apk add --no-cache curl
- curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
- chmod +x ./kubectl
- mv ./kubectl /usr/local/bin/kubectl
# в этом шаге мы делаем установку kubeconfig и сам kubectl apply
- ./docker/deploy.sh
Простые скрипты build.sh и deploy.sh предлагается написать самостоятельно, либо же мы их рассмотрим в будущих статьях.
Данный pipeline также можно расширить установкой Helm — пакетного менеджера для Kubernetes, и уже вместо kubectl apply можно будет делать helm install/upgrade.