OpenClaw no Kubernetes
Um ponto de partida mínimo para executar o OpenClaw no Kubernetes — não é uma implantação pronta para produção. Ele cobre os recursos principais e foi pensado para ser adaptado ao seu ambiente.Por que não Helm?
O OpenClaw é um único contêiner com alguns arquivos de configuração. A personalização interessante está no conteúdo do agente (arquivos markdown, Skills, substituições de configuração), não em templates de infraestrutura. O Kustomize lida com overlays sem a sobrecarga de um chart Helm. Se a sua implantação ficar mais complexa, um chart Helm pode ser colocado por cima destes manifests.O que você precisa
- Um cluster Kubernetes em execução (AKS, EKS, GKE, k3s, kind, OpenShift etc.)
kubectlconectado ao seu cluster- Uma chave de API para pelo menos um provedor de modelos
Início rápido
./scripts/k8s/deploy.sh --show-token imprime o token após a implantação.
Teste local com Kind
Se você não tiver um cluster, crie um localmente com Kind:./scripts/k8s/deploy.sh.
Passo a passo
1) Implantar
Opção A — chave de API no ambiente (uma etapa):--show-token com qualquer um dos comandos se quiser que o token seja impresso em stdout para testes locais.
2) Acessar o gateway
O que é implantado
Personalização
Instruções do agente
Edite oAGENTS.md em scripts/k8s/manifests/configmap.yaml e reimplante:
Configuração do gateway
Editeopenclaw.json em scripts/k8s/manifests/configmap.yaml. Consulte Configuração do Gateway para a referência completa.
Adicionar provedores
Execute novamente com chaves adicionais exportadas:Namespace personalizado
Imagem personalizada
Edite o campoimage em scripts/k8s/manifests/deployment.yaml:
Expor além de port-forward
Os manifests padrão vinculam o gateway ao loopback dentro do pod. Isso funciona comkubectl port-forward, mas não funciona com um Service ou caminho de Ingress do Kubernetes que precise alcançar o IP do pod.
Se você quiser expor o gateway por meio de um Ingress ou load balancer:
- Altere o bind do gateway em
scripts/k8s/manifests/configmap.yamldeloopbackpara um bind não loopback que corresponda ao seu modelo de implantação - Mantenha a autenticação do gateway habilitada e use um ponto de entrada com terminação TLS adequado
- Configure a Control UI para acesso remoto usando o modelo de segurança web compatível (por exemplo HTTPS/Tailscale Serve e origens permitidas explícitas quando necessário)
Reimplantar
Desmontar
Observações de arquitetura
- O gateway é vinculado ao loopback dentro do pod por padrão, então a configuração incluída é para
kubectl port-forward - Sem recursos com escopo de cluster — tudo fica em um único namespace
- Segurança:
readOnlyRootFilesystem, capacidadesdrop: ALL, usuário sem root (UID 1000) - A configuração padrão mantém a Control UI no caminho mais seguro de acesso local: bind em loopback mais
kubectl port-forwardparahttp://127.0.0.1:18789 - Se você for além do acesso por localhost, use o modelo remoto compatível: HTTPS/Tailscale mais o bind apropriado do gateway e as configurações de origem da Control UI
- Secrets são gerados em um diretório temporário e aplicados diretamente ao cluster — nenhum material secreto é gravado no checkout do repositório