Compartilhar via


Pacotes de aplicativos nativos de nuvem

Dica

Esse conteúdo é um trecho do livro eletrônico, para Projetar os Aplicativos .NET nativos de nuvem para o Azure, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.

Cloud Native .NET apps for Azure eBook cover thumbnail.

Uma propriedade fundamental de aplicativos nativos de nuvem é que eles aproveitam os recursos da nuvem para acelerar o desenvolvimento. Esse design geralmente significa que um aplicativo completo usa diferentes tipos de tecnologias. Os aplicativos podem ser enviados em contêineres do Docker, alguns serviços podem usar o Azure Functions, enquanto outras partes podem ser executadas diretamente em máquinas virtuais alocadas em grandes servidores de metal com aceleração de GPU de hardware. Não há dois aplicativos nativos de nuvem iguais, portanto, tem sido difícil fornecer um único mecanismo para enviá-los.

Os contêineres do Docker podem ser executados no Kubernetes usando um Gráfico do Helm para implantação. O Azure Functions pode ser alocado usando modelos do Terraform. Por fim, as máquinas virtuais podem ser alocadas usando o Terraform, mas criadas usando o Ansible. Esta é uma grande variedade de tecnologias e não houve nenhuma maneira de empacotá-las todas juntas em um pacote razoável. Até agora.

Os CNABs (Pacotes de Aplicativos Nativos de Nuvem) são um esforço conjunto de muitas empresas de mente comunitária, como a Microsoft, a Docker e a HashiCorp, para desenvolver uma especificação para empacotar aplicativos distribuídos.

O esforço foi anunciado em dezembro de 2018, portanto, ainda há um pouco de trabalho a ser feito para expor o esforço à comunidade maior. No entanto, já há uma especificação aberta e uma implementação de referência conhecida como Duffle. Essa ferramenta, que foi escrita no Go, é um esforço conjunto entre o Docker e a Microsoft.

Os CNABs podem conter diferentes tipos de tecnologias de instalação. Esse aspecto permite que recursos como Gráficos do Helm, modelos do Terraform e Ansible Playbooks coexistam no mesmo pacote. Depois de criados, os pacotes são autossuficientes e portáteis, podendo ser instalados a partir de um pendrive. Os pacotes são assinados criptograficamente para garantir que sejam originados da parte que eles declaram.

O núcleo de um CNAB é um arquivo chamado bundle.json. Esse arquivo define o conteúdo do pacote, seja Terraform, imagens ou qualquer outra coisa. A Figura 11-9 define um CNAB que invoca algum Terraform. No entanto, observe que ele na verdade define uma imagem de invocação que é usada para invocar o Terraform. Quando empacotado, o arquivo do Docker localizado no diretório cnab é incorporado a uma imagem do Docker, que será incluída no pacote. Ter o Terraform instalado dentro de um contêiner do Docker no pacote significa que os usuários não precisam ter o Terraform instalado em seu computador para executar o agrupamento.

{
    "name": "terraform",
    "version": "0.1.0",
    "schemaVersion": "v1.0.0-WD",
    "parameters": {
        "backend": {
            "type": "boolean",
            "defaultValue": false,
            "destination": {
                "env": "TF_VAR_backend"
            }
        }
    },
    "invocationImages": [
        {
        "imageType": "docker",
        "image": "cnab/terraform:latest"
        }
    ],
    "credentials": {
        "tenant_id": {
            "env": "TF_VAR_tenant_id"
        },
        "client_id": {
            "env": "TF_VAR_client_id"
        },
        "client_secret": {
            "env": "TF_VAR_client_secret"
        },
        "subscription_id": {
            "env": "TF_VAR_subscription_id"
        },
        "ssh_authorized_key": {
            "env": "TF_VAR_ssh_authorized_key"
        }
    },
    "actions": {
        "status": {
            "modifies": true
        }
    }
}

Figura 10-18 – Um exemplo de arquivo Terraform

O bundle.json também define um conjunto de parâmetros que são passados para o Terraform. A parametrização do pacote permite a instalação em vários ambientes diferentes.

O formato CNAB também é flexível, permitindo que ele seja usado em qualquer nuvem. Ele pode até mesmo ser usado em soluções locais, como o OpenStack.

Decisões de DevOps

Há tantas ferramentas excelentes no espaço de DevOps nos dias de hoje e ainda mais livros e artigos fantásticos sobre como ter sucesso. Um livro ótimo para começar a jornada de DevOps é The Phoenix Project, que segue a transformação de uma empresa fictícia de NoOps para DevOps. Uma coisa é certa: o DevOps não é mais um "bom ter" ao implantar aplicativos nativos de nuvem complexos. Isso é um requisito que deve ser planejado e reunir recursos no início de qualquer projeto.

Referências