Credenciais de nuvem
Os connectors de AWS e GCP precisam de credencial de nuvem para ler. Há dois modos, e eles são ortogonais ao secret store: aquele decide onde os segredos vivem, este decide como a credencial de nuvem é resolvida.
RUNNER_AWS_CRED_MODE=static # defaultRUNNER_AWS_CRED_MODE=chain
RUNNER_GCP_CRED_MODE=static # defaultRUNNER_GCP_CRED_MODE=chainstatic: o default
Seção intitulada “static: o default”Lê AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY e, opcionalmente, AWS_SESSION_TOKEN do secret store
e injeta explicitamente no client.
Serve quem recebe chaves prontas ou as guarda no Vault ou no Secrets Manager. É o default por retrocompatibilidade.
chain: workload identity
Seção intitulada “chain: workload identity”Não injeta chave nenhuma. A cadeia de credenciais default do SDK resolve: IRSA no EKS, task role no ECS, instance profile na EC2, variáveis de ambiente, ou o cache de SSO.
É o modo correto quando o runner roda dentro da AWS, e o que evita chave estática circulando.
RUNNER_AWS_CRED_MODE=chainAWS_PROFILE=meu-profile # em desenvolvimento, com aws sso loginUma sutileza que causa connector invisível
Seção intitulada “Uma sutileza que causa connector invisível”O served-set é secret-aware: um connector cujas chaves obrigatórias faltam sai do conjunto anunciado.
Mas em chain a credencial não vem do secret store, então, sem tratamento, o runner não
anunciaria as operações aws.* mesmo funcionando perfeitamente.
Por isso o runtime marca o connector aws como sempre servido no modo chain. Vale saber que
esse caso especial existe, para não estranhar a diferença de comportamento entre os dois modos.
Multi-conta
Seção intitulada “Multi-conta”O modo chain é single-account por construção. Para várias contas AWS, suba um runner por
conta, cada um com a sua identidade IRSA. O grafo é fundido do lado do control-plane.
Contexto derivado no boot
Seção intitulada “Contexto derivado no boot”Com RUNNER_CONNECTORS=real, o runner faz um probe best-effort de STS no boot para descobrir
conta e região, e reporta isso no handshake. É o que permite ao control-plane resolver o contexto AWS
do tenant a partir do runner vivo, em vez de configuração manual.
O probe nunca lança. Se falhar, a informação simplesmente não vai, e o control-plane usa o fallback.
O desenho é o irmão exato do lado AWS.
static: o default
Seção intitulada “static: o default”Lê a chave JSON da service account (GCP_SA_KEY, o JSON em uma linha) do secret store e constrói os
clients com ela.
chain: Application Default Credentials
Seção intitulada “chain: Application Default Credentials”Não injeta chave. A ADC resolve: Workload Identity no GKE, metadata na GCE, o arquivo apontado por
GOOGLE_APPLICATION_CREDENTIALS, ou o gcloud.
Com chain, o GCP_SA_KEY não é necessário.
RUNNER_GCP_CRED_MODE=chainGCP_PROJECT_ID=meu-projetoTambém single-projeto: para vários projetos, um runner por projeto, cada um com a sua GSA de Workload Identity.
Variáveis relacionadas
Seção intitulada “Variáveis relacionadas”| Variável | Notas |
|---|---|
AWS_REGION |
Usada pelos connectors AWS e obrigatória na atestação aws-sts. |
EKS_CLUSTER |
Sem ela o health check do EKS responde skipped: no cluster configured. O connector aparece como não-configurado no Fleet, que é diferente de quebrado e igualmente cego. |
GCP_PROJECT_ID |
Projeto alvo. |
GCP_REGION |
Região alvo. |
GCP_BILLING_EXPORT_TABLE |
Tabela de billing-export do BigQuery. Sem ela, a operação de custo do GCP falha de forma explícita. |