Рубрики
Uncategorized

Брокеры Azure Service в Кубернетах

Узнайте, как использовать API Broker Service Broker для развертывания облачных ресурсов изнутри Kubernetes.

Автор оригинала: John Hamelink.

Вперед

Вы хотите использовать кластер Kubernetes, но вы не готовы разместить ваши данные внутри него, чтобы начать с (возможно, вы нервничаете по терям данных — очень понятно)? В этой статье я стремлюсь убедить вас, что вы можете наслаждаться использованием Kubernetes, полагаясь на пробовные и протестированные продукты для хранения данных.

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

Сервисные брокеры все еще входят в инкубатор Kubernetes. » Это означает, что Kubernetes не считает сервисными брокерами на 100% готов к производству. На практике, однако, я нашел сервисные брокеры, бегающие внутри лазурной работы очень хорошо, но ваш пробег может варьироваться! Всегда осуществляйте лучшие практики, проверяя свою работу в промежуточной среде, прежде чем содействовать добычению и изучению того, как система работает более подробно, чем именно то, что я кратко известел в этой статье.

Пусть здравый смысл преобладает!

Контекст

Кубернаны Является ли одним из тех проектов, которые, по-видимому, поглотите обязанности многих других инструментов при добавлении дополнительной стоимости. Если у вас еще не было возможности построить кластер Kubernetes и играть вокруг, я бы побудил вас сделать это, прежде чем пытаться из этой статьи, поскольку она предполагает, что у вас есть базовое понимание Кубернеты , Хелм и Azure Cloud Отказ

Используя Broker Service Broker, мы собираемся использовать удивительное свойство Kubernetes, которое является фундаментальной для его дизайна и позволяет быстро развивать новые функции: способность третьих лиц определить Пользовательские определения ресурсов Отказ

ОТКРЫТЬ СЕРВИС БРОКЕР Это проект, который «позволяет разработчикам, ISV и поставщикам SaaS единым, простом и элегантным способом доставлять услуги приложениям, работающим в облачных нативных платформах, таких как: Cloud Country, OpenShift и Kubernetes. Проект включает в себя отдельные лица из Fujitsu, Google, IBM, Pivotal, Redhat и Sap. «

На простом английском брокер Open Service использует пользовательские определения ресурсов для обеспечения общего способа определить ресурсы, которые вы хотите раскрутить снаружи кластер Kubernetes, но вы можете определить требование внутри Кубернеты. Поставщики облаков могут предоставлять адаптеры, которые позволяют пользователю отображать эти ресурсы Kubernetes для облачных ресурсов, которые управляются вашим облачным провайдером. В этой статье мы собираемся использовать Azure в качестве нашего поставщика облака.

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

Настраивать

Первое, что нам нужно, это Azure Account. Вы можете зарегистрироваться Azure.com Отказ Как только у вас есть учетная запись, загрузите, установите и войдите в систему с помощью Инструмент Azure CLI Отказ

Вы также захотите обеспечить kubectl , Хелм , JQ и SVCAT также установлены.

Сверяние кластера

Второе, что нам нужно сделать, это создать кластер Kubernetes. Мы можем сделать это легко благодаря Azure Kubernetes Service (AKS) с командой Az:

# Enable Azure AKS in the Azure CLI
az provider register -n Microsoft.ContainerService

# Create an Azure ResourceGroup
az group create --name k8s

# Build an AKS cluster with kubernetes version 1.8.6
az aks create \
  --resource-group k8s \
  --name k8s \
  --node-count 3 \
  --kubernetes-version 1.8.6 \
  --generate-ssh-keys

Пойдет некоторое время для подъема Kubernetes Cluster, так как Azure должен уйти и построить довольно несколько компонентов, которые составляют кластер Aks. Вы можете посмотреть, как это произойдет, работает Смотреть список AZ AKS , который должен содержать информацию о состоянии кластера AKS. Вы также можете запустить AZ AKS SHOW -N K8S -G K8S | репутация K8s |. awk '{print $ 5}' чтобы увидеть текущее состояние предоставления.

Как только кластер работает и работает, пришло время установить учетные данные на свой компьютер, чтобы вы могли взаимодействовать с Kubernetes через Kubectl, Helm et al. Это снова очень легко благодаря CLI Azure:

az aks get-credentials \
  --resource-group k8s \
  --name k8s

Далее вы должны дождаться, пока узлы Kubernetes могут быть доступны. Вы можете запустить Смотреть Kubectl Получить узлы смотреть за узлы, когда они придумывают.

Настройка руля

После того, как у нас есть кластер Kubernetes с доступными узлами, мы можем сделать наше первое развертывание: мы разверним руль на кластер!

helm init

HELM установит свой сервер и Thilder, на ваш кластер. Thilder используется Helm для управления выпусками ваших хелм-диаграмм.

Создание руководителя услуг для RBAC

RBAC , в противном случае, известный как «контроль доступа на основе ролей», — это способ для обеспечения изоляции между вашими ресурсами, вроде брандмауэра. Azure и Kubernetes используют RBAC, но в этом контексте мы говорим о принципах услуг Azure RBAC.

В Azure, A Объект службы Используется для предоставления программного обеспечения доступа к ресурсам Azure (поэтому мы можем вращать ресурсы вверх и вниз!).

# Build a RBAC-powered service principal
RBAC="$(az ad sp create-for-rbac -o json)"

# Get the Subscription ID for the Azure Account
AZURE_SUBSCRIPTION_ID="$(az account show --query id --out tsv)"

# Get the Tenant ID, Client ID, Client Secret and Service Principal Name from Azure.
AZURE_TENANT_ID="$(echo ${RBAC} | jq -r .tenant)"
AZURE_CLIENT_ID="$(echo ${RBAC} | jq -r .appId)"
AZURE_CLIENT_SECRET="$(echo ${RBAC} | jq -r .password)"
AZURE_SP_NAME="$(echo ${RBAC} | jq -r .name)"

Установка каталога сервиса

Каталог услуг предоставляет интерфейс для поставщиков облаков для работы с. Требуется, чтобы мы тогда можем добавить сервисный брокер (в основном адаптер), который способен на самом деле общаться с вашей учетной записью Azure и настроив ресурсы, которые мы определяем в нашей конфигурации Kubernetes.

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

helm repo add svc-cat https://svc-catalog-charts.storage.googleapis.com
helm install svc-cat/catalog \
  --name catalog \
  --namespace catalog \
  --set rbacEnable=false

Эта команда добавляет хранилище каталога службы HELM, а затем устанавливает каталог с помощью HELM. Мы отключаем RBA в Kubernetes, потому что Акс не позволяет RBAC в кластерах Kubernetes по умолчанию (Не быть путаницей с принципом обслуживания выше, что является компонентом Azure!).

Нам нужно дождаться каталога службы, чтобы прийти. Мы можем сделать это с Смотреть Kubectl Получить стручки Отказ

Установка брокера Azure Open Service

Теперь, когда у нас есть каталог сервисов, мы можем добавить Service Broker Azure, используя идентификаторы и секреты, которые мы приобрели ранее, когда мы построили руководитель обслуживания:

helm repo add azure https://kubernetescharts.blob.core.windows.net/azure
helm install azure/open-service-broker-azure \
  --name osba \
  --namespace osba \
  --set azure.subscriptionId=${AZURE_SUBSCRIPTION_ID} \
  --set azure.tenantId=${AZURE_TENANT_ID} \
  --set azure.clientId=${AZURE_CLIENT_ID} \
  --set azure.clientSecret=${AZURE_CLIENT_SECRET}

Пока Helm занят установкой брокера, мы можем использовать SVCAT Чтобы проверить статус брокера:

watch "svcat get broker osba | grep osba | awk '{ print $3 }'"

Установка ресурса

Если вы сделали это так далеко, это означает, что вам удалось настроить все, что вам нужно, чтобы начать вращаться в Azure Resources изнутри Кубера.

Давайте попробуем! Поскольку мы использовали HELM, и вы, вероятно, захотите использовать руль для конфигурации вашего развертывания, давайте раскрутим ресурсы с помощью Helm.

В этом руководстве я собираюсь раскрутить Postgres сервер. Для этого нам понадобится два компонента: экземпляр Postgres и Postgres.

Экземпляр определяет тип экземпляра Postgres для раскручивания, а также удобные дополнения, например, которые postgres расширений для установки одновременно. Связывание используется для обеспечения информации о подключении для других ресурсов Kubernetes для потребления.

Во-первых, давайте инициализируем новый проект HELM:

helm create myapp # Build a new helm project

Мы создадим новый файл внутри вновь созданного MyApp каталог называется Шаблоны/Service-Broker/Postgres-induction.yaml :

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceInstance
metadata:
  name: myapp-postgres
  namespace: myapp                                    # The namespace the instance is exposed within
spec:
  clusterServiceClassExternalName: azure-postgresqldb # The type of resource to provision (use 'svcat get classes' to find the one you want)
  clusterServicePlanExternalName: basic50             # The size/scale of the resource    (use 'svcat get plans' to find the one you want)
  parameters:
    location: westeurope                              # Which datacenter to use
    resourceGroup: k8s                                # Which resource group to put the resource in
    extensions:                                       # Which postgres extensions to install before booting
      - uuid-ossp
      - postgis

И мы создадим соответствующий файл для привязки называется Шаблоны/Сервис-Брокер/Postgres-Binding.yaml :

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceBinding
metadata:
  name: myapp-postgres-binding
  namespace: myapp            # The namespace the binding is exposed within
spec:
  instanceRef:
    name: myapp-postgres      # The name of the ServiceInstance to bind to
  secretName: myapp-postgres  # The name of the Secret which contains the connection info

Наконец, бегите Хелм установить И брокер Azure Open Service начнет строить ресурс для вас. Вы можете использовать SVCAT Чтобы получить статус экземпляра и привязки:

watch 'svcat get bindings -n myapp && svcat get instances -n myapp'

Подключение к ресурсу

Когда оба экземпляра и привязки готовы, вы сможете подключиться к экземпляру, как если бы экземпляр был внутри Kubernetes! Давайте дадим, мы будем?

Во-первых, давайте получим содержание секрета:

kubectl get secret myapp-postgres -o yaml

Вы увидите что-то вроде этого:

apiVersion: v1
data:
  database: eHF5MjdsM3pucQ==
  host: ZXhhbXBsZS5wb3N0Z3Jlcy5kYXRhYmFzZS5henVyZS5jb20=
  password: b0dFS3NSQTRTdzdXY2gw
  port: NTQzMg==
  username: YWJjZGVmZ2hpMUBhYjAxMjM0NS02NzhhLTFhMmItMTIzYS0xMjM0YWI1Y2Q2ZWY=
kind: Secret
metadata:
  creationTimestamp: 2018-03-15T20:21:42Z
  name: myapp-postgres
  namespace: production
  ownerReferences:
  - apiVersion: servicecatalog.k8s.io/v1beta1
    blockOwnerDeletion: true
    controller: true
    kind: ServiceBinding
    name: myapp-postgres-binding
    uid: 4cca876b-0c43-11e8-89f1-0a580af40202
  resourceVersion: "933662"
  selfLink: /api/v1/namespaces/myapp/secrets/myapp-postgres
  uid: 82b381b8-0c44-11e8-9582-0a58ac1f18d9
type: Opaque

Значение каждого произведения данных является кодировкой Base64. Вы можете получить реальное имя пользователя, пароль и хост по Base64 — декодирование значений.

Давайте использовать PSQL Docker Image для проверки соединения:

kubectl delete pod psql # Delete the psql pod if it already exists
kubectl run -it psql --image=governmentpaas/psql --restart=Never -- psql -h  -p  -U  

Когда вы видите текст, «Если вы не увидите командную строку, попробуйте нажать ввод, вставьте пароль для базы данных. Если все сработало хорошо, вы теперь должны быть подключены. Как только вы закончите, не забудьте снова удалить POD с Kubectl Удалить POD PSQL Отказ

Заключение

Kubernetes уже очень мощный инструмент, позволяющий вам построить масштабируемую, поддерживаемую инфраструктуру, как никогда раньше. Брокеры Open Service позволяют вам построить конфигурацию Kubernetes, которая описывает инфраструктуру, которая существует вне кластера.

Рекомендуемое чтение

  1. Страница GitHub каталога сервисов имеет некоторую очень хорошую документацию внутри нее
  2. Azure имеет учебник, который показывает, как использовать Broker Open Service, чтобы получить сайт WordPress UP и запустить
  3. Сайт API Open Service Broker предоставляет более высокую информацию о том, как все это работает под капотом
  4. Lachlan Evenson имеет отличную серию учебных пособий по Куберату, включая услуга брокера

Оригинал: «https://www.codementor.io/@johnhamelink/azure-service-brokers-in-kubernetes-hmwlrssyl»