Infraestrutura como código no Google Cloud

A infraestrutura como código (IaC) é o processo de aprovisionamento e gestão da infraestrutura de aplicações de software através de código, em vez de interfaces gráficas do utilizador ou scripts de linhas de comando.

Normalmente, o aprovisionamento da infraestrutura de aplicações envolve a configuração e a gestão de máquinas virtuais, ligações a bases de dados, armazenamento e outros elementos de infraestrutura. A gestão manual desta infraestrutura é demorada e propensa a erros, especialmente quando se gerem aplicações em grande escala.

A IaC permite-lhe definir a sua infraestrutura com ficheiros de configuração, o que lhe permite criar, alterar e gerir a sua infraestrutura de forma segura e repetível. Pode definir configurações de recursos que pode controlar por versão, reutilizar e partilhar. A IaC permite-lhe especificar o estado pretendido da sua infraestrutura. Em seguida, pode implementar a mesma configuração várias vezes para criar ambientes de desenvolvimento, teste e produção reproduzíveis.

A IaC permite-lhe tratar o aprovisionamento e a configuração da sua infraestrutura da mesma forma que trata o código da aplicação. Pode armazenar a lógica de configuração de aprovisionamento no controlo de origem e tirar partido dos pipelines de integração contínua e implementação contínua (CI/CD).

Vantagens da IaC

A utilização da IaC para configurar e gerir a infraestrutura da sua aplicação é uma prática recomendada para vários exemplos de utilização comuns. A Google gere os respetivos sistemas com IaC, e estabeleceu-o como uma prática padrão internamente.

A IaC oferece as seguintes vantagens:

  • Pode definir a sua infraestrutura com base nos seus requisitos e reutilizar a mesma configuração para criar vários ambientes de forma consistente.
  • Pode automatizar a criação e a gestão dos seus recursos na nuvem, incluindo para ambientes de implementação e teste.
  • Pode tratar as alterações de infraestrutura como trata as alterações de aplicações. Por exemplo, pode garantir que as alterações à configuração são revistas e validadas automaticamente. A gestão de ambientes de produção através de processos controlados por alterações com a IaC é uma prática recomendada.
  • Pode manter um histórico de todas as alterações de configuração. As alterações podem ser auditadas e revertidas.
  • Pode ter uma única fonte de verdade para a sua infraestrutura na nuvem.

Ferramentas de IaC para Google Cloud

OGoogle Cloud está totalmente integrado com muitas ferramentas de IaC. Escolha uma das seguintes ferramentas consoante o seu exemplo de utilização:

  • Terraform

    Em geral, para configurar e gerir a infraestrutura do Google Cloud através de código, use o fornecedor do Terraform para o Google Cloud.

    O HashiCorp Terraform é uma ferramenta de IaC que lhe permite definir recursos na nuvem e no local em ficheiros de configuração legíveis que pode controlar por versão, reutilizar e partilhar. Em seguida, pode usar um fluxo de trabalho consistente para aprovisionar e gerir toda a sua infraestrutura ao longo do respetivo ciclo de vida. Para mais informações, consulte o artigo Vista geral do Terraform no Google Cloud.

  • Infrastructure Manager

    Se quiser automatizar a implementação da sua configuração do Terraform, use o Infrastructure Manager (Infra Manager).

    O Infra Manager automatiza a implementação e a gestão de Google Cloud recursos de infraestrutura através do Terraform. O Infra Manager permite-lhe implementar programaticamente noGoogle Cloud, o que lhe permite usar este serviço em vez de manter uma cadeia de ferramentas diferente para trabalhar com o Terraform no Google Cloud. Para mais informações, consulte a vista geral do Infra Manager.

  • Terraform Cloud e Terraform Enterprise

    Se precisar de uma gestão de alterações completa com o Terraform na sua organização, use o Terraform Cloud ou o Terraform Enterprise.

    O Terraform Cloud é uma aplicação de software como serviço (SaaS) que executa o Terraform num ambiente remoto estável e armazena de forma segura o estado e os segredos. O Terraform Cloud também se integra com a CLI do Terraform e liga-se a sistemas de controlo de versões (VCS) comuns, como o GitHub, o GitLab e o Bitbucket. Quando associa um espaço de trabalho do Terraform Cloud a um repositório de VCS, as novas consolidações e alterações podem acionar automaticamente planos do Terraform. O Terraform Cloud também oferece uma API, o que lhe permite integrá-lo em fluxos de trabalho existentes.

    O Terraform Enterprise permite-lhe configurar uma distribuição autoalojada do Terraform Cloud. Oferece limites de recursos personalizáveis e é ideal para organizações com requisitos rigorosos de segurança e conformidade.

    Para mais informações, consulte a página das edições do Terraform na documentação da Hashicorp.

  • Cloud Development Kit para Terraform

    Se quiser gerar infraestrutura com uma linguagem de programação de uso geral, em vez de usar a linguagem de configuração da Hashicorp (HCL), use o Cloud Development Kit for Terraform (CDKTF).

    O CDKTF permite-lhe configurar o Terraform através de uma linguagem de programação para definir e aprovisionar Google Cloud a infraestrutura, e permite-lhe usar a sua cadeia de ferramentas existente para processos como testes e gestão de dependências.

  • Pulumi

    O Pulumi é outra ferramenta que pode usar para aprovisionar infraestrutura através de linguagens de programação. Pode usar o Google Cloud fornecedor para o Pulumi para criar código de infraestrutura com linguagens de programação como TypeScript, Python, Go, C#, Java ou YAML.

  • Configure o controlador e o conetor de configuração

    Para gerir Google Cloud recursos através do Kubernetes, use o Config Controller e o Config Connector.

    O Config Controller e o Config Connector permitem-lhe configurar Google Cloud serviços e recursos através de ferramentas do Kubernetes. Pode usar ferramentas GitOps, como o Config Sync, e APIs Kubernetes, bem como configurar e usar primitivos de engenharia de plataformas, como webhooks de admissão e operadores.

    Para mais informações, consulte a vista geral do Config Controller e a vista geral do Config Connector.

  • Crossplane

    Outra opção para gerir Google Cloud recursos através do Kubernetes é usar o Crossplane.

    O Crossplane liga o seu cluster do Kubernetes a recursos externos que não são do Kubernetes e permite que as equipas de plataformas criem APIs Kubernetes personalizadas para consumir esses recursos. O Crossplane funciona como um controlador do Kubernetes para monitorizar o estado dos recursos externos e aplicar o estado. Com o Crossplane instalado num cluster do Kubernetes, os utilizadores comunicam apenas com o Kubernetes. O Crossplane gere a comunicação com recursos externos, como Google Cloud. Se algo modificar ou eliminar um recurso fora do Kubernetes, o Crossplane reverte a alteração ou recria o recurso eliminado.

    Para mais informações, consulte a documentação do Crossplane.

  • Ansible

    Se quiser automatizar o aprovisionamento, a gestão da configuração, a implementação de aplicações, a orquestração e outros processos de TI, use o Ansible. Para mais informações, consulte o artigo Ansible para Google Cloud.

O que se segue?