O Config Connector pode gerenciar seus recursos no nível de projeto, pasta ou organização. Para que o Config Connector determine onde criar os recursos, primeiro ele verifica um campo de definição de escopo na especificação de recursos. Se não for encontrado, primeiro ele verifica se há uma anotação de definição de escopo.
Especifique o campo projectRef
.
A maioria dos recursos do Config Connector com escopo de projeto aceita um campo chamado projectRef
na especificação CRD. Use esse campo para especificar o projeto do Google Cloud em que você quer criar o recurso.
Se o projeto do Google Cloud também for gerenciado no mesmo cluster com a CRD do projeto, será possível especificar o projeto como uma referência de recurso do Kubernetes:
...
spec:
projectRef:
name: PROJECT_RESOURCE_NAME
namespace: PROJECT_RESOURCE_NAMESPACE
...
Essa abordagem permite usar o Config Connector e criar um projeto do Google Cloud com os recursos filhos em uma única operação de aplicação. O campo de namespace é opcional se o recurso do Kubernetes do projeto estiver no mesmo namespace do Kubernetes que o recurso com escopo do projeto.
Se o projeto do Google Cloud não for gerenciado como um recurso do Kubernetes
no mesmo cluster, será possível usar o campo external
para especificar diretamente o
ID do projeto. O formato exato do valor pode ser diferente, dependendo do
tipo de recurso. Dois formatos mais comuns são "PROJECT_ID" e
"projects/PROJECT_ID". Veja um exemplo de "projects/PROJECT_ID" abaixo:
...
spec:
projectRef:
external: "projects/PROJECT_ID"
...
Anotar a configuração de recursos
Se o recurso Config Connector estiver no escopo do projeto, mas não for compatível com o campo projectRef
, defina o ID do projeto como a configuração do recurso usando a anotação project-id
:
...
metadata:
annotations:
cnrm.cloud.google.com/project-id: PROJECT_ID
...
Veja um exemplo de como o YAML de um recurso FooBar
funciona com essa
anotação:
apiVersion: foo.cnrm.cloud.google.com/v1beta1
kind: FooBar
metadata:
annotations:
cnrm.cloud.google.com/project-id: PROJECT_ID
name: foobarname
Anotar configuração de namespace
É possível definir um ID do projeto padrão para recursos recém-criados anotando seu namespace do Kubernetes. Se algum dos recursos no namespace tiver essa anotação definida explicitamente na própria configuração, a anotação no nível do recurso substituirá a anotação no nível do namespace.
Para anotar o namespace usando a linha de comando, execute o seguinte:
kubectl annotate namespace NAMESPACE_NAME cnrm.cloud.google.com/project-id=PROJECT_ID
Substitua:
NAMESPACE_NAME
: o nome do namespacePROJECT_ID
: o ID do projeto do Google Cloud
Como alternativa, você pode aplicar um manifesto YAML contendo a anotação. Copie o YAML abaixo em um arquivo:
apiVersion: v1
kind: Namespace
metadata:
annotations:
cnrm.cloud.google.com/project-id: PROJECT_ID
name: NAMESPACE_NAME
Substitua:
PROJECT_ID
: o ID do projeto do Google CloudNAMESPACE_NAME
: o nome do namespace
Depois de criar o arquivo, aplique-o ao cluster.
Usar o nome do namespace como o ID do projeto
Se o recurso e o namespace não especificarem um ID de projeto, o Config Connector usará o nome do namespace como o ID do projeto. Esse comportamento padrão é compatível com o Config Connector, mas não é recomendado, já que o padrão implícito do ID do projeto pode ser confuso.