Развертывание Управляемый экземпляр SQL в Azure Arc с помощью средств Kubernetes
В этой статье показано, как развернуть Управляемый экземпляр SQL Azure для Azure Arc с помощью средств Kubernetes.
Необходимые компоненты
Необходимо уже создать контроллер данных.
Чтобы создать управляемый экземпляр SQL с помощью средств Kubernetes, необходимо их установить. В примерах в этой статье будет использоваться kubectl
, но аналогичные подходы можно использовать и для других средств Kubernetes, например панели мониторинга Kubernetes, oc
или helm
, если вы знакомы с этими средствами и YAML/JSON Kubernetes.
Обзор
Чтобы создать Управляемый экземпляр SQL, необходимо выполнить следующие действия.
- Создание секрета Kubernetes для безопасного хранения имени входа и пароля системного администратора
- Создание пользовательского ресурса Управляемый экземпляр 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. Понадобится также соответствующим образом изменить имя секрета. Например, если изменить имя управляемого экземпляра sql2
SQL, необходимо изменить имя секрета на sql1-login-secret
sql2-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
Устранение неполадок, связанных с развертыванием
Если возникли проблемы с развертыванием, ознакомьтесь с руководством по устранению неполадок.