Configure o Terraform

Para usar o Terraform no seu ambiente isolado do Google Distributed Cloud (GDC), tem de o transferir 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.

  • Verifique se tem um contentor de armazenamento do GDC existente. Se não tiver um contentor de armazenamento, crie um.

  • Certifique-se de que o seu sistema consegue reconhecer o certificado da autoridade de certificação (AC) 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 isso, 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"
        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 contentor de armazenamento.

    • BUCKET_ENDPOINT: o ponto final 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 credenciais de acesso ao contentor 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 credenciais de acesso ao contentor para adquirir a chave secreta.

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

  2. Inicialize as edições do novo ficheiro de estado no contentor de armazenamento 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 satisfazer o requisito.

Defina autorizações

Além das autorizações necessárias para realizar uma tarefa específica através do Terraform, como criar um projeto do GDC, também tem de ter autorizações para ver 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 de 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 Management. Para cargas de trabalho de contentores, defina o ficheiro kubeconfig do cluster 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 ou cluster de API 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 Terraform no seu módulo, como o ficheiro 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 fornecedor:

    terraform init