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
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 oferecem suporte a
Referências. 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. O
IAMPolicy.
IAMPartialPolicy
e IAMPolicyMember
páginas listam o formato aceito para todos os recursos compatíveis. Os formatos estão listados
nos "Formatos de referência externa" coluna da tabela Recursos compatíveis.
Você também pode acessar a página de referência de um recurso individual (por exemplo,
PubSubTopic)
e verifique o valor listado no "Formato de referência externa do IAM" linha do
na 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.