CI/CD на GitLab CI: деплой в Kubernetes

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

gitlab cici/cdkubernetes

👁 В мире DevOps одной из самых важных задач является автоматизация процессов разработки и деплоя. GitLab CI предоставляет мощный инструмент для автоматизации всех этапов разработки, тестирования и деплоя приложений. Рассмотрим пример настройки CI/CD pipeline, который автоматически строит Docker-образ и деплоит его в кластер Kubernetes.

📝 Пример конфигурации .gitlab-ci.yml

stages:
  - build
  - deploy

variables:
  DOCKER_REGISTRY: "docker.io"
  IMAGE_NAME: "my-app"
  K8S_NAMESPACE: "default"

# Строим Docker-образ
build:
  stage: build
  script:
    - docker build -t $DOCKER_REGISTRY/$CI_PROJECT_NAMESPACE/$IMAGE_NAME:$CI_COMMIT_REF_NAME .
    - docker push $DOCKER_REGISTRY/$CI_PROJECT_NAMESPACE/$IMAGE_NAME:$CI_COMMIT_REF_NAME

# Деплой в Kubernetes
deploy:
  stage: deploy
  script:
    - kubectl set image deployment/my-app my-app=$DOCKER_REGISTRY/$CI_PROJECT_NAMESPACE/$IMAGE_NAME:$CI_COMMIT_REF_NAME --namespace=$K8S_NAMESPACE
    - kubectl rollout status deployment/my-app --namespace=$K8S_NAMESPACE
  only:
    - master

📌 Как это работает:

  • На стадии build происходит сборка Docker-образа из текущего репозитория и его публикация в Docker Hub
  • На стадии deploy происходит обновление образа в Kubernetes с помощью команды kubectl set image. Это позволяет автоматически деплоить новую версию приложения в кластер
  • Используется переменная окружения для автоматической подстановки имени образа в зависимости от текущего коммита ($CI_COMMIT_REF_NAME), что позволяет работать с различными ветками

❗️ Этот CI/CD pipeline позволяет не только автоматизировать деплой, но и ускорить процесс внедрения новых изменений. С помощью такой настройки GitLab CI мы минимизируем человеческие ошибки, ускоряем процесс тестирования и упрощаем деплой в Kubernetes.

tags: #devops #k8s #cicd

❤️ @recura_tech

Скриншот тёмного терминала с примером .gitlab-ci.yml: stages, build и deploy, команды docker и kubectl, логотип RECURA.
Превью: пример .gitlab-ci.yml и команды docker/kubectl на тёмном фоне с брендингом RECURA.

Читайте так же