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


Развертывание Управляемый экземпляр SQL в Azure Arc с помощью средств Kubernetes

В этой статье показано, как развернуть Управляемый экземпляр SQL Azure для Azure Arc с помощью средств Kubernetes.

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

Необходимо уже создать контроллер данных.

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

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

Обзор

Чтобы создать Управляемый экземпляр SQL, необходимо выполнить следующие действия.

  1. Создание секрета Kubernetes для безопасного хранения имени входа и пароля системного администратора
  2. Создание пользовательского ресурса Управляемый экземпляр SQL на основе определения пользовательского SqlManagedInstance ресурса

Определите оба этих элемента в yaml-файле.

Создание YAML-файла

Используйте файл yaml шаблона в качестве отправной точки, чтобы создать собственный пользовательский управляемый экземпляр SQL yaml-файл. Загрузите этот файл на локальный компьютер и откройте его в текстовом редакторе. Используйте текстовый редактор, например VS Code , поддерживающий выделение синтаксиса и подкладку для файлов yaml.

Примечание.

Начиная с выпуска за февраль 2022 г. ReadWriteMany для резервного копирования необходимо указать класс хранилища с поддержкой RWX. Дополнительные сведения о режимах доступа. Если для резервных копий не указан класс хранилища, используется класс хранилища по умолчанию в Kubernetes. Если значение по умолчанию не поддерживает RWX, установка Управляемый экземпляр SQL может завершиться ошибкой.

Пример файла yaml

См. следующий пример yaml-файла:

apiVersion: v1
data:
  password: <your base64 encoded password>
  username: <your base64 encoded username>
kind: Secret
metadata:
  name: sql1-login-secret
type: Opaque
---
apiVersion: sql.arcdata.microsoft.com/v12
kind: SqlManagedInstance
metadata:
  name: sql1
  annotations:
    exampleannotation1: exampleannotationvalue1
    exampleannotation2: exampleannotationvalue2
  labels:
    examplelabel1: examplelabelvalue1
    examplelabel2: examplelabelvalue2
spec:
  dev: true #options: [true, false]
  licenseType: LicenseIncluded #options: [LicenseIncluded, BasePrice].  BasePrice is used for Azure Hybrid Benefits.
  tier: GeneralPurpose #options: [GeneralPurpose, BusinessCritical]
  security:
    adminLoginSecret: sql1-login-secret
  scheduling:
    default:
      resources:
        limits:
          cpu: "2"
          memory: 4Gi
        requests:
          cpu: "1"
          memory: 2Gi
  services:
    primary:
      type: LoadBalancer
  storage:
    #backups:
    #  volumes:
    #  - className: azurefile # Backup volumes require a ReadWriteMany (RWX) capable storage class
    #    size: 5Gi
    data:
      volumes:
      - className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
        size: 5Gi
    datalogs:
      volumes:
      - className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
        size: 5Gi
    logs:
      volumes:
      - className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
        size: 5Gi

Настройка имени для входа и пароля

Секрет Kubernetes хранится в формате строки в кодировке Base64. Одна строка используется для имени пользователя, а другая — для пароля. Вам потребуется выполнить шифрование имени для входа и пароля системного администратора в кодировке Base64 и поместить указать их вместо заполнителей data.password и data.username соответственно. Не используйте символы < и >, указанные в шаблоне.

Примечание.

Для оптимальной безопасности использование значения sa не допускается для входа. Обеспечьте соблюдение политики сложности паролей.

Вы можете использовать онлайн-средство для кодирования требуемого имени пользователя и пароля в 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

Настройка имени

Шаблон имеет значение sql1 атрибута имени. Это значение можно изменить, но оно должно содержать символы, которые соответствуют стандартам именования DNS. Понадобится также соответствующим образом изменить имя секрета. Например, если изменить имя управляемого экземпляра sql2SQL, необходимо изменить имя секрета на sql1-login-secretsql2-login-secret

Настройка требований к ресурсам

При необходимости можно изменить требования к ресурсам — запросы и ограничения на использование ОЗУ и ядер.

Примечание.

Дополнительные сведения см. в статье Управление ресурсами Kubernetes.

Требования к ограничениям и запросам ресурсов:

  • В целях выставления счетов обязательно нужно указать предельное количество ядер.
  • Остальные запросы и ограничения ресурсов являются необязательными.
  • Предельное и запрашиваемое количество ядер должно быть положительным целым числом (если оно указано).
  • Минимальное запрашиваемое количество ядер — не менее 1 (если оно указано).
  • Формат значения памяти соответствует нотации Kubernetes.
  • При указании требуется не менее 2 ГБ для запроса памяти.
  • В качестве общего руководства необходимо иметь 4 ГБ ОЗУ для каждого 1 ядра для рабочих вариантов использования.

Настройка типа службы

При необходимости тип службы можно изменить на NodePort. Будет назначен случайный номер порта.

Настройка хранилища

Классы хранения для хранилища можно настроить в соответствии с вашим окружением. Если вы не уверены, какие классы хранения доступны, выполните команду kubectl get storageclass , чтобы просмотреть их.

Шаблон имеет значение defaultпо умолчанию.

Например.

storage:
    data:
      volumes:
      - className: default 

В этом примере имеется класс хранилища с именем default , а не класс хранилища, используемый по умолчанию. При необходимости вы можете также изменить размер хранилища. Дополнительные сведения см. в статье о настройке хранилища.

Создание управляемого экземпляра SQL

Теперь, когда вы настроили YAML-файл управляемого экземпляра SQL, вы можете создать управляемый экземпляр SQL, выполнив следующую команду:

kubectl create -n <your target namespace> -f <path to your yaml file>

#Example
#kubectl create -n arc -f C:\arc-data-services\sqlmi.yaml

Мониторинг состояния создания

Создание управляемого экземпляра SQL займет несколько минут. Вы можете отслеживать ход выполнения этой операции в другом окне терминала с помощью следующих команд:

Примечание.

В приведенных ниже командах предполагается, что вы создали управляемый экземпляр SQL с именем sql1 arcи пространством имен Kubernetes. Если вы использовали другое имя пространства имен или управляемого экземпляра SQL, вы можете заменить arc их именами sqlmi .

kubectl get sqlmi/sql1 --namespace arc
kubectl get pods --namespace arc

Вы также можете проверить состояние создания любого конкретного модуля pod. Запустите kubectl describe pod .... Используйте эту команду для устранения неполадок. Например:

kubectl describe pod/<pod name> --namespace arc

#Example:
#kubectl describe pod/sql1-0 --namespace arc

Устранение неполадок, связанных с развертыванием

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

Подключение к Управляемый экземпляр SQL в Azure Arc