- Обзор
- Начиная
- Установите Pulumi Cli
- Предварительные условия
- Создайте новый кластер EKS
- Настройка контроллера Nginx Ingress
- Развернуть узел-красный в кластере
- Мысли и заключение
Обзор
Я собираюсь поделиться своими первоначальными мыслями и впечатлениями о Pulumi на кодирующей инфраструктуре с использованием TypeScript. Я недавно кодировал инфраструктуру AWS EKS с использованием Terraform. Мне очень нравится Terraform, как это помогает в здании, изменении и инфраструктуре выпуска версий и ее мобильности. Без сомнения, это отличный инструмент, но я изучаю другие варианты, включая AWS CDK которые более удобны для кода на моем любимом языке (JavaScript/TypeScript) вместо YAML или DSLS (специфичный язык доменов) и кодирование инфраструктуры с несколькими облаками.
Я сталкиваюсь с Pulumi — Инструмент для кодирования инфраструктуры с использованием TypeScript. SDK Pulumi полностью с открытым исходным кодом и расширяется, что позволяет вам участвовать в богатой экосистеме библиотек, которые облегчают общие задачи, от контейнеров до сервера до инфраструктуры и всего, что между ними.
В этом посте давайте пройдемся по работе с Pulumi и создадим инфраструктуру AWS EKS и развернете программирование на основе Node-Red-Flow для Интернета вещей (IoT) в кластере Kubernetes.
Начиная
Установите Pulumi Cli
Чтобы начать, вы установите Pulumi CLI инструмент. Если вы используете MacOS, вы можете использовать Homebrew для его установки.
$ brew install pulumi
Если вы хотите установить его в Linux, запустите скрипт ниже для установки.
$ curl -fsSL https://get.pulumi.com | sh
Или запустите приведенный ниже скрипт в CMD, чтобы установить его в Windows.
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; iex ((New-Object System.Net.WebClient).DownloadString('https://get.pulumi.com/install.ps1'))" && SET "PATH=%PATH%;%USERPROFILE%\.pulumi\bin"
После установки распечатайте версию Pulumi, чтобы проверить все в рабочем состоянии, запустив Pulumi CLI:
$ pulumi version
Предварительные условия
Установите другие предпосылки для создания AWS EKS и разработки инфраструктуры с помощью TypeScript.
- Установить Nodejs (10.x или позже)
- Установить npm — Диспетчер пакетов Nodejs
- Установить и настроить AWS CLI
- Установить AWS IAM Authentiator для Kubernetes
Пример кода, используемый в этом сообщении в блоге, находится в этом репо:
ksivamuthu/eks-pulumi-demo
AWS EKS и Node Red Развертывание с использованием пулуми — TypeScript
Оглавление
Обзор
Я собираюсь поделиться своими первоначальными мыслями и впечатлениями о Pulumi на кодирующей инфраструктуре с использованием TypeScript. Я недавно кодировал инфраструктуру AWS EKS с использованием Terraform. Мне очень нравится Terraform, как это помогает в здании, изменении и инфраструктуре выпуска версий и ее мобильности. Без сомнения, это отличный инструмент, но я изучаю другие варианты, включая AWS CDK которые более удобны для кода на моем любимом языке (JavaScript/TypeScript) вместо YAML или DSLS (специфичный язык доменов) и кодирование инфраструктуры с несколькими облаками.
Я сталкиваюсь с Pulumi — Инструмент для кодирования инфраструктуры с использованием TypeScript. SDK Пулуми полностью открыт и расширяется …
Создайте новый кластер EKS
- Создайте пустой проект с
Pulumi New
и выберите шаблонAWS-типспист
Чтобы создать минимальную программу AWS TypeScript Pulumi.
$ pulumi new
- Установите обязательный пакет.
$ npm install --save @pulumi/eks @pulumi/kubernetes
- Добавьте приведенный ниже код в
index.ts
import * as pulumi from "@pulumi/pulumi"; import * as eks from "@pulumi/eks"; import * as awsx from "@pulumi/awsx"; import * as k8s from "@pulumi/kubernetes"; const name = "smart-iot"; const vpc = new awsx.ec2.Vpc("vpc", { subnets: [{ type: "public" }] }); const cluster = new eks.Cluster(name, { vpcId: vpc.id, subnetIds: vpc.publicSubnetIds, desiredCapacity: 2, minSize: 1, maxSize: 2, storageClasses: "gp2", deployDashboard: false, }); // Export the clusters' kubeconfig. export const kubeconfig = cluster.kubeconfig
Чтобы предварительно просмотреть и развернуть изменения, запустите
Pulumi Up
и выберите «Да. » Подкоманда UP показывает предварительный просмотр ресурсов, которые будут созданы, и подсказывают, следует ли продолжить развертывание.Чтобы получить доступ к вашему кластеру EKS с помощью Kubectl, нам нужно настроить файл KubeConfig и Скачать kubectl
$ pulumi stack output kubeconfig > kubeconfig $ export KUBECONFIG=`pwd`/kubeconfig $ kubectl version $ kubectl cluster-info $ kubectl get nodes
Теперь наш кластер EKS готов. Теперь давайте развернем контроллера Nginx-Engress для настройки и входа.
Настройка контроллера Nginx Ingress
Установить nginx-ingress
Хелум диаграмма для начала развертывания NGINX-ENGRESS на кластере Kubernetes с помощью диспетчера пакетов Helm. Просто добавьте параметры ресурса Helm диаграммы, используя поставщик Pulumi Kubernetes, указывающий на недавно предоставленную кластер EKS.
const resourceOptions: ComponentResourceOptions = { providers: { kubernetes: cluster.provider } }; const nginxIngressChartOpts = { repo: 'stable', chart: 'nginx-ingress' }; const nginxIngress = new k8s.helm.v2.Chart('nginx-ingress', nginxIngressChartOpts, resourceOptions);
Получите URL -адрес Ingress и экспортируйте его в выход Pulumi.
export const appUrl = nginxIngress.getResourceProperty('v1/Service', 'nginx-ingress-controller', 'status') .apply(status => status.loadBalancer.ingress[0].hostname);
Развернуть узел-красный в кластере
Node-Red-это инструмент программирования для объединения аппаратных устройств, API и онлайн-сервисов новыми и захватывающими способами. Он предоставляет редактор на основе браузера, который позволяет легко подключать потоки, используя полный диапазон узлов в палитре, которые можно развернуть в время выполнения за один клик.
Диаграмма Helm-Red Helm (не поддерживается Node-Red) доступна в стабильном репозитории Helm.
const chartOpts = { repo: 'stable', chart: 'node-red', values: { config: { timezone: 'America/New_York' }, ingress: { enabled: true, hosts: ['*.elb.amazonaws.com'] } } }; const nodeRed = new k8s.helm.v2.Chart('node-red', chartOpts, resourceOptions);
Чтобы предварительно просмотреть и развернуть обновленные изменения, запустите Pulumi Up
и выберите «Да. » Подкоманда UP показывает предварительный просмотр созданных ресурсов.
Получите URL-адрес приложения Node-Red, используя команду вывода стека Pulumi.
$ pulumi stack output appUrl
Вы можете перейти к URL-адресу приложения, чтобы увидеть приложение Node-Red, работающее в кластере Kubernetes.
Мысли и заключение
И это общий код для создания кластера EKS, настройки контроллера входа и приложения Node-Red в кластере EKS. Основной подъем кластера EKS волшебным образом выполняется на @pulumi/eks
и @pulumi/awsx
ПУЛУМИ ПЕРЕВОЧКИ ДЛЯ AWS. Как и в Terraform, Pulumi также поддерживает местные и удаленные бэкэнды для хранения вашего Государство Анкет Наконец, вы собираетесь кодировать инфраструктуру на своем любимом языке, это потрясающе.
Вы должны попробовать Pulumi, построить свою инфраструктуру с помощью TypeScript/JavaScript.
Оригинал: «https://dev.to/ksivamuthu/pulumi-coding-infrastructure-in-typescript-54cf»