Deploy com Helm

Implantando a Infraestrutura Urbis Workflows com Helm.

Este documento fornece um guia básico para implantar a Infraestrutura Urbis Workflows usando Helm, referenciando o repositório OpenUrbis/urbis-workflows-infra.

Pré-requisitos

Antes de prosseguir, certifique-se de ter:

  • Um cluster Kubernetes (versão 1.20 ou superior)
  • Helm 3 instalado
  • kubectl configurado para interagir com seu cluster

Passos para Implantar

  1. Clonar o Repositório
    Clone o repositório Urbis Workflows Infrastructure para sua máquina local:

    git clone https://github.com/OpenUrbis/urbis-workflows-infra.git
    cd urbis-workflows-infra
  2. Criar um Namespace
    Crie um namespace Kubernetes para a implantação:

    kubectl create namespace urbis-map
  3. Instalar os CRDs do Cert-Manager
    O cert-manager requer que as Definições de Recursos Personalizados (CRDs) sejam instaladas antes do chart Helm, caso contrário, a instalação falhará ao tentar criar recursos do tipo Certificate ou Issuer.

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.5/cert-manager.crds.yaml
  4. Configurar a Implantação
    Personalize a implantação editando o arquivo values.yaml para configurações gerais e secrets.yaml para dados sensíveis (ex: senhas de banco de dados). Certifique-se de que secrets.yaml não seja comitado no controle de versão.
    Exemplo de modificação em values.yaml:

    postgresql:
      replicaCount: 2
  5. Instalar o Chart Helm
    Primeiro, baixe as dependências do chart:

    helm dependency build ./infra

    Em seguida, implante a infraestrutura usando o chart Helm:

    helm install urbis-map ./infra -f ./infra/values.yaml -n urbis-map
  6. Verificar a Implantação
    Verifique o status dos recursos implantados:

    kubectl get pods -n urbis-map

Atualizando a Implantação

Para aplicar alterações na configuração ou chart:

helm upgrade urbis-map ./infra -f ./infra/values.yaml -n urbis-map

Problemas comuns com Certificados (ACME Solver)

Ao utilizar o cert-manager com desafios HTTP-01, o ingress-nginx pode retornar erro 503 Service Temporarily Unavailable durante a validação se o roteamento manual no Ingress estiver apontando para um serviço inexistente.

Para resolver, você deve atualizar o nome do solver no seu values.yaml:

  1. Identifique o nome do serviço temporário criado pelo cert-manager:
    kubectl get svc -n urbis-map | grep cm-acme-http-solver
  2. Copie o nome do serviço (ex: cm-acme-http-solver-n7vxv).
  3. Atualize o arquivo infra/values.yaml:
    components-api-gateway:
      cm-acme-http-solver-name: cm-acme-http-solver-XXXXX # Substitua pelo nome encontrado
  4. Aplique o helm upgrade.

Desinstalando a Implantação

Para remover a implantação:

helm uninstall urbis-map -n urbis-map

Nota: Dados persistentes (ex: volumes de banco de dados) devem ser excluídos manualmente se não forem mais necessários.

Informações Adicionais

Para mais detalhes, consulte o README no repositório. Para suporte, abra uma issue no GitHub ou entre em contato com contas@urbis.prefeitura.sp.gov.br.