Configurar o Terraform

Para usar o Terraform no ambiente isolado do Google Distributed Cloud (GDC), faça o download e configure-o para processar recursos do Kubernetes.

Antes de começar

  • Faça o download do Terraform na sua estação de trabalho seguindo a documentação fornecida pela HashiCorp: https://developer.hashicorp.com/terraform/install.

  • Verifique se você tem um bucket de armazenamento do GDC. Se você não tiver um bucket de armazenamento, crie um.

  • Verifique se o sistema reconhece o certificado da autoridade certificadora (CA) usado pelo armazenamento de objetos.

Gerenciar o arquivo de estado

O arquivo de estado no Terraform é usado para registrar o estado atual da implantação e mapeá-lo para a configuração do Terraform. Como o armazenamento de objetos do GDC é implementado usando o S3, é possível usar a API S3 do Terraform para sincronizar com um arquivo de estado compartilhado. Para isso, configure o Terraform para sincronizar com o estado remoto:

  1. Adicione a seguinte configuração a um arquivo do Terraform armazenado localmente, como o arquivo main.tf:

    terraform {
      backend "s3" {
        bucket = "BUCKET_FQN"
        key = "TF_STATE_PATH"
        endpoint = "BUCKET_ENDPOINT"
        skip_credentials_validation = true
        force_path_style = true
        access_key = "ACCESS_KEY"
        secret_key = "SECRET_KEY"
        ...
      }
    }
    

    Substitua:

    • BUCKET_FQN: o nome totalmente qualificado do recurso personalizado Bucket.

    • TF_STATE_PATH: o local do arquivo de estado do Terraform a ser armazenado no bucket de armazenamento.

    • BUCKET_ENDPOINT: o endpoint do recurso personalizado Bucket.

    • ACCESS_KEY: a chave de acesso adquirida do secret que contém suas credenciais de acesso. Siga as instruções em Receber credenciais de acesso ao bucket para adquirir a chave de acesso.

    • SECRET_KEY: a chave secreta adquirida do secret que contém suas credenciais de acesso. Siga as instruções em Receber credenciais de acesso ao bucket para adquirir a chave secreta.

    Defina skip_credentials_validation e force_style_path como true porque o GDC não é compatível com a validação de credenciais e usa o endpoint de estilo de caminho.

  2. Inicialize as novas edições do arquivo de estado no bucket de armazenamento especificado na etapa anterior:

    terraform init
    

    O Terraform pode pedir uma região da AWS como entrada obrigatória, mas o valor não é usado porque você está usando o armazenamento de objetos do GDC. Insira qualquer região da AWS para atender ao requisito.

Definir permissões

Além das permissões necessárias para realizar uma tarefa específica usando o Terraform, como criar um projeto do GDC, você também precisa ter permissões para visualizar definições de recursos personalizados nesse escopo. Aplique as permissões necessárias para usar o Terraform:

  1. Crie o recurso de função de cluster crd-viewer:

    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"]
    EOF
    

    Substitua KUBECONFIG pelo arquivo kubeconfig do servidor de API ou cluster que hospeda o recurso gerenciado com o Terraform. Por exemplo, a maioria dos recursos é executada no servidor da API Management. Para cargas de trabalho de contêineres, defina o arquivo kubeconfig do cluster do Kubernetes. Defina o servidor de API global se você estiver gerenciando um recurso global.

  2. Vincule a função de cluster definida na etapa anterior ao usuário:

    kubectl apply --kubeconfig KUBECONFIG -f - <<EOF
    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
    EOF
    

Repita essas etapas para cada servidor ou cluster de API em que você quer definir permissões do Terraform.

Instalar e configurar o provedor do Terraform

Você precisa instalar o provedor do Kubernetes para provisionar e gerenciar recursos do Kubernetes.

  1. Em um arquivo do Terraform no módulo, como o arquivo main.tf, insira o seguinte bloco required_providers:

    terraform {
      required_providers {
        kubernetes = {
          source = "hashicorp/kubernetes"
          version = "~>2.6.1"
        }
      }
    }
    
  2. Inicialize o diretório de trabalho do Terraform para instalar o provedor:

    terraform init