O ChatGPT disse:
Sim, dá para fazer dessa forma! Aqui está o setup completo da sua VPS para rodar o GitLab CI/CD + GitLab Container Registry + Kubernetes + ArgoCD. Esse fluxo permitirá que seu código seja buildado automaticamente, armazenado no GitLab Container Registry, e implantado automaticamente no Kubernetes via ArgoCD.
📌 Fluxo Completo
1️⃣ GitLab instalado na VPS → Armazena código + repositórios.
2️⃣ GitLab CI/CD → Faz build da imagem Docker e envia para o GitLab Container Registry.
3️⃣ GitLab Container Registry → Armazena as imagens Docker.
4️⃣ ArgoCD → Monitora repositório Git e atualiza deploys automaticamente no Kubernetes.
5️⃣ Kubernetes → Gerencia os containers e o cluster.
🖥️ Setup da VPS
🔹 1️⃣ Instalar GitLab Self-Hosted
No seu Ubuntu 22.04 VPS, rode:
sudo apt update && sudo apt install -y curl openssh-server ca-certificates tzdata perl
curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
sudo EXTERNAL_URL="http://seu-ip-ou-dominio" apt install -y gitlab-ee
📌 Acesse GitLab no navegador via http://seu-ip-ou-dominio
📌 Usuário e senha: sudo gitlab-rails console
para resetar senha.
🔹 2️⃣ Configurar GitLab Container Registry
No GitLab, vá em Admin > Container Registry e ative o registry.
Edite o arquivo /etc/gitlab/gitlab.rb
e ative o registry:
registry_external_url 'http://seu-ip-ou-dominio:5050'
gitlab_rails['registry_enabled'] = true
🚀 Reconfigure GitLab:
sudo gitlab-ctl reconfigure
Agora seu registry estará disponível em http://seu-ip-ou-dominio:5050
.
🔹 3️⃣ Instalar Kubernetes na VPS
curl -sfL https://get.k3s.io | sh -
🚀 Verifique se o Kubernetes está rodando:
kubectl get nodes
🔹 4️⃣ Instalar ArgoCD no Kubernetes
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
🚀 Acesse o painel do ArgoCD:
kubectl port-forward svc/argocd-server -n argocd 8080:443
Acesse https://localhost:8080
, usuário padrão: admin
.
Senha: kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d && echo
🔹 5️⃣ Criar GitLab CI/CD para Buildar Imagem
No repositório GitLab, crie um arquivo .gitlab-ci.yml
:
stages:
- build
- deploy
variables:IMAGE_NAME: “$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG”
build:stage: build
image: docker:latest
services:
– docker:dind
before_script:
– docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY
script:
– docker build -t $IMAGE_NAME .
– docker push $IMAGE_NAME
deploy:stage: deploy
image: bitnami/kubectl
before_script:
– kubectl config set-cluster my-cluster –server=https://seu-kubernetes-api –insecure-skip-tls-verify=true
– kubectl config set-credentials gitlab-deployer –token=$K8S_TOKEN
– kubectl config set-context my-cluster –cluster=my-cluster –user=gitlab-deployer –namespace=default
– kubectl config use-context my-cluster
script:
– kubectl set image deployment/meu-app meu-app=$IMAGE_NAME
📌 Explicação:
- Faz o build da imagem e envia para o GitLab Container Registry.
- Faz deploy no Kubernetes, atualizando a imagem.
🔹 6️⃣ Configurar o ArgoCD para Deploy Automático
1️⃣ Criar um repositório Git só para os manifests do Kubernetes.
2️⃣ Adicionar um deployment.yaml
no repositório:
apiVersion: apps/v1
kind: Deployment
metadata:
name: meu-app
spec:
replicas: 1
selector:
matchLabels:
app: meu-app
template:
metadata:
labels:
app: meu-app
spec:
containers:
- name: meu-app
image: seu-ip-ou-dominio:5050/meu-repo:latest
3️⃣ Adicionar o repositório ao ArgoCD:
argocd repo add http://seu-gitlab.com/grupo/repo-k8s --username=seu-user --password=seu-password
4️⃣ Criar a aplicação no ArgoCD:
argocd app create meu-app --repo http://seu-gitlab.com/grupo/repo-k8s \
--path . --dest-server https://seu-kubernetes-api \
--dest-namespace default
🚀 Agora o ArgoCD vai monitorar o repositório e atualizar automaticamente o deploy!
✅ Resumo da Infraestrutura
🔹 Componente | 🛠️ Tecnologia |
---|---|
Repositório Git | GitLab Self-Hosted |
Build CI/CD | GitLab CI/CD |
Registry | GitLab Container Registry |
Orquestração | Kubernetes (K3s) |
Deploy Automático | ArgoCD |
Reverso Proxy & SSL | Traefik (opcional) |
🚀 Benefícios
✅ 100% self-hosted na sua VPS (não depende de serviços pagos).
✅ CI/CD automatizado (build e deploy sem intervenção manual).
✅ Kubernetes + ArgoCD garantem resiliência e escalabilidade.
✅ GitOps permite controle total das versões via Git.