Recursos ao nível do projeto


O Config Connector pode gerir os seus recursos ao nível do projeto, da pasta ou da organização. Para que o Config Connector determine onde criar os seus recursos, verifica primeiro um campo de definição de âmbito na especificação do recurso. Se não o encontrar, verifica uma anotação de definição de âmbito.

Especifique o campo projectRef

A maioria dos recursos do Config Connector com âmbito do projeto suporta um campo denominado projectRef na respetiva especificação CRD. Use este campo para especificar o Google Cloud projeto no qual quer criar o recurso.

Se o Google Cloud projeto também for gerido no mesmo cluster com o CRD Project, pode especificar o projeto como uma referência de recurso do Kubernetes:

...
spec:
  projectRef:
    name: PROJECT_RESOURCE_NAME
    namespace: PROJECT_RESOURCE_NAMESPACE
...

Esta abordagem permite usar o Config Connector e criar um Google Cloud projeto com os respetivos recursos secundários numa única operação de aplicação. O campo do espaço de nomes é opcional se o recurso do Kubernetes do projeto estiver no mesmo espaço de nomes do Kubernetes que o recurso com âmbito do projeto.

Se o Google Cloud projeto não for gerido como um recurso do Kubernetes no mesmo cluster, pode usar o campo external para especificar diretamente o ID do projeto. O formato exato do valor pode ser diferente consoante o tipo de recurso. Os 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"
...

Anote a configuração de recursos

Se o recurso do Config Connector tiver âmbito do projeto, mas não suportar o campo projectRef, pode definir o ID do projeto na configuração do recurso através da anotação project-id:

...
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
...

Segue-se um exemplo do aspeto do YAML de um recurso FooBar com esta anotação:

apiVersion: foo.cnrm.cloud.google.com/v1beta1
kind: FooBar
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
  name: foobarname

Anote a configuração do espaço de nomes

Pode definir um ID do projeto predefinido para recursos recém-criados anotando o seu espaço de nomes do Kubernetes. Se algum dos recursos no espaço de nomes tiver esta anotação definida explicitamente na sua própria configuração, a anotação ao nível do recurso substitui a anotação ao nível do espaço de nomes.

Para anotar o espaço de nomes através da linha de comandos, execute o seguinte comando:

kubectl annotate namespace NAMESPACE_NAME cnrm.cloud.google.com/project-id=PROJECT_ID

Substitua o seguinte:

  • NAMESPACE_NAME: o nome do seu espaço de nomes
  • PROJECT_ID: o ID do seu Google Cloud projeto

Em alternativa, pode aplicar um manifesto YAML que contenha a anotação. Copie o YAML abaixo para um ficheiro:

apiVersion: v1
kind: Namespace
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
  name: NAMESPACE_NAME

Substitua o seguinte:

  • PROJECT_ID: o ID do seu Google Cloud projeto
  • NAMESPACE_NAME: o nome do seu espaço de nomes

Depois de criar o ficheiro, aplique-o ao cluster.

Usar o nome do espaço de nomes como ID do projeto

Se nem o recurso nem o espaço de nomes especificarem um ID do projeto, o Config Connector usa o nome do espaço de nomes como o ID do projeto. Este comportamento predefinido é suportado pelo Config Connector, mas não o recomendamos, uma vez que a predefinição implícita do ID do projeto pode ser confusa.