Este documento mostra-lhe como criar e usar credenciais para aceder ao Cloud Storage através do VM Runtime no GDC. Um plug-in do Cloud Storage permite-lhe usar o importador de dados contentorizados (CDI) para importar imagens de VMs de contentores do Cloud Storage. Em seguida, pode criar discos virtuais a partir destas imagens no Cloud Storage e anexá-los a VMs que são executadas no seu cluster. A CDI é ativada automaticamente num cluster que executa o VM Runtime no GDC.
Antes de começar
Para preencher este documento, precisa de ter acesso aos seguintes recursos:
- Acesso à versão 1.12.0 do Google Distributed Cloud (
anthosBareMetalVersion: 1.12.0) ou a um cluster superior. Pode usar qualquer tipo de cluster capaz de executar cargas de trabalho. Se necessário, experimente o Google Distributed Cloud no Compute Engine ou consulte a vista geral da criação de clusters. - Uma conta de serviço e uma chave de conta de serviço que quer usar para o acesso ao Cloud Storage. Se necessário, configure uma conta de serviço que possa aceder a um contentor do Cloud Storage.
Vista geral das credenciais
Para aceder ao Cloud Storage, usa uma conta de serviço que faculta credenciais ao contentor de armazenamento. A conta de serviço requer privilégios diferentes para aceder com êxito a um contentor de armazenamento:
- Contentor de armazenamento público: usa uma conta de serviço para autoidentificação, mas não são necessárias autorizações específicas.
- Contentor de armazenamento privado: a conta de armazenamento requer o privilégio de visualizador ou administrador para o contentor de armazenamento.
Existem duas formas de fornecer as credenciais da conta de serviço à CDI:
- Configure as Credenciais padrão da aplicação (ADC) da Google nos nós no seu cluster. Para mais informações, consulte o artigo Configure o ADC para um ambiente no local ou outro fornecedor de nuvem.
- Forneça um segredo que contenha a chave da conta de serviço para aceder ao Cloud Storage. O resto deste documento mostra-lhe como criar uma chave e um segredo da conta de serviço.
Crie um Secret
Transfere a chave da conta de serviço para o Kubernetes através de um segredo criado no espaço de nomes do volume de dados. A secção data do Secret contém uma entrada para creds-gcp.json. O valor são os dados codificados em base64 do ficheiro de chave da conta de serviço. A CLI cria estes dados codificados em base64 automaticamente. Se usar um manifesto YAML para criar o segredo, comece por criar um hash base64 do conteúdo do ficheiro de chave da conta de serviço.
CLI
Crie o Secret com
kubectl:kubectl create secret generic SECRET_NAME \ --from-file=creds-gcp.json=SERVICE_ACCOUNT_KEY_PATH \ --namespace NAMESPACE_NAMESubstitua os seguintes valores:
SECRET_NAME: o nome do seu segredo.SERVICE_ACCOUNT_KEY_PATH: o caminho para o ficheiro de chave da conta de serviço.NAMESPACE_NAME: o espaço de nomes do seu segredo.- Crie o seu segredo no cluster onde o CDI é executado e no mesmo espaço de nomes que o volume de dados. A CDI é ativada automaticamente num cluster que executa o VM Runtime no GDC.
Manifesto
Crie um
Secretmanifesto, como my-secret.yaml, no editor da sua preferência:nano my-secret.yamlCopie e cole o seguinte manifesto YAML:
apiVersion: v1 data: creds-gcp.json: BASE64_SERVICE_ACCOUNT_FILE kind: Secret metadata: name: SECRET_NAME namespace: NAMESPACE_NAME type: OpaqueSubstitua os seguintes valores:
BASE64_SERVICE_ACCOUNT_FILE: o hash base64 do conteúdo do ficheiro de chave da conta de serviço.SECRET_NAME: o nome do seu segredo.NAMESPACE_NAME: o espaço de nomes do seu segredo.- Crie o seu segredo no cluster onde o CDI é executado e no mesmo espaço de nomes que o volume de dados. A CDI é ativada automaticamente num cluster que executa o VM Runtime no GDC.
Guarde e feche o manifesto secreto no editor.
Aplique o manifesto Secret com
kubectl:kubectl apply -f my-secret.yaml
Encaminhe um segredo existente
Em vez de criar um Secret, pode criar um SecretForwarder para encaminhar
um Secret existente para utilização. O SecretForwarder suporta o encaminhamento de segredos
no mesmo cluster ou entre clusters, como do cluster de administrador para um
cluster de utilizador.
Para usar o segredo de destino para aceder ao Cloud Storage, o segredo de origem tem de ter uma chave creds-gcp.json na respetiva secção data.
No mesmo cluster
O exemplo seguinte do manifesto SecretForwarder encaminha um segredo no mesmo cluster:
apiVersion: baremetal.cluster.gke.io/v1
kind: SecretForwarder
metadata:
name: cdi-gcs
namespace: default
spec:
inClusterTargetSecrets:
name: gcs-sa
namespaces:
- default
sourceSecret:
name: gke-connect
namespace: anthos-creds
Este exemplo faz o seguinte:
- Cria um
SecretForwarderdenominadocdi-gcsno espaço de nomesdefault. - Encaminha o segredo denominado
gke-connectno espaço de nomesanthos-credspara um novo segredo denominadogcs-sano espaço de nomesdefault. - Cria o novo segredo no mesmo cluster.
Para encaminhar um segredo no mesmo cluster, conclua os seguintes passos:
Crie um
SecretForwardermanifesto, como my-forwarded-secret.yaml, no editor à sua escolha:nano my-forwarded-secret.yamlCopie e cole o seguinte manifesto YAML:
apiVersion: baremetal.cluster.gke.io/v1 kind: SecretForwarder metadata: name: SECRET_FORWARDER_NAME namespace: NAMESPACE_NAME spec: inClusterTargetSecrets: name: TARGET_SECRET_NAME namespaces: - TARGET_NAMESPACE_NAME sourceSecret: name: SOURCE_SECRET_NAME namespace: SOURCE_NAMESPACE_NAMESubstitua os seguintes valores:
SECRET_FORWARDER_NAME: o nome do seu SecretForwarder.NAMESPACE_NAME: o espaço de nomes do seu SecretForwarder.TARGET_SECRET_NAME: o nome do seu novo segredo.TARGET_NAMESPACE_NAME: os namespaces do seu novo segredo.- Crie o seu segredo no cluster onde o CDI é executado e no mesmo espaço de nomes que o volume de dados. A CDI é ativada automaticamente num cluster que executa o VM Runtime no GDC.
SOURCE_SECRET_NAME: o nome do segredo de origem para encaminhar.SOURCE_NAMESPACE_NAME: o espaço de nomes da sua origem Segredo a encaminhar.
Guarde e feche o manifesto
SecretForwarderno editor.Aplique o manifesto
SecretForwarderatravés dekubectl:kubectl apply -f my-forwarded-secret.yaml
Em vários clusters
O exemplo seguinte SecretForwarder manifest encaminha um segredo entre clusters:
apiVersion: baremetal.cluster.gke.io/v1
kind: SecretForwarder
metadata:
name: cdi-gcs
namespace: cluster-user1
spec:
RemoteClusterTargetSecrets:
name: gcs-sa
namespaces:
- default
sourceSecret:
name: gke-connect
namespace: anthos-creds
Este exemplo faz o seguinte:
- Cria um
SecretForwarderdenominadocdi-gcsno espaço de nomescluster-user1. - Encaminha o segredo denominado
gke-connectno espaço de nomesanthos-credspara um novo segredo denominadogcs-sano espaço de nomesdefault. - Cria o novo segredo no cluster denominado
user1.
Para encaminhar um segredo no mesmo cluster, conclua os seguintes passos:
Crie um
SecretForwardermanifesto, como my-forwarded-secret.yaml, no editor à sua escolha:nano my-forwarded-secret.yamlCopie e cole o seguinte manifesto YAML:
apiVersion: baremetal.cluster.gke.io/v1 kind: SecretForwarder metadata: name: SECRET_FORWARDER_NAME namespace: NAMESPACE_NAME spec: RemoteClusterTargetSecrets: name: TARGET_SECRET_NAME namespaces: - TARGET_NAMESPACE_NAME sourceSecret: name: SOURCE_SECRET_NAME namespace: SOURCE_NAMESPACE_NAMESubstitua os seguintes valores:
SECRET_FORWARDER_NAME: o nome do seu SecretForwarder no cluster remoto.NAMESPACE_NAME: o espaço de nomes do seu SecretForwarder no cluster remoto.TARGET_SECRET_NAME: o nome do novo segredo no cluster remoto.TARGET_NAMESPACE_NAME: os espaços de nomes do novo segredo no cluster remoto.- Crie o seu segredo no cluster onde o CDI é executado e no mesmo espaço de nomes que o volume de dados. A CDI é ativada automaticamente num cluster que executa o VM Runtime no GDC.
SOURCE_SECRET_NAME: o nome do segredo de origem para encaminhar.SOURCE_NAMESPACE_NAME: o espaço de nomes da sua origem Segredo a encaminhar.
Guarde e feche o manifesto
SecretForwarderno editor.Aplique o manifesto no cluster de administrador com
kubectlcom oKUBECONFIGdo cluster de administrador:SecretForwarderkubectl apply -f my-forwarded-secret.yaml
Use um segredo para importar uma imagem
Para usar o segredo para importar uma imagem do Cloud Storage quando cria um disco virtual e uma VM, conclua os seguintes passos:
Crie um manifesto que defina um
VirtualMachineDiskeVirtualMachine, como my-vm.yaml,no editor da sua preferência:nano my-vm.yamlCopie e cole a seguinte definição YAML:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: VM_NAME-boot-dv spec: size: 20Gi source: gcs: url: IMAGE_URL secretRef: SECRET_NAME --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dvSubstitua os seguintes valores:
VM_NAME– o nome da sua VM.IMAGE_URL– o URL da imagem de disco Armazenamento na nuvem, comogs://my-images-bucket/disk.qcow2.SECRET_NAME: o nome do seu segredo.
Guarde e feche o manifesto no editor.
Crie a VM e o disco com
kubectl:kubectl apply -f my-vm.yaml