Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
Эта статья также участвует"Проект "Звезда раскопок"", чтобы выиграть творческие подарочные пакеты и бросить вызов творческим поощрениям.
Введение
Инструменты, позволяющие использовать инфраструктуру как код для управления несколькими облаками, включают: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, красная кривая представляетПулуми.
Результат очевиден,terraformКак продукт, который начал создавать экосистему в 2014 году, он лучше, чем продукт, запущенный в начале 2017 года.Pulumiимеет больше тепла.Pulumiэкологический коэффициентterraformЭто даже не близко. И терраформ может появиться в скором времени, когда придет время.PulumiЭто уменьшение размерности капитала. Так что выбирайтеPulumiК рассмотрению внимательно.
а затем проанализируйтеGithubвнимание (10 октября 2021 г.), всегоterraformвнимание гораздо выше, чемPulumi, что также подтверждает Google Heat Index. Но и этот результат следует рассматривать диалектически, ведьPulumiКак восходящая звезда, с нынешним вниманием активность сообщества уже неплохая.
Между тем, с другой стороны,PulumiПредоставляет знакомый разработчикам ресурс описания кода, достаточно выразительный, но будет ли его сложно читать и отлаживать? Таким образом, Dev + Ops будет очень сложно разделить. Таким образом, организационная структура также будет скорректирована, а НИОКР, эксплуатация и техническое обслуживание будут интегрированы. Хорошо это изменение или плохо, зависит от того, как команда рассматривает его диалектически.