Как установить конвейеры Tekton в кластере служб Azure Kubernetes

Как установить конвейеры Tekton в кластере служб Azure Kubernetes

10 марта 2022 г.

В этой статье мы рассмотрим установку службы Azure Kubernetes (AKS) с интеграцией экземпляров контейнеров Azure в качестве виртуальных узлов. Кроме того, мы предоставим Tekton Pipelines и развернем образец приложения на виртуальном узле по запросу.


Служба Azure Kubernetes (AKS) — это управляемая служба Kubernetes в стиле Azure. Мастера Kubernetes управляются Azure, а вы управляете только рабочими узлами.


Экземпляры контейнеров Azure (ACI) — это управляемая служба Microsoft Azure, которая позволяет планировать использование контейнеров непосредственно в общедоступном облаке без использования виртуальных машин (ВМ). Мы интегрируем его в кластер AKS как виртуальный узел. Виртуальные узлы часто используются для масштабирования решений в AKS.


Виртуальные узлы — это сетевое соединение между кластером AKS и модулями, работающими в Azure Container Instances (ACI). Надстройка виртуальных узлов для AKS основана на проекте с открытым исходным кодом Virtual Kubelet.


Tekton Pipelines — это мощный проект CI/CD с открытым исходным кодом для Kubernetes, который позволяет тестировать, создавать и развертывать облачные провайдеры и локальные центры обработки данных. Древнегреческое существительное tektōn (τέκτων) является общим термином для ремесленника/ремесленника.


В этом руководстве мы будем использовать Azure Cloud Shell в качестве рабочей среды. Это хорошая бесплатная интерактивная оболочка, которая имеет общие инструменты Azure, предустановленные и сконфигурированные для использования с вашей учетной записью.


Предпосылки


  • Подписка Azure с доступом участника

Чтобы использовать Azure Container Instances, нам необходимо зарегистрировать службу Microsoft.ContainerInstance.


Убедитесь, что поставщик службы Microsoft.ContainerInstance зарегистрирован в вашей подписке, как показано в следующем примере.


``` ударить


список поставщиков az --query "[?содержит(пространство имен,'Microsoft.ContainerInstance')]" -o таблица


Microsoft.ContainerInstance должен иметь статус Registered. Если нет, зарегистрируйте его с помощью команды AZ CLI:


``` ударить


регистр поставщика az --namespace Microsoft.ContainerInstance


Подготовить ресурсы зависимостей


Группа ресурсов


Теперь, когда предварительные условия отсортированы, мы начнем с создания группы ресурсов. Каждый ресурс в Azure должен находиться в определенной группе ресурсов. В этом примере я собираюсь создать группу ресурсов tekton-lab в регионе westeurope.


``` ударить


az group create --name tekton-lab --location westeurope


Виртуальная сеть и подсети


В этой инструкции мы развернем кластер Azure Kubernetes с расширенной сетью (Azure CNI), поскольку виртуальные узлы не будут работать с * базовой * сетью AKS по умолчанию (kubenet).


Создадим виртуальную сеть tekton-lab-Vnet и подсеть myAKSSubnet с помощью команды az network:


``` ударить


сеть az vnet создать \


--resource-group тектон-лаборатория \


--name тектон-лаборатория-Vnet \


--address-prefixes 10.0.0.0/8 \


--имя-подсети myAKSSubnet \


--subnet-prefix 10.240.0.0/16


Теперь нам нужно выделить дополнительную подсеть для виртуальных узлов:


``` ударить


az сеть vnet подсеть создать \


--resource-group тектон-лаборатория \


--vnet-name tekton-lab-Vnet \


--name tekton-lab-VirtualNodeSubnet \


--address-prefixes 10.241.0.0/16


Субъект-служба


Мы вручную создадим субъект-службу и будем использовать его в качестве удостоверения нашего кластера AKS. Это позволит ему взаимодействовать с другими ресурсами Azure.


``` ударить


az ad sp create-for-rbac


:::Информация


Примечание. Если вы столкнетесь с ошибкой после запуска команды az ad sp в Cloud Shell, вам необходимо войти в систему с помощью az cli `az login и повторить команду.


ожидаемый результат:


``` ударить


"appId": "435be37-8310-f3d6-47af-e67c3184879",


"displayName": "azure-cli-2022-03-05-17-32-55",


"пароль": "Adkp1X38BLC31vmsEx7TV~k~bN.eLKT3T",


"арендатор": "1e2447db-4827-18fc--82f24e-84c3-0d00f"


Скопируйте appId и password. Мы будем использовать эти значения в следующих шагах.


Предоставьте AKS разрешения на использование виртуальной сети


Нам необходимо настроить правильные разрешения для принципа службы AKS для использования сетевых ресурсов. Для этого нам нужно получить идентификатор ресурса нашей сети:


``` ударить


az network vnet show --resource-group tekton-lab --name tekton-lab-Vnet --query id -o tsv


Ожидаемый результат:


/subscriptions/54a18e-db49-4300-afcc-01b049e24/resourceGroups/tekton-lab/providers/Microsoft.Network/virtualNetworks/tekton-lab-Vnet


Затем мы создадим назначение роли с помощью команды «az roleassignment create», чтобы позволить кластеру AKS использовать виртуальную сеть:


``` ударить


назначение роли az create --assignee 435be37-8310-f3d6-47af-e67c3184879 --scope /subscriptions/54a18e-db49-4300-afcc-01b049e24/resourceGroups/tekton-lab/providers/Microsoft.Network/virtualNetworks/tekton-lab- Vnet --role Участник


Создать кластер AKS


Получите идентификатор подсети, которую мы создали для кластера службы Azure Kubernetes.


``` ударить


az network vnet subnet show --resource-group tekton-lab --vnet-name tekton-lab-Vnet --name myAKSSubnet --query id -o tsv


Ожидаемый результат:


/subscriptions/54a1468e-db49-4300-afcc-01f8b0493e24/resourceGroups/tekton-lab/providers/Microsoft.Network/virtualNetworks/tekton-lab-Vnet/subnets/myAKSSubnet


Теперь мы установим AKS с помощью команды az aks create. Разгон кластера AKS займет несколько минут:


``` ударить


аз аксс создать \


--resource-group тектон-лаборатория \


--name myTektonAKSCluster \


--число узлов 1 \


--node-vm-size стандартный_b2s \


--генерировать-ssh-ключи \


--сетевой-плагин лазурь \


--service-cidr 10.0.0.0/16 \


--dns-сервис-ip 10.0.0.10 \


--docker-мост-адрес 172.17.0.1/16 \


--vnet-subnet-id /subscriptions/54a1468e-db49-4300-afcc-01f8b0493e24/resourceGroups/tekton-lab/providers/Microsoft.Network/virtualNetworks/tekton-lab-Vnet/subnets/myAKSSubnet \


--service-principal 435be37-8310-f3d6-47af-e67c3184879 \


--client-secret Adkp1X38BLC31vmsEx7TV~k~bN.eLKT3T


Для секрета клиента используйте <пароль> принципа обслуживания, который мы создали на предыдущих шагах.


Для принципала службы используйте принципа службы.


Для vnet-subnet-id используйте идентификатор подсети на предыдущем шаге.


Включить надстройку для виртуальных узлов


Мы будем использовать команду az aks enable-addons, чтобы включить виртуальные узлы и использовать созданную заранее подсеть tekton-lab-VirtualNodeSubnet:


``` ударить


аз акс включить-аддоны \


--resource-group тектон-лаборатория \


--name myTektonAKSCluster \


--addons виртуальный узел \


--subnet-name tekton-lab-VirtualNodeSubnet


Получить доступ к kubectl


Чтобы получить доступ к вновь созданному кластеру AKS с помощью kubectl, выполните следующую команду:


``` ударить


az aks get-credentials --resource-group tekton-lab --name myTektonAKSCluster


Ожидаемый результат: «Объединен «myTektonAKSCluster» как текущий контекст в /home/viachaslau/.kube/config».


Проверить виртуальный узел


Чтобы проверить подключение к вашему кластеру и доступность виртуального узла ACI, используйте команду kubectl get, чтобы получить список узлов кластера.


```javascript


kubectl получить узлы


Вы должны увидеть готовые виртуальные узлы Azure Container Instances!



Тектон


Давайте установим последнюю версию Tekton с помощью следующей команды:


``` ударить


kubectl применить --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml


Вы можете проверить ход установки с помощью команды get pods:


```javascript


kubectl получить pods --namespace tekton-pipelines



Теперь, когда Tekton запущен и работает, давайте добавим Tekton Dashboard. Это приятный веб-интерфейс для Tekton Pipelines.


``` ударить


kubectl применить --filename https://github.com/tektoncd/dashboard/releases/latest/download/tekton-dashboard-release.yaml


Панель управления Tekton


По умолчанию доступ к Tekton Dashboard осуществляется через службу типа «кластер IP». Чтобы быстро получить веб-доступ из Cloud Shell, мы можем настроить переадресацию портов с помощью Tekton Dashboard:


``` ударить


kubectl --namespace tekton-pipelines port-forward svc/tekton-dashboard 9097:9097


Получите доступ к Tekton Dashboard, нажав «Веб-предварительный просмотр» в Cloud Shell, а затем укажите порт 9097


Добро пожаловать в Tekton Dashboard!


Панель управления Tekton


Панель управления Tekton имеет крутой темный режим (настраивается в настройках)


Тектон задача


Давайте создадим пример задачи Tekton. «Задача» — это серия «Шагов», которые вы определяете в определенном порядке выполнения как часть вашего конвейера. Задача имеет входы и может производить выходы. «Задача» выполняется как под в вашем кластере Kubernetes.


Создадим файл tekton-task.yml следующего содержания:


``` ударить


Версия API: tekton.dev/v1beta1


вид: задача


метаданные:


имя: привет


спецификация:


шаги:


  • имя: привет

изображение: убунту


команда:


  • эхо

аргументы:


  • "Привет мир!"

А затем примените этот файл с помощью команды kubectl apply:


``` ударить


kubectl применить -f tekton-task.yml


Если вы перейдете в раздел «Задачи» в Tekton Dashboard, вы увидите, что появилась задача «hello»:



Вот YAML-конфигурация задачи «hello»:



Чтобы запускать задачи конкретно на виртуальном узле, нам нужно избавиться от его порока по умолчанию. Чтобы получить сведения о вашей ноде, используйте команду kubectl описать:


``` ударить


kubectl describe node virtual-node-aci-linux



Для удаления порчи необходимо применить ту же самую порчу, но со знаком «-»:


``` ударить


kubectl taint nodes virtual-node-aci-linux virtual-kubelet.io/provider=azure:NoSchedule-


Ожидаемый результат: node/virtual-node-aci-linux untainted


Чтобы перепроверить, что не осталось испорченного, вы можете снова описать узел:



Теперь, когда taints отсортированы, мы можем создать TaskRun для этой задачи с селектором узлов, настроенным в пользовательском интерфейсе. Таким образом мы обеспечим выполнение задачи Tekton в экземплярах контейнеров Azure.



:::предупреждение


Если вы столкнулись с какими-либо странными проблемами с вашими конвейерами, вы можете перепроверить версии Tekton Pipelines и Tekton Dashboard в [матрице совместимости] (https://github.com/tektoncd/dashboard#what-version-should-i-use). ) и выбрать не последнюю версию


Перейдите в раздел TaskRuns в левом меню, и вы увидите, что «hello» TaskRun успешно выполнен:


Вот статус успешного TaskRun



Резюме: кластеры AKS с интеграцией контейнеров Azure


В этом руководстве мы создали кластер AKS с интеграцией экземпляров контейнеров Azure в качестве виртуальных узлов с соответствующими зависимостями. Мы успешно установили Tekton Pipelines и Tekton Dashboard в кластере службы Azure Kubernetes. Наконец, мы смогли запланировать пример задачи Tekton на виртуальном узле по требованию.


Очистка


Вот что нужно сделать, чтобы очистить ресурсы, созданные в этом руководстве»


Удалить установку Tekton


``` ударить


kubectl удалить -f kubectl применить --filename https://github.com/tektoncd/dashboard/releases/latest/download/tekton-dashbo0


kubectl удалить --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml


Чтобы избавиться от ваших виртуальных узлов, вы можете отключить их с помощью команды az aks disable-addons.


``` ударить


az aks disable-addons --resource-group tekton-lab --name myTektonAKSCluster --addons виртуальный узел


Удалить группу ресурсов с помощью AKS:


``` ударить


группа az удалить --name tekton-lab --yes --no-wait



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE