Infraestrutura como código no Google Cloud

Infraestrutura como código (IaC, na sigla em inglês) é o processo de provisionar e gerenciar a infraestrutura de aplicativos de software usando código em vez de interfaces gráficas do usuário ou scripts de linha de comando.

O provisionamento da infraestrutura de aplicativos geralmente envolve a configuração e o gerenciamento de máquinas virtuais, conexões de banco de dados, armazenamento e outros elementos de infraestrutura. O gerenciamento manual dessa infraestrutura é demorado e propenso a erros, especialmente no gerenciamento de aplicativos em escala.

A IaC permite definir sua infraestrutura com arquivos de configuração, o que permite criar, alterar e gerenciar sua infraestrutura de maneira segura e repetível. É possível definir configurações de recursos para controlar, reutilizar e compartilhar. A IaC permite especificar o estado desejado da infraestrutura. Em seguida, você pode implantar a mesma configuração várias vezes para criar ambientes de desenvolvimento, teste e produção reproduzíveis.

A IaC permite tratar o provisionamento e a configuração da infraestrutura da mesma maneira que o código do aplicativo. É possível armazenar sua lógica de configuração de provisionamento no controle de origem e aproveitar os pipelines de integração e implantação contínuas (CI/CD).

Benefícios de IaC

O uso da IaC para configurar e gerenciar a infraestrutura do aplicativo é uma prática recomendada para vários casos de uso comuns. O Google gerencia os sistemas com IaC e a estabeleceu como uma prática padrão internamente.

A IaC oferece os seguintes benefícios:

  • É possível definir a infraestrutura com base nos seus requisitos e reutilizar a mesma configuração para criar vários ambientes de maneira consistente.
  • Automatize a criação e o gerenciamento de seus recursos de nuvem, inclusive para ambientes de implantação e teste.
  • Trate as alterações de infraestrutura como trata as alterações nos aplicativos. Por exemplo, você pode garantir que as alterações na configuração sejam revisadas e validadas automaticamente. Gerenciar ambientes de produção usando processos controlados por mudanças usando a IaC é uma prática recomendada.
  • É possível manter um histórico de todas as alterações de configuração. As alterações podem ser auditadas e revertidas.
  • Você pode ter uma única fonte de verdade para sua infraestrutura em nuvem.

Ferramentas de IaC para o Google Cloud

O Google Cloud é totalmente integrado a muitas ferramentas de IaC. Escolha uma das ferramentas abaixo, dependendo do caso de uso:

  • Terraform

    Em geral, para configurar e gerenciar a infraestrutura do Google Cloud usando código, use o provedor do Terraform para o Google Cloud.

    O HashiCorp Terraform é uma ferramenta de IaC que permite definir recursos na nuvem e no local em arquivos de configuração legíveis por humanos que você pode controlar, reutilizar e compartilhar. Assim, é possível usar um fluxo de trabalho consistente para provisionar e gerenciar toda a infraestrutura durante todo o ciclo de vida. Para mais informações, consulte Visão geral do Terraform no Google Cloud.

  • Infrastructure Manager

    Se você quiser automatizar a implantação da configuração do Terraform, use o Infrastructure Manager (Infra Manager).

    O Infra Manager automatiza a implantação e o gerenciamento dos recursos de infraestrutura do Google Cloud usando o Terraform. O Infra Manager permite implantar programaticamente no Google Cloud, permitindo que você use esse serviço em vez de manter um conjunto de ferramentas diferente para trabalhar com o Terraform no Google Cloud. Para mais informações, consulte Visão geral do Infra Manager.

  • Terraform Cloud e Terraform Enterprise

    Se você precisar de um gerenciamento completo de mudanças com o Terraform em sua organização, use o Terraform Cloud ou o Terraform Enterprise.

    O Terraform Cloud é um aplicativo de software como serviço (SaaS) que executa o Terraform em um ambiente remoto e estável e armazena estados e secrets com segurança. Ele também se integra à CLI do Terraform e se conecta a sistemas de controle de versões (VCS, na sigla em inglês) comuns, como GitHub, GitLab e Bitbucket. Quando você conecta um espaço de trabalho do Terraform Cloud a um repositório do VCS, novas confirmações e alterações podem acionar automaticamente os planos do Terraform. O Terraform Cloud também oferece uma API, que permite integrá-lo a fluxos de trabalho existentes.

    O Terraform Enterprise permite configurar uma distribuição auto-hospedada do Terraform Cloud. Ele 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 Edições do Terraform na documentação da Hashicorp (em inglês).

  • Cloud Development Kit for Terraform

    Se você quiser gerar infraestrutura com uma linguagem de programação de uso geral em vez de usar a linguagem de configuração Hashicorp (HCL, na sigla em inglês), use o Cloud Development Kit para Terraform (CDKTF).

    O CDKTF (link em inglês) permite configurar o Terraform usando uma linguagem de programação para definir e provisionar a infraestrutura do Google Cloud, além de usar o conjunto de ferramentas atual para processos como testes e gerenciamento de dependências.

  • Pulumi

    Pulumi (link em inglês) é outra ferramenta que pode ser usada para provisionar infraestrutura usando linguagens de programação. O provedor do Google Cloud da Pulumi pode ser usado para criar o código de infraestrutura usando linguagens de programação como TypeScript, Python, Go, C#, Java ou YAML.

  • Config Controller e Config Connector

    Para gerenciar os recursos do Google Cloud pelo Kubernetes, use o Config Controller e o Config Connector.

    O Config Controller e o Config Connector permitem configurar serviços e recursos do Google Cloud usando ferramentas do Kubernetes. Use ferramentas do GitOps, como o Config Sync e as APIs do Kubernetes, além de configurar e usar primitivos de engenharia de plataforma, como webhooks e operadores de admissão.

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

  • Crossplane

    Outra opção para gerenciar os recursos do Google Cloud pelo Kubernetes é usando o Crossplane.

    O Crossplane conecta seu cluster do Kubernetes a recursos externos que não são do Kubernetes e permite que as equipes de plataforma criem APIs personalizadas do Kubernetes para consumir esses recursos. O Crossplane atua como um controlador do Kubernetes para observar o estado dos recursos externos e fornecer aplicação de estado. Quando o Crossplane está instalado em um cluster do Kubernetes, os usuários só se comunicam com o Kubernetes. O Crossplane gerencia a comunicação com recursos externos como o Google Cloud. Se algo modificar ou excluir um recurso fora do Kubernetes, o Crossplane reverterá a alteração ou recriará o recurso excluído.

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

  • Ansible

    Para automatizar o provisionamento, o gerenciamento de configurações, a implantação de aplicativos, a orquestração e outros processos de TI, use o Ansible. Para mais informações, consulte Ansible para Google Cloud.

A seguir