Como criar referências de recursos
Um recurso 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 se refere a um recurso Google Cloud existente 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
chamadotopic
étopicRef
. - A referência a um
StorageBucket
chamadobucket
é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
.
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 aPubSubTopic
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
Crie o
PubSubTopic
comkubectl 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
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 doPubSubTopic
usado na etapa 1. Por exemplo, o YAML que faz referência ao tópicomyTopic
criado anteriormente é:apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubSubscription metadata: name: pubsubsubscription-referencing-topic spec: topicRef: name: myTopic
Crie o
PubSubSubscription
comkubectl 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 "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 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.