Como criar referências de recursos


Um recurso do Google Cloud criado com o Config Connector pode referenciar outros recursos. O Config Connector define esses relacionamentos por meio de referências de recursos. Este tópico explica como criar recursos com referências.

Tipos de referências

No Config Connector, as referências podem ser dependências ou links.

Dependências
Uma referência de dependência refere-se a um recurso existente do Google Cloud necessário para o recurso do Config Connector. Por exemplo, uma regra de firewall não pode existir sem uma rede
Links
Uma referência de link une recursos independentes. Por exemplo, um projeto pode ser associado a uma conta de faturamento.

Como especificar referências de recursos

Você especifica referências de recursos no spec do recurso. O nome do campo é o nome abreviado do recurso seguido por Ref. Exemplo:

  • A referência a um PubSubTopic chamado topic é topicRef.
  • A referência a um StorageBucket chamado bucket é bucketRef.

A referência é um objeto com um único campo (name). O recurso em resourceRef é substituído pelo nome da referência.

O arquivo YAML a seguir descreve um PubSubSubscription do Pub/Sub que faz referência a um PubSubTopic chamado myTopic.

apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
kind: PubSubSubscription
metadata:
  name: pubsubsubscription-referencing-topic
spec:
  topicRef:
    name: myTopic

Exemplo do Pub/Sub

Criar um PubSubTopic

Neste exemplo, você cria um PubSubSubscription que depende de um PubSubTopic.

  1. Copie o seguinte para um arquivo chamado pubsub-topic.yaml.

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubTopic
    metadata:
    name: TOPIC_NAME
    

    Substitua TOPIC_NAME pelo nome desejado para a PubSubTopic

    Por exemplo, para criar um tópico chamado myTopic, use o seguinte arquivo YAML:

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubTopic
    metadata:
      name: myTopic
    
  2. Crie o PubSubTopic com kubectl apply.

    kubectl --namespace CC_NAMESPACE apply -f pubsub-topic.yaml

    Substitua CC_NAMESPACE pelo namespace em que o Config Connector gerencia recursos.

Criar um PubSubSubscription

  1. Copie o código abaixo em um arquivo chamado "pubsub-subscription.yaml":

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubSubscription
    metadata:
      name: pubsubsubscription-referencing-topic
    spec:
      topicRef:
        name: TOPIC_NAME
    

    Substitua TOPIC_NAME pelo nome do PubSubTopic usado na etapa 1. Por exemplo, o YAML que faz referência ao tópico myTopic criado anteriormente é:

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubSubscription
    metadata:
      name: pubsubsubscription-referencing-topic
    spec:
      topicRef:
        name: myTopic
    
  2. Crie o PubSubSubscription com kubectl apply.

    kubectl --namespace CC_NAMESPACE apply -f pubsub-subscription.yaml 

    Substitua CC_NAMESPACE pelo namespace em que o Config Connector gerencia recursos.

Referências externas

O Config Connector pode fazer referência a recursos que ele não gerencia. Elas são conhecidas como Referências externas. Por exemplo, o ComputeURLMap abaixo faz referência a um BackendService chamado test-backendservice.

apiVersion: compute.cnrm.cloud.google.com/v1beta1
kind: ComputeURLMap
metadata:
  name: test-urlmap
spec:
  location: global
  defaultService:
    backendServiceRef:
      external: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/test-backendservice

O formato dos valores aceitos por external depende do recurso. Consulte a documentação para recursos específicos na Referência de recursos. Para descobrir quais valores external aceita, leia as descrições dos campos external do recurso.

IAMPolicy, IAMPartialPolicy e IAMPolicyMember

IAMPolicy, IAMPartialPolicy e IAMPolicyMember também são compatíveis com referências externas. Por exemplo, o IAMPolicyMember abaixo faz referência a um Project com o ID do projeto test-project.

apiVersion: iam.cnrm.cloud.google.com/v1beta1
kind: IAMPolicyMember
metadata:
  name: test-iampolicymember
spec:
  member: serviceAccount:test-serviceaccount@test-project.iam.gserviceaccount.com
  role: roles/storage.admin
  resourceRef:
    kind: Project
    external: projects/test-project

Para descobrir qual formato o campo external aceita, leia a documentação de referência. As páginas IAMPolicy, IAMPartialPolicy e IAMPolicyMember listam o formato aceito para todos os recursos compatíveis. Os formatos são listados na coluna "External Reference Formats" da tabela Supported Resources. Também é possível acessar a página de referência de um recurso individual (por exemplo, PubSubTopic) e observar o valor listado na linha "Formato de referência externa do IAM" da tabela de resumo do recurso.

Referências de vários namespaces

O Config Connector permite que os recursos façam referência a recursos em outros namespaces. No entanto, se o Config Connector estiver instalado no namespaced-mode, é necessário conceder outras permissões ao Config Connector para permitir referências entre namespaces.

Por exemplo, se você quiser criar recursos em NAMESPACE_A que referenciam recursos em NAMESPACE_B, crie o seguinte RoleBinding:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  namespace: NAMESPACE_B
  name: allow-references-from-NAMESPACE_A
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cnrm-viewer
subjects:
- kind: ServiceAccount
  name: cnrm-controller-manager-NAMESPACE_A
  namespace: cnrm-system

A seguir

  • Revise a Referência de recurso para aprender sobre os recursos aceitos pelo Config Connector.

  • Veja como usar uma referência de recurso para um Secret no cluster do Config Connector.