#15 DevOps. Kubernetes. Deploy WordPress with ArgoCD and Helm

Развернем WordPress с помощью ArgoCD и Helm.

Наш тестовый кластер вместо привычных MicroK8s и minikube сегодня будем запускать с помощью KinD. LoadBalancer в данном примере рассматривать не будем, ставим локально, воспользуемся port-forward.

Устанавливаем на Ubuntu 22.04 LTS, где уже установлены Helm, Docker, kubectl.

Установим KinD

[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.23.0/kind-linux-amd64

chmod +x ./kind

sudo mv ./kind /usr/local/bin/kind

Создадим кластер из одной master ноды и двух worker

nano kind-config.yaml

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker

kind create cluster --config kind-config.yaml

Установим ArgoCD

kubectl create namespace argocd

kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

kubectl get all -n argocd

Сделаем port-forward

kubectl port-forward -n argocd svc/argocd-server 5555:80 --address 0.0.0.0

Для логина в ArgoCD выполним и скопируем пароль

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

Пройдем по адресу 192.168.2.170:5555 (у вас будет свой) и залогинимся

admin и пароль из команды выше

Слева выбираем Settings -> Repositories -> Connect Repo -> VIA HTTPS -> выбираем helm вместо git -> задаем имя wordpress -> project default -> repository URL -> https://charts.bitnami.com/bitnami -> Connect

Далее слева Applications -> New App -> зададим имя wordpress-website -> project default -> Sync Policy Automatic -> установим галочки на Prune Resources, Self Heal и Auto-Create Namespace -> Source Repository URL -> https://charts.bitnami.com/bitnami -> Chart -> wordpress справа выбираем самую последнюю версию (на данный момент 22.4.8) -> Destination Cluster URL -> https://kubernetes.default.svc -> Namespace -> wordpress -> Вверху нажимаем Create 

Нажмем на wordpress-website чтобы провалиться и наблюдаем за процессом создания

Проверим

kubectl get all -n wordpress

Так как мы делаем не в облаке, и без LoadBalancer, снова port-forward

kubectl port-forward -n wordpress svc/wordpress-website 7777:80 --address 0.0.0.0

Переходим по адресу 192.168.2.170:7777 (у вас будет свой) и видим наш WordPress


Чтобы зайти в админку

192.168.2.170:7777/admin

Получим логин и пароль

kubectl -n wordpress get secret wordpress-website -o jsonpath="{.data.wordpress-password}" | base64 --decode

Логинимся user и пароль из команды выше

Поздравляю с успешной установкой

P.S. В идеале стоило бы запустить LoadBalancer, чтобы не делать port-forward и развернуть все это в облаке, но для простого примера работы Helm и ArgoCD подойдет.