Поделиться через


Создание контроллера данных с поддержкой Azure Arc с помощью средств Kubernetes

Контроллер данных управляет службами данных с поддержкой Azure Arc для кластера Kubernetes. В этой статье описывается, как использовать средства Kubernetes для создания контроллера данных.

Создание контроллера данных имеет следующие высокоуровневые шаги.

  1. Создание пространства имен и службы начальной загрузки
  2. Создание контроллера данных

Примечание.

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

Подробные инструкции см. в разделе "Управление службами данных с поддержкой Arc" с минимальными привилегиями .

Необходимые компоненты

Ознакомьтесь с разделом Планирование развертывания служб данных с поддержкой Azure Arc, чтобы получить общие сведения.

Чтобы создать контроллер данных с помощью средств Kubernetes, необходимо установить средства Kubernetes. В примерах в этой статье будет использоваться kubectl, но аналогичные подходы можно использовать и для других средств Kubernetes, например панели мониторинга Kubernetes, oc или helm, если вы знакомы с этими средствами и YAML/JSON Kubernetes.

Установка средства kubectl

Создание пространства имен и службы начальной загрузки

Служба начальной загрузки обрабатывает входящие запросы для создания, редактирования и удаления пользовательских ресурсов, таких как контроллер данных.

Сохраните копию bootstrapper-unified.yaml и замените заполнитель {{NAMESPACE}} во всех местах в файле нужным именем пространства имен, например: arc

Внимание

Файл шаблона bootstrapper-unified.yaml по умолчанию используется для извлечения образа контейнера начального загрузчика из реестра контейнеров Майкрософт (MCR). Если ваша среда не может напрямую получить доступ к реестру контейнеров Майкрософт, выполните следующие действия:

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

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

Устранение неполадок при создании

Если при создании возникают какие-либо проблемы, ознакомьтесь с руководством по устранению неполадок.