# Domain Infra

> Padrões de infraestrutura Kubernetes, secrets, clusters e operações GitOps no Yby CLI

- Skill: `aibot88/domain-infra` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add aibot88/domain-infra`
- Raw SKILL.md: https://api.skillmd.com/api/skills/aibot88/domain-infra/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: aibot88 (https://skillmd.com/u/aibot88)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/aibot88/domain-infra

---


# Padrões de Infraestrutura — Yby CLI

## Clusters

Dois modos suportados: `local` (k3d) e `remote` (VPS via SSH). A lógica de orquestração fica em `pkg/services/environment/` usando as interfaces `ClusterManager` e `MirrorService`.

Nunca acessar kubectl/k3d diretamente — sempre via `shared.Runner` para permitir mocks em testes.

## Secrets

Duas estratégias suportadas via flag `--strategy`:
- `sealed-secrets` (padrão) — usa Sealed Secrets do Kubernetes
- `sops` — integra com o binário `sops` para encriptação via age/KMS

Permissões de arquivos sensíveis (`.envrc`, YAMLs de secrets): sempre `0600`, nunca `0644`.

```go
if err := os.WriteFile(path, data, 0600); err != nil {
    return errors.Wrap(err, errors.ERR_IO, "falha ao escrever secret")
}
```

## Bootstrap Kubernetes

O pacote `pkg/services/bootstrap/` gerencia instalação de Argo CD, configuração de secrets e outros recursos de cluster. Usa `K8sClient` interface — nunca instanciar cliente K8s diretamente nos testes.

## Network

Port-forward e credenciais ficam em `pkg/services/network/`. Usa `ClusterNetworkManager` e `LocalContainerManager` — mockáveis via interfaces.

## Mirror

Git mirror server (`pkg/mirror/`) roda no cluster com túnel e sync loop. Não modificar sem entender o protocolo de sincronização bidirecional.

## Ambientes

Configurações em `.yby/environments.yaml`. Nunca hardcodar nomes de ambiente — usar `pkg/context` para resolver o ambiente ativo (`--context` flag ou `YBY_ENV`).

## Topologias de Scaffold

O engine em `pkg/scaffold/` filtra templates por `topology` (single/multi), `workflow` e `features`. O ambiente padrão para topologia `single` é `local` (não `prod`).

## Segurança

- Arquivos sensíveis sempre com permissão `0600`
- Nunca logar secrets ou tokens — usar `[REDACTED]` se necessário
- Validar shells antes de executar comandos SSH (`pkg/executor/`)
- Verificar dependências externas (sops, kubectl, k3d) antes de usá-las

