【Облачные вычисления】Восходящая звезда Pulumi против современного короля Terraform

CI/CD облачные вычисления
【Облачные вычисления】Восходящая звезда Pulumi против современного короля Terraform

Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
Эта статья также участвует"Проект "Звезда раскопок"", чтобы выиграть творческие подарочные пакеты и бросить вызов творческим поощрениям.

Введение

Инструменты, позволяющие использовать инфраструктуру как код для управления несколькими облаками, включают:Terraform,Pulumiи т.д,Terraformболее популярны и широко используются. в настоящее время используетTerraformПри управлении инфраструктурой есть одна из самых больших болевых точек: «Синтаксис конфигурации слишком прост, что делает настройку громоздкой и требует дополнительного изучения.HasiCorpСозданный язык выраженийDSL-HCL". Как восходящая звезда, может быть, использоватьPulumiможет помочь нам решить эту проблему.

2. что такое пулуми

Pulumiэто удовлетворениеИнфраструктура как кодПлатформа идеологического автоматического управления, использующая Python/TypeScript/Go/Dotnet и многие другие распространенные языки разработки для написания декларативной конфигурации ресурсов, позволяет создавать/модифицировать/уничтожать различные облачные ресурсы одним щелчком мыши. Он работает вместе через загруженные интерфейсы командной строки, среды выполнения, библиотеки и управляемые службы, чтобы обеспечить надежный способ предоставления, обновления и управления облачной инфраструктурой. Следующий код демонстрирует использование программирования на языке Python для создания облачных ресурсов, независимо от того, является ли он удобным для разработчиков и легко читаемым.

import pulumi
import pulumi_aws as aws
​
size = 't2.micro'
ami = aws.get_ami(most_recent="true",
                  owners=["137112412989"],
                  filters=[{"name":"name","values":["amzn-ami-hvm-*"]}])
​
group = aws.ec2.SecurityGroup('webserver-secgrp',
    description='Enable HTTP access',
    ingress=[
        { 'protocol': 'tcp', 'from_port': 22, 'to_port': 22, 'cidr_blocks': ['0.0.0.0/0'] }
    ])
​
server = aws.ec2.Instance('webserver-www',
    instance_type=size,
    vpc_security_group_ids=[group.id], # reference security group from above
    ami=ami.id)
​
pulumi.export('publicIp', server.public_ip)
pulumi.export('publicHostName', server.public_dns)

3. Пулуми против Терраформа

3.1 Происхождение двух

PulumiиTerraformЕсть много общего, и все они удовлетворяют требованиям создания, развертывания и управления инфраструктурой в любом облаке путем написания кода. Любое облако включает в себя зарубежные AWS, Azure, GCP и, конечно же, отечественные облака, в том числе AliYun, TencentCloud, UCloud и так далее.

При этом оба вGitHubВерсия сообщества с открытым исходным кодом предоставляется выше, а соглашение об открытом исходном коде удовлетворяет условиям коммерческого использования.PulumiСтоитTerraform Providerразвитая на плече, она делает хитрую вещь, которая заключается в том, чтобы обеспечитьpulumi-tf-provider-boilerplateинструмент для переупаковки, этот инструмент действует какbridgeэффект.

3.2 Разница между ними

в соответствии сPulumiофициальное введение,PulumiиTerraformМежду ними есть существенные различия в языковой поддержке, управлении состоянием, поддержке провайдера и протоколах с открытым исходным кодом.

【Языковая поддержка】 ПулумиПоддерживаемые языки включают:

  • Python
  • TypeScript
  • JavaScript
  • Go
  • C#
  • F#
  • VB
  • ...

TerraformОфициально поддерживаемые языки включают только декларативный язык HCL, Json, если вы хотите поэкспериментироватьTerraform-cdkЕсли продукт засчитан, он также будет поддерживать:

  • TypeScript
  • Python
  • Java
  • C#
  • Go

Следующая картинка хорошо иллюстрирует разницу в языковой поддержке между ними.

[Статус, визуальное управление]

По сути, государственное управлениеterraformПользовательский опыт очень плохой, поскольку соответствующая функция не предусмотрена, клиенты могут найти решения только в сообществе с открытым исходным кодом. И дляpulumi, так как он реализован на разных языках разработки, очень удобно использовать различные базы данных для операций с данными в коде. в то же времяterraformПочти нет поддержки отображения состояния и визуального отображения во время развертывания, что приводит к ухудшению взаимодействия с пользователем. И дляpulumi, который четко поддерживает управление состоянием и визуальные операции и эффективно решает болевые точки пользователей.

Помимо упомянутого выше государственного управления,pulumiОн также выполняет настоящее шифрование частного контента в состоянии, что очень важно.

【Поддержка провайдера】

Также упоминалось выше,PulumiПоддерживается инструментом преобразованияterraformВсе провайдеры. в то же времяPulumiГлубокая поддержкаK8sОблачные технологии, такие как эти, поддерживают расширенные сценарии развертывания, которые Terraform не может реализовать. Это включает в себяPrometheus-based canaries,automatic Envoy sidecar injectionи Т. Д. После волны облачных вычислений облачные вычисления стали тенденцией, и можно четко признать, чтоPulumiГлубоко культивируется в облаке, вдохновляет стать следующим поколениемDevOpsЛидер инструментов.

【Соглашение об открытом исходном коде】

Terraform использует слабую общедоступную лицензию Mozilla с авторским левом 2.0. Вместо этого проект с открытым исходным кодом Pulumi использует разрешительную и удобную для бизнеса лицензию Apache License 2.0. Его содержимое с открытым исходным кодом включает в себя основной репозиторий Pulumi, всех поставщиков ресурсов Pulumi с открытым исходным кодом (например, собственный поставщик Azure), утилиты преобразования (например, tf2pulumi) и другие полезные проекты.

【Компоненты многократного использования】

Благодаря наличию настоящего языка мы можем создавать абстракции более высокого уровня. Использование других языков, таких как TypeScript, для построения абстракций и повторного использования модулей значительно сократило содержание текста по сравнению с использованием YAML.

[Лямбда не имеет сервисной функции]

Вы можете использовать лямбда-выражения для написания бессерверных функций на языке, с которым вы знакомы, без необходимости использовать одну строку YAML или других декларативных языков.

import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
​
const example = new aws.lambda.FunctionEventInvokeConfig("example", {
    functionName: aws_lambda_alias.example.function_name,
    destinationConfig: {
        onFailure: {
            destination: aws_sqs_queue.example.arn,
        },
        onSuccess: {
            destination: aws_sns_topic.example.arn,
        },
    },
});

Помимо того, что было упомянуто выше,PulumiРефакторинг переименования также поддерживается довольно хорошо, а также предоставляет механизм преобразования, который позволяет нам определять логику модификации для определений ресурсов в коде.

4. Резюме

Благодаря приведенному выше анализу и сравнению,pulumiС таким количеством выдающихся преимуществ, это наш неизбежный выбор?pulumiкак наш инструмент IAC. Это не обязательно правда! Сначала мы анализируем и сравниваем индекс популярности Google двух ключевых слов (10 октября 2021 г.), синяя кривая представляетterraform, красная кривая представляетПулуми.

图片.png

Результат очевиден,terraformКак продукт, который начал создавать экосистему в 2014 году, он лучше, чем продукт, запущенный в начале 2017 года.Pulumiимеет больше тепла.Pulumiэкологический коэффициентterraformЭто даже не близко. И терраформ может появиться в скором времени, когда придет время.PulumiЭто уменьшение размерности капитала. Так что выбирайтеPulumiК рассмотрению внимательно.

图片.png

а затем проанализируйтеGithubвнимание (10 октября 2021 г.), всегоterraformвнимание гораздо выше, чемPulumi, что также подтверждает Google Heat Index. Но и этот результат следует рассматривать диалектически, ведьPulumiКак восходящая звезда, с нынешним вниманием активность сообщества уже неплохая.

Между тем, с другой стороны,PulumiПредоставляет знакомый разработчикам ресурс описания кода, достаточно выразительный, но будет ли его сложно читать и отлаживать? Таким образом, Dev + Ops будет очень сложно разделить. Таким образом, организационная структура также будет скорректирована, а НИОКР, эксплуатация и техническое обслуживание будут интегрированы. Хорошо это изменение или плохо, зависит от того, как команда рассматривает его диалектически.