Configure o Terraform

Para usar o Terraform no seu ambiente isolado do Google Distributed Cloud (GDC), tem de transferi-lo e configurá-lo para processar recursos do Kubernetes.

Antes de começar

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

  • Valide se tem um bucket do GDC. Se não tiver um bucket, crie um.

  • Certifique-se de que o sistema consegue reconhecer o certificado da autoridade de certificação (CA) usado pelo armazenamento de objetos.

Faça a gestão do ficheiro de estado

O ficheiro de estado no Terraform é usado para registar o estado atual da implementação e mapeá-lo para a configuração do Terraform. Uma vez que o armazenamento de objetos do GDC é implementado através do S3, pode usar a API S3 do Terraform para sincronizar com um ficheiro de estado partilhado. Para tal, tem de configurar o Terraform para sincronizar com o estado remoto:

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

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

    Substitua o seguinte:

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

    • TF_STATE_PATH: a localização do ficheiro de estado do Terraform a armazenar no bucket.

    • BUCKET_ENDPOINT: o ponto final do recurso personalizado Bucket.

    • ZONE: a zona do recurso personalizado Bucket.

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

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

    Tem de definir skip_credentials_validation e force_style_path como true, uma vez que o GDC não é compatível com a validação de credenciais e usa o ponto final de estilo de caminho.

  2. Inicialize as novas edições do ficheiro de estado no bucket que especificou no passo anterior:

    terraform init
    

    O Terraform pode pedir uma região da AWS como entrada obrigatória, mas o valor não é usado, uma vez que está a usar o armazenamento de objetos do GDC. Introduza qualquer região da AWS para cumprir o requisito.

Defina as autorizações

Além das autorizações necessárias para realizar uma tarefa específica com o Terraform, como criar um projeto do GDC, também tem de ter autorizações para ver as definições de recursos personalizados nesse âmbito. Aplique as autorizaçõ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 ficheiro kubeconfig do servidor da API ou do cluster que aloja o recurso que está a gerir com o Terraform. Por exemplo, a maioria dos recursos é executada no servidor da API de gestão. Para cargas de trabalho de contentores, defina o ficheiro kubeconfig do cluster do Kubernetes. Certifique-se de que define o servidor da API global se estiver a gerir um recurso global.

  2. Associe a função de cluster definida no passo anterior ao utilizador:

    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 estes passos para cada servidor da API ou cluster para o qual quer definir autorizações do Terraform.

Instale e configure o fornecedor do Terraform

Tem de instalar o fornecedor do Kubernetes para aprovisionar e gerir recursos do Kubernetes.

  1. Num ficheiro do Terraform no módulo, como o ficheiro main.tf, insira o seguinte bloco required_providers:

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

    terraform init