👁 В мире 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


