Para configurar o Terraform no ambiente do Google Distributed Cloud (GDC) com isolamento físico, faça o download dele e configure-o para processar recursos do Kubernetes.
Este documento é destinado a todos os grupos de público-alvo que precisam configurar o Terraform para gerenciar os fluxos de trabalho de hardware e software com isolamento físico. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.
Antes de começar
Faça o download do Terraform 1.6.3 ou mais recente para sua estação de trabalho seguindo a documentação fornecida pela HashiCorp: https://developer.hashicorp.com/terraform/install. A configuração de back-end neste documento usa configurações que não são compatíveis com versões mais antigas do Terraform.
Verifique se você tem um bucket de armazenamento do GDC. Se você não tiver um bucket de armazenamento, crie um. Para mais informações, consulte Criar buckets de armazenamento.
Verifique se o sistema reconhece o certificado da autoridade certificadora (CA) usado pelo repositório de objetos.
Instale a CLI gdcloud. Para mais informações, consulte Usar a CLI gdcloud.
Gere o arquivo kubeconfig para o servidor de API ou cluster que hospeda os recursos que você quer gerenciar com o Terraform. Para mais informações, consulte Gerar um arquivo kubeconfig.
Configurar o Terraform
Para configurar o Terraform no ambiente do GDC, faça o seguinte:
No módulo do Terraform ou na coleção de arquivos do Terraform na estação de trabalho, crie o arquivo
main.tfe adicione a seguinte configuração:terraform { backend "s3" { bucket = "BUCKET_FQN" key = "TF_STATE_PATH" region = "ZONE" endpoints = { s3 = "BUCKET_ENDPOINT" } use_path_style = true access_key = "ACCESS_KEY" secret_key = "SECRET_KEY" skip_credentials_validation = true skip_requesting_account_id = true skip_metadata_api_check = true skip_region_validation = true skip_s3_checksum = true } }Substitua:
BUCKET_FQN: o valorstatus.fullyQualifiedNamedo recurso personalizadoBucket. Por exemplo,aabc2z8-platform-terraform-state.TF_STATE_PATH: o caminho do arquivo de estado do Terraform a ser armazenado no bucket de armazenamento. Por exemplo,main.tfstate.ZONE: a zona do recurso personalizadoBucket(status.region). Por exemplo,zone1. O Terraform requer um valor de região, mas o repositório de objetos do GDC não o verifica.BUCKET_ENDPOINT: o valorstatus.endpointdo recurso personalizadoBucket. Por exemplo,https://objectstorage.org-1.zone1.google.gdch.test.ACCESS_KEY: a chave de acesso adquirida do secret que contém suas credenciais de acesso. Para mais informações sobre como adquirir a chave de acesso, consulte Obter credenciais de acesso ao bucket. O valor no secret é codificado em base64. Decodifique-o antes de usar.SECRET_KEY: a chave secreta adquirida do secret que contém suas credenciais de acesso. Para mais informações sobre como adquirir a chave secreta, consulte Obter credenciais de acesso ao bucket. O valor no secret é codificado em base64. Decodifique-o antes de usar.
O armazenamento de objetos do GDC é compatível com S3, mas não é da AWS. As configurações restantes definem o back-end para armazenamento que não é do AWS S3:
use_path_style: usa o endereçamento de bucket no estilo de caminho para o repositório de objetos do GDC.skip_credentials_validationeskip_requesting_account_id: impede que o Terraform chame o AWS STS e o AWS IAM. O GDC não oferece esses serviços.skip_metadata_api_check: impede que o Terraform consulte o serviço de metadados do AWS EC2.skip_region_validation: permite usar o nome da zona como região.skip_s3_checksum: impede que o Terraform solicite uma soma de verificação SHA-256 ao fazer upload do arquivo de estado.
Inicialize o arquivo de estado do Terraform no bucket de armazenamento especificado na etapa anterior:
terraform initImplante o recurso de papel de cluster
crd-viewere vincule-o à sua conta de usuário:kubectl apply --kubeconfig KUBECONFIG -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: crd-viewer rules: - apiGroups: ["apiextensions.k8s.io"] resources: ["customresourcedefinitions"] verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: crd-viewer-binding subjects: - kind: User name: USER_EMAIL roleRef: kind: ClusterRole name: crd-viewer apiGroup: rbac.authorization.k8s.io EOFSubstitua:
KUBECONFIG: o arquivo kubeconfig do servidor de API ou cluster que hospeda os recursos que você está gerenciando com o Terraform.USER_EMAIL: o e-mail do usuário a que você quer vincular o papel.
Implante o papel
crd-viewerem cada servidor de API ou cluster em que você quer usar o Terraform.No arquivo
main.tf, insira o seguinte blocorequired_providers:terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = ">=2.24.0" } } }Essa configuração instala o provedor do Kubernetes para provisionar e gerenciar recursos do Kubernetes no ambiente do GDC.
Inicialize o diretório de trabalho do Terraform para instalar o provedor:
terraform init