Создание контроллера данных с поддержкой Azure Arc с помощью средств Kubernetes
Контроллер данных управляет службами данных с поддержкой Azure Arc для кластера Kubernetes. В этой статье описывается, как использовать средства Kubernetes для создания контроллера данных.
Создание контроллера данных имеет следующие высокоуровневые шаги.
- Создание пространства имен и службы начальной загрузки
- Создание контроллера данных
Примечание.
Для простоты ниже предполагается, что вы являетесь администратором кластера Kubernetes. Для рабочих развертываний или более безопасных сред рекомендуется следовать рекомендациям по обеспечению безопасности с минимальными привилегиями при развертывании контроллера данных путем предоставления только определенных разрешений пользователям и учетным записям служб, участвующим в процессе развертывания.
Подробные инструкции см. в разделе "Управление службами данных с поддержкой Arc" с минимальными привилегиями .
Необходимые компоненты
Ознакомьтесь с разделом Планирование развертывания служб данных с поддержкой Azure Arc, чтобы получить общие сведения.
Чтобы создать контроллер данных с помощью средств Kubernetes, необходимо установить средства Kubernetes. В примерах в этой статье будет использоваться kubectl
, но аналогичные подходы можно использовать и для других средств Kubernetes, например панели мониторинга Kubernetes, oc
или helm
, если вы знакомы с этими средствами и YAML/JSON Kubernetes.
Создание пространства имен и службы начальной загрузки
Служба начальной загрузки обрабатывает входящие запросы для создания, редактирования и удаления пользовательских ресурсов, таких как контроллер данных.
Сохраните копию bootstrapper-unified.yaml и замените заполнитель {{NAMESPACE}}
во всех местах в файле нужным именем пространства имен, например: arc
Внимание
Файл шаблона bootstrapper-unified.yaml по умолчанию используется для извлечения образа контейнера начального загрузчика из реестра контейнеров Майкрософт (MCR). Если ваша среда не может напрямую получить доступ к реестру контейнеров Майкрософт, выполните следующие действия:
- Выполните действия по извлечению образов контейнеров из Microsoft Container Registry и отправки их в частный реестр контейнеров.
- Создайте секрет извлечения образа с именем
arc-private-registry
частного реестра контейнеров. - Измените URL-адрес изображения для образа начальной загрузки в файле bootstrap.yaml.
- Замените
arc-private-registry
файл bootstrap.yaml, если для секрета извлечения образа использовалось другое имя.
Выполните следующую команду, чтобы создать пространство имен и службу начальной загрузки с измененным файлом.
kubectl apply --namespace arc -f bootstrapper-unified.yaml
Убедитесь, что модуль начального загрузчика работает, с помощью следующей команды.
kubectl get pod --namespace arc -l app=bootstrapper
Если состояние не запущено, выполните команду несколько раз, пока не будет запущено состояние.
Создание контроллера данных
Теперь все готово для создания самого контроллера данных.
Сначала создайте локальную копию файла шаблона, чтобы можно было изменить некоторые параметры.
Создание метрик и панелей мониторинга журналов имен пользователей и паролей
В верхней части файла можно указать имя пользователя и пароль, который используется для проверки подлинности на панелях мониторинга метрик и журналов в качестве администратора. Выберите безопасный пароль и предоставьте к нему доступ только тем пользователям, которым необходимы эти права.
Секрет Kubernetes хранится в формате строки в кодировке Base64. Одна строка используется для имени пользователя, а другая — для пароля.
Можно воспользоваться онлайн-инструментом для шифрования требуемого имени пользователя и пароля в кодировке Base64 или использовать встроенные средства, работающие из интерфейса командной строки, в зависимости от платформы.
PowerShell
[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('<your string to encode here>'))
#Example
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('example'))
Linux/macOS
echo -n '<your string to encode here>' | base64
#Example
# echo -n 'example' | base64
Создание сертификатов для панелей мониторинга журналов и метрик
При необходимости можно создать SSL/TLS-сертификаты для журналов и панелей мониторинга метрик. Следуйте инструкциям по указанию сертификатов SSL/TLS во время развертывания собственных средств Kubernetes.
Изменение конфигурации контроллера данных
При необходимости измените конфигурацию контроллера данных:
ОБЯЗАТЕЛЬНО
- location: измените на расположение Azure, где будут храниться метаданные контроллера данных. Просмотрите список доступных регионов.
- resourceGroup: группа ресурсов Azure, в которой вы хотите создать ресурс Azure контроллера данных в Azure Resource Manager. Обычно эта группа ресурсов уже существует, но она не требуется до момента передачи данных в Azure.
- subscription: идентификатор GUID той подписки Azure, в которой вы хотите создать ресурсы Azure.
РЕКОМЕНДУЕТСЯ ПРОВЕРИТЬ И ПРИ НЕОБХОДИМОСТИ ИЗМЕНИТЬ ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ
- storage..className: класс хранения, используемый для файлов данных и журналов контроллера данных. Если вы не знаете доступные классы хранения в кластере Kubernetes, можно выполнить следующую команду:
kubectl get storageclass
. Значение по умолчанию —default
, что подразумевает наличие класса хранения с именемdefault
, а не то, что существует класс хранения, который является классом хранения по умолчанию. Примечание. Для желаемого класса хранения необходимо установить два параметра className — один для данных и один для журналов. - serviceType: измените тип службы на
NodePort
, если вы не используете LoadBalancer. - Безопасность: для платформы контейнеров Azure Red Hat OpenShift или Red Hat OpenShift замените параметры
security:
в файле YAML контроллера данных на приведенные ниже значения.
security:
allowDumps: false
allowNodeMetricsCollection: false
allowPodMetricsCollection: false
НЕОБЯЗАТЕЛЬНО
- name: имя по умолчанию контроллера данных —
arc
, но при желании его можно изменить. - displayName: задайте то же значение, что и в атрибуте name в верхней части файла.
- logsui-certificate-secret: имя секрета, созданного в кластере Kubernetes для сертификата пользовательского интерфейса журналов.
- metricsui-certificate-secret: имя секрета, созданного в кластере Kubernetes для сертификата пользовательского интерфейса метрик.
В следующем примере показан завершенный контроллер данных yaml.
apiVersion: v1
data:
password: <your base64 encoded password>
username: <your base64 encoded username>
kind: Secret
metadata:
name: metricsui-admin-secret
type: Opaque
---
apiVersion: v1
data:
password: <your base64 encoded password>
username: <your base64 encoded username>
kind: Secret
metadata:
name: logsui-admin-secret
type: Opaque
---
apiVersion: arcdata.microsoft.com/v5
kind: DataController
metadata:
name: arc-dc
spec:
credentials:
dockerRegistry: arc-private-registry # Create a registry secret named 'arc-private-registry' if you are going to pull from a private registry instead of MCR.
serviceAccount: sa-arc-controller
docker:
imagePullPolicy: Always
imageTag: v1.34.0_2024-10-08
registry: mcr.microsoft.com
repository: arcdata
infrastructure: other # Must be a value in the array [alibaba, aws, azure, gcp, onpremises, other]
security:
allowDumps: true # Set this to false if deploying on OpenShift
allowNodeMetricsCollection: true # Set this to false if deploying on OpenShift
allowPodMetricsCollection: true # Set this to false if deploying on OpenShift
services:
- name: controller
port: 30080
serviceType: LoadBalancer # Modify serviceType based on your Kubernetes environment
settings:
ElasticSearch:
vm.max_map_count: "-1"
azure:
connectionMode: indirect # Only indirect is supported for Kubernetes-native deployment for now.
location: eastus # Choose a different Azure location if you want
resourceGroup: <your resource group>
subscription: <your subscription GUID>
controller:
displayName: arc-dc
enableBilling: true
logs.rotation.days: "7"
logs.rotation.size: "5000"
storage:
data:
accessMode: ReadWriteOnce
className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
size: 15Gi
logs:
accessMode: ReadWriteOnce
className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
size: 10Gi
Сохраните измененный файл на локальном компьютере и выполните следующую команду, чтобы создать контроллер данных:
kubectl create --namespace arc -f <path to your data controller file>
#Example
kubectl create --namespace arc -f data-controller.yaml
Мониторинг состояния создания
Создание контроллера занимает несколько минут. Вы можете отслеживать ход выполнения этой операции в другом окне терминала с помощью следующих команд:
kubectl get datacontroller --namespace arc
kubectl get pods --namespace arc
Вы также можете проверить состояние создания или журналы любого конкретного модуля pod, выполнив команду, как показано ниже. Это особенно полезно для устранения неполадок.
kubectl describe pod/<pod name> --namespace arc
kubectl logs <pod name> --namespace arc
#Example:
#kubectl describe pod/control-2g7bl --namespace arc
#kubectl logs control-2g7b1 --namespace arc
Устранение неполадок при создании
Если при создании возникают какие-либо проблемы, ознакомьтесь с руководством по устранению неполадок.