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 nometopic
étopicRef
. - A referência a um
StorageBucket
com o nomebucket
é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
.
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 nomePubSubTopic
pretendidoPor 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
Crie o
PubSubTopic
comkubectl 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
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 dePubSubTopic
que usou no passo 1. Por exemplo, o YAML que faz referência ao tópicomyTopic
que criou 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 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.