Recursos com escopo de projeto
O Config Connector pode gerenciar seus recursos no nível de projeto, pasta ou organização. Para que o Config Connector determine onde criar seus recursos, ele primeiro verifica se há um campo de definição de escopo na especificação do recurso. Se não for encontrado, ele verifica se há uma anotação de definição de escopo.
Especificar o campo projectRef
A maioria dos recursos do Config Connector no escopo do projeto tem um campo chamado projectRef
na especificação do CRD. Use esse campo para especificar o projeto Google Cloud em que você
quer criar o recurso.
Se o projeto Google Cloud também for gerenciado no mesmo cluster com a CRD Project, especifique 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 Google Cloud com os recursos filhos em uma única operação de aplicação. O campo "namespace" é opcional se o recurso do Kubernetes do projeto estiver no mesmo namespace do Kubernetes que o recurso no escopo do projeto.
Se o projeto Google Cloud não for gerenciado como um recurso do Kubernetes
no mesmo cluster, use o campo external
para especificar diretamente o
ID do projeto. O formato exato do valor pode variar dependendo do tipo de recurso. Os dois formatos mais comuns são "PROJECT_ID" e "projects/PROJECT_ID". Confira um exemplo de "projects/PROJECT_ID" abaixo:
...
spec:
projectRef:
external: "projects/PROJECT_ID"
...
Anotar a configuração de recursos
Se o recurso do Config Connector tiver escopo de projeto, mas não for compatível com o campo
projectRef
, defina o ID do projeto na configuração do recurso
usando a anotação project-id
:
...
metadata:
annotations:
cnrm.cloud.google.com/project-id: PROJECT_ID
...
A seguir está um exemplo de como será o YAML de um recurso FooBar
que
contém 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 vai substituir a anotação no nível do namespace.
Para anotar o namespace usando a linha de comando, execute o seguinte comando:
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 Google Cloud
Como alternativa, aplique um manifesto YAML que contenha 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 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 nem o recurso nem o namespace especificarem um ID do projeto, o Config Connector usará o nome do namespace como ID do projeto. Esse comportamento padrão é compatível com o Config Connector, mas não é recomendado porque o padrão implícito do ID do projeto pode ser confuso.