Criar referências de recursos


Um Google Cloud recurso criado com o Config Connector pode fazer referência a outros recursos. O Config Connector define estas relações através 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 associações.

Dependências
Uma referência de dependência refere-se a um recurso existente 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 associa recursos independentes. Por exemplo, um projeto pode ser associado a uma conta de faturação.

Especificar referências de recursos

Especifica referências de recursos no spec do recurso. O nome do campo é o nome abreviado do recurso seguido de Ref. Por exemplo:

  • A referência a um PubSubTopic com o nome topic é topicRef.
  • A referência a um StorageBucket com o nome bucket é bucketRef.

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

O ficheiro YAML seguinte descreve um Pub/Sub PubSubSubscription que faz referência a um PubSubTopic com o nome myTopic.

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

Exemplo do Pub/Sub

Crie um PubSubTopic

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

  1. Copie o seguinte para um ficheiro denominado pubsub-topic.yaml:

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

    Substitua TOPIC_NAME pelo nome PubSubTopic pretendido

    Por exemplo, para criar um tópico com o nome myTopic, pode usar o seguinte ficheiro 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 espaço de nomes a partir do qual o Config Connector gere os recursos.

Crie uma PubSubSubscription

  1. Copie o seguinte para um ficheiro com o nome `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 usou no passo 1. Por exemplo, o YAML que faz referência ao tópico myTopic que 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 espaço de nomes a partir do qual o Config Connector gere os recursos.

Referências externas

O Config Connector pode fazer referência a recursos que não gere. Estas são conhecidas como referências externas. Por exemplo, o ComputeURLMap abaixo faz referência a um BackendService denominado 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 aceites por external depende do recurso. Consulte a documentação para recursos específicos na referência de recursos. Pode saber que valores external aceita lendo as descrições dos campos external do recurso.

IAMPolicy, IAMPartialPolicy e IAMPolicyMember

IAMPolicy, IAMPartialPolicy e IAMPolicyMember também suportam 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

Pode saber que formato o campo external aceita lendo a documentação de referência. As páginas IAMPolicy, IAMPartialPolicy e IAMPolicyMember indicam o formato aceite para todos os recursos suportados. Os formatos estão listados na coluna "Formatos de referência externos" da tabela Recursos suportados. Também pode aceder à página de referência de um recurso individual (por exemplo, PubSubTopic) e consultar o valor apresentado na linha "Formato de referência externa do IAM" da tabela de resumo do recurso.

Referências entre espaços de nomes

O Config Connector permite que os recursos façam referência a recursos noutros espaços de nomes. No entanto, se o Config Connector estiver instalado no modo com espaço de nomes, tem de conceder autorizações adicionais ao Config Connector para permitir referências entre espaços de nomes.

Por exemplo, se quiser criar recursos em NAMESPACE_A que façam referência a recursos em NAMESPACE_B, tem de 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

O que se segue?

  • Reveja a referência de recursos para saber mais sobre os recursos que o Config Connector suporta.

  • Veja como pode usar uma referência de recurso a um segredo no cluster do Config Connector.