Skip to content
This repository has been archived by the owner on Jul 30, 2022. It is now read-only.

Деплой PHP приложения с использованием GitHub Actions в DigitalOcean Kubernetes

License

Notifications You must be signed in to change notification settings

mqwerty/github-action-k8s-deploy

Repository files navigation

CD Docker Image Size (latest) Quality Gate Status

GitHub Actions + DockerHub + DigitalOcean + Kubernetes

Подготовка и развертывание вручную

Требуется установить kubectl и doctl.

Создаем кластер Kubernetes в DigitalOcean.
Кластер с именем kube, состоит из 1 виртуалки размера S в регионе fra1.

doctl kube cluster create kube --set-current-context --region fra1 --node-pool "name=kube-test;size=s-2vcpu-2gb;count=1"

Собираем докер образ и пушим его в DockerHub:

docker build . --file Dockerfile --tag edmitry/github-action-k8s-deploy
docker tag edmitry/github-action-k8s-deploy edmitry/github-action-k8s-deploy:latest
docker push edmitry/github-action-k8s-deploy:latest

Разворачиваем приложение:

kubectl apply -f kube.yml

Проверяем что все развернулось:

kubectl get deployments
kubectl get pod
doctl compute load-balancer list
curl {load-balancer-ip}
# {"result":"test"}

Проверяем версию докер образа:

kubectl get pod
kubectl describe pod {name}
# Image ID: docker-pullable://edmitry/github-action-k8s-deploy@sha256:5d0ba35bdd128eea01fbfdee60b0d4f91ccd97a43ff303f3d8cf99b1ce9638c8

CI/CD

При обновлении ветки master в репозитории запускается GitHub Action Runner, который собирает тестовый Docker образ приложения и запускает в нем тесты. Также тесты запускаются для всех пул-реквестов, без выполнения дальнейших шагов.

Если тесты прошли успешно, то для мастер ветки запускается сборка Docker образа и публикация его в DockerHub.

Далее дергается Kubernetes, чтобы запустить деплой приложения. Запущено 3 реплики, по одной заменяем на новую версию. При запуске новых реплик используются проверки readinessProbe. Если проверки не проходят, то остаются работать старые версии.

Очистка

Удаляем приложение:

kubectl delete -f kube.yml

Возвращаем обратно контекст kubectl:

kubectl config set-context docker-desktop

About

Деплой PHP приложения с использованием GitHub Actions в DigitalOcean Kubernetes

Topics

Resources

License

Stars

Watchers

Forks