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 em um arquivo chamado pubsub-topic.yaml:

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

    Substitua TOPIC_NAME pelo nome de PubSubTopic desejado

    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 seguinte 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 de PubSubTopic que você usou na etapa 1. Por exemplo, o YAML que faz referência ao tópico myTopic que você criou 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.

Referências externas para IAMPolicy e IAMPolicyMembr

IAMPolicy e IAMPolicyMember também são compatíveis com Referências externas. Por exemplo, o IAMPolicyMember abaixo faz referência a Project com o código 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:
    apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1
    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 e IAMPolicyMember listam o formato aceito para todos os recursos compatíveis. Os formatos estão listados na coluna "Formatos de referência externa" da tabela Recursos compatíveis. Também é possível acessar a página de referência de um recurso individual (por exemplo, PubSubTopic) e consultar o valor listado na linha "Formato de referência externa do IAM" do recurso. resumo.

Referências entre namespaces

O Config Connector permite que os recursos referenciam recursos em outros namespaces. No entanto, se o Config Connector estiver instalado em namespaced-mode (em inglês), será necessário conceder permissões adicionais do Config Connector para permitir referências entre namespaces.

Por exemplo, se você quiser criar recursos em NAMESPACE_A que fazem referência a recursos em NAMESPACE_B, será necessário criar 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.