Простой pipeline для Kubernetes deployment в gitlab-ci

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

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *