Рубрики
Uncategorized

PULUMI — Кодирующая инфраструктура в типографии

Обзор Начало установить предпосылки Pulumi Cli Создайте новую настройку кластера EKS … Tagged с DevOps, IoT, AWS, TypeScript.

  • Обзор
  • Начиная
    • Установите 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»