Todas as máquinas virtuais (VMs) armazenam os respetivos metadados num servidor de metadados. Pode adicionar, remover e ver metadados nas suas VMs isoladas do Google Distributed Cloud (GDC) como pares de chave-valor (KVPs).
Pode usar os KVPs de metadados para armazenar informações que podem ajudar a identificar a sua VM, como o nome de um servidor. Pode aceder a metadados a partir do exterior e do interior da VM, e usar os metadados para transmitir informações entre diferentes sistemas.
Antes de começar
Para usar os comandos da gdcloud
interface de linhas de comando (CLI), certifique-se de que transferiu, instalou e configurou a CLI gdcloud
.
Todos os comandos para a nuvem distribuída usam a CLI gdcloud
ou kubectl
e requerem um ambiente de sistema operativo (SO).
Obtenha o caminho do ficheiro kubeconfig
Para executar comandos no servidor da API Management, certifique-se de que tem os seguintes recursos:
Inicie sessão e gere o ficheiro kubeconfig para o servidor da API Management, se não tiver um.
Use o caminho para o ficheiro kubeconfig do servidor da API de gestão para substituir
MANAGEMENT_API_SERVER
nestas instruções.
Peça autorizações e acesso
Para realizar as tarefas indicadas nesta página, tem de ter a função de administrador da máquina virtual do projeto. Siga os passos para validar ou pedir ao administrador de IAM do projeto que lhe atribua a função de administrador de máquinas virtuais do projeto (project-vm-admin
) no espaço de nomes do projeto onde a VM reside.
Para operações de VM que usam a consola do GDC ou a CLI gdcloud,
peça ao administrador de IAM do projeto para lhe atribuir a função de administrador de máquinas virtuais do projeto e a função de visualizador do projeto (project-viewer
).
Adicione ou remova metadados
Esta secção descreve como adicionar e remover metadados de instâncias de VM existentes.
Pode usar metadados para armazenar pares de chave-valor arbitrários que quer adicionar às suas VMs. Por exemplo, pode querer adicionar e gerir os seus próprios metadados personalizados para identificar diferentes ambientes, como test
e production
.
Adicione metadados
gdcloud
Adicione metadados a uma instância de VM específica. Tem de incluir um dos indicadores
--metadata
ou--metadata-from-file
no comando. Também pode adicionar ambos os indicadores no mesmo comando, se for necessário para o seu exemplo de utilização:gdcloud compute instances add-metadata VM_NAME [--project=PROJECT] [--metadata=KEY=KEY_VALUE,[,KEY=KEY_VALUE,...]] [--metadata-from-file=KEY=LOCAL_FILE_PATH,]
Substitua o seguinte:
VM_NAME
: o nome da instância de VM.PROJECT
: o nome do projeto onde a VM reside. Este valor é opcional.KEY
: a chave do par de metadados.KEY_VALUE
: o valor do par de metadados.LOCAL_FILE_PATH
: o valor do par de metadados de um ficheiro local.
API
Para adicionar metadados com a API, tem de usar um token STS
.
Use a CLI gcloud para gerar um símbolo
STS
:gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"
Substitua
ORG_SUFFIX
pelo sufixo da organização. Por exemplo, se o URL da consola da organização forhttps://console.example-org.com
, oORG_SUFFIX
éexample-org.com
O resultado é semelhante ao seguinte:
STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
Adicione metadados a uma instância de VM específica:
curl -X POST "https://metadata.ORG_SUFFIX/virtual-machines/metadata/v1/projects/PROJECT/vm/VM_NAME" \ -H "Authorization: Bearer STS_TOKEN \ -H "Content-Type: application/json" \ -d "{"metadata": {"items": [{"key": "test-key", "value": "test-value"}]}}"
Substitua o seguinte:
ORG_SUFFIX
: o sufixo da organização. Por exemplo, se o URL da consola da organização forhttps://console.example-org.com
, oORG_SUFFIX
éexample-org.com
.VM_NAME
: o nome da instância de VM.PROJECT
: o nome do projeto onde a VM reside. Este valor é opcional.STS_TOKEN
: o tokenSTS
gerado a partir da CLI gcloud.
Remova metadados
gdcloud
Remova metadados de uma instância de VM específica. Se quiser remover todas as entradas de metadados, use a flag
--all
. Tem de usar uma das flags--all
ou--keys
no seu comando:gdcloud compute instances remove-metadata VM_NAME [--project=PROJECT] [--keys=KEY,[KEY,...]] [--all]
Substitua o seguinte:
VM_NAME
: o nome da instância de VM.PROJECT
: o nome do projeto onde a VM reside. Este valor é opcional.KEY
: a string da chave para o par de metadados.
API
Para remover metadados com a API, tem de usar um token STS
.
Use a CLI gcloud para gerar um símbolo
STS
:gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"
Substitua
ORG_SUFFIX
pelo sufixo da organização. Por exemplo, se o URL da consola da organização forhttps://console.example-org.com
, oORG_SUFFIX
éexample-org.com
.O resultado é semelhante ao seguinte:
STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
Remova metadados de uma instância de VM específica:
curl -X POST "https://metadata.ORG_SUFFIX/virtual-machines/metadata/v1/projects/PROJECT/vm/VM_NAME" \ -H "Authorization: Bearer STS_TOKEN" \ -H "Content-Type: application/json" \ -d "{"metadata": {"items": [{"key": "test-key", "value": "test-value"}]}}"
Substitua o seguinte:
ORG_SUFFIX
: o sufixo da organização. Por exemplo, se o URL da consola da organização forhttps://console.example-org.com
, oORG_SUFFIX
éexample-org.com
.VM_NAME
: o nome da instância de VM.PROJECT
: o nome do projeto onde a VM reside.STS_TOKEN
: o tokenSTS
gerado a partir da CLI gcloud.
Consultar metadados
gdcloud
Liste todos os metadados da instância da VM para ver os detalhes dos metadados:
gdcloud compute instances describe VM_NAME [--project=PROJECT]
Substitua o seguinte:
VM_NAME
: o nome da instância de VM.PROJECT
: o nome do projeto onde a VM reside. Este valor é opcional.
O resultado é semelhante ao seguinte:
... metadata: items: - key: Key-1 value: val12 - key: key2 value: lksdjfhk-user1
API
Use a CLI gcloud para gerar um símbolo
STS
:gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"
Substitua
ORG_SUFFIX
pelo sufixo da organização.O resultado é semelhante ao seguinte:
STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
Liste todos os metadados da instância da VM para ver os detalhes dos metadados:
curl "https://metadata.ORG_SUFFIX/virtual-machines/metadata/v1/projects/PROJECT/vm/VM_NAME" \ -H "Authorization: Bearer STS_TOKEN" \ -H "Content-Type: application/json"
Substitua o seguinte:
ORG_SUFFIX
: o sufixo da organização. Por exemplo, se o URL da consola da organização forhttps://console.example-org.com
, oORG_SUFFIX
éexample-org.com
VM_NAME
: o nome da instância de VM.PROJECT
: o nome do projeto onde a VM reside. Este valor é opcional.STS_TOKEN
: o tokenSTS
gerado a partir da CLI gcloud.
O resultado é semelhante ao seguinte:
... metadata: items: - key: Key-1 value: val12 - key: key2 value: lksdjfhk-user1
Consultar metadados a partir de uma VM
Pode consultar os metadados da VM a partir da VM, sem ter de
estabelecer ligação ao servidor de metadados. Para tal, use o comando curl
e
anexe a chave de metadados aplicável ao URL de metadados.
Consultar um único KVP
Consultar um único KVP a partir de uma VM:
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/KEY" -H "Metadata-Flavor: Google"
Substitua KEY
pela chave do par de metadados que quer consultar.
Consultar todos os pares CVP com valores
Consultar todos os pares de chave-valor a partir de uma VM com chaves-valores:
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true" -H "Metadata-Flavor: Google"
Consultar todas as chaves de metadados sem valores
Consultar todas as chaves de metadados a partir de uma VM sem chaves-valores:
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=false" -H "Metadata-Flavor: Google"