Для деплоя в 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.