Автор оригинала: 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, которая описывает инфраструктуру, которая существует вне кластера.
Рекомендуемое чтение
- Страница GitHub каталога сервисов имеет некоторую очень хорошую документацию внутри нее
- Azure имеет учебник, который показывает, как использовать Broker Open Service, чтобы получить сайт WordPress UP и запустить
- Сайт API Open Service Broker предоставляет более высокую информацию о том, как все это работает под капотом
- Lachlan Evenson имеет отличную серию учебных пособий по Куберату, включая услуга брокера
Оригинал: «https://www.codementor.io/@johnhamelink/azure-service-brokers-in-kubernetes-hmwlrssyl»