Azure Arc 対応 Kubernetes クラスターを準備する
重要
Azure Arc によって実現されている Azure IoT Operations プレビューは、現在プレビュー段階です。 運用環境ではこのプレビュー ソフトウェアを使わないでください。
Azure IoT Operations の一般公開リリースが提供されたときには、新規インストールをデプロイすることが必要になります。 プレビュー インストールからのアップグレードはできません。
ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。
Azure Arc 対応 Kubernetes クラスターは、Azure IoT Operations Preview をデプロイするための前提条件です。 この記事では、Azure IoT Operations をデプロイする前にクラスターを準備する方法について説明します。 この記事には、Ubuntu と Windows の両方に関するガイダンスが含まれています。
この記事の手順では、セキュリティで保護された設定のデプロイのためにクラスターを準備します。これは、より時間がかかるものの実稼働可能なプロセスです。 Azure IoT Operations をすばやくデプロイし、テスト設定のみでサンプル ワークロードを実行する場合は、代わりに、「クイックスタート: K3s を使用して GitHub Codespaces で Azure IoT Operations プレビューを実行する」を参照してください。 テスト設定とセキュリティで保護された設定の詳細については、デプロイ詳細 > 機能の選択を参照してください。
前提条件
Microsoft は Windows のデプロイ環境では Azure Kubernetes Service (AKS) Edge Essentials をサポートし、Ubuntu のデプロイ環境では K3s をサポートします。 テストおよび検証済みの特定のハードウェアとソフトウェアの組み合わせの一覧については、「検証済み環境」を参照してください。
Azure IoT Operations をマルチノード ソリューションにデプロイする場合は、Ubuntu で K3s を使用します。
Azure Arc 対応 Kubernetes クラスターを準備するには、以下が必要です。
Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料でアカウントを 1 つ作成してください。
開発マシンにインストールされている Azure CLI バージョン 2.64.0 以降。
az --version
を使用してバージョンを確認し、必要に応じてaz upgrade
を使用して更新します。 詳細については、Azure CLIのインストール方法に関するページを参照してください。以下の Azure CLI 用の拡張機能の最新バージョン:
az extension add --upgrade --name azure-iot-ops az extension add --upgrade --name connectedk8s
システム要件を満たすハードウェア:
- Azure IoT Operations 用に少なくとも 16 GB の 使用可能な RAM と 8 個の使用可能な vCPU がマシンに確保されていることを確認します。
- Azure Arc 対応 Kubernetes システム要件。
- K3s の要件。
フォールト トレランスが有効になっているマルチノード クラスターに Azure IoT Operations をデプロイする場合は、「エッジ ボリューム用に Linux を準備する」のハードウェアとストレージの要件を確認してください。
クラスターを作成して Arc 対応にする
このセクションでは、Linux および Windows 上の検証済み環境でクラスターを作成する手順について説明します。
Ubuntu 上で K3s Kubernetes クラスターを準備するには:
K3s クイックスタート ガイドの手順に従って K3s をインストールします。
kubectl が K3s の一部としてインストールされていることを確認します。 そうでない場合は、手順に従って Linux に kubectl をインストールします。
kubectl version --client
手順に従って Helm をインストールします。
.kube/config
に K3s 構成 yaml ファイルを作成します。mkdir ~/.kube sudo KUBECONFIG=~/.kube/config:/etc/rancher/k3s/k3s.yaml kubectl config view --flatten > ~/.kube/merged mv ~/.kube/merged ~/.kube/config chmod 0600 ~/.kube/config export KUBECONFIG=~/.kube/config #switch to k3s context kubectl config use-context default sudo chmod 644 /etc/rancher/k3s/k3s.yaml
次のコマンドを実行して、ユーザー ウォッチ/インスタンスの制限を増やします。
echo fs.inotify.max_user_instances=8192 | sudo tee -a /etc/sysctl.conf echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf sudo sysctl -p
パフォーマンスを向上させるために、ファイル記述子の制限を増やします。
echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf sudo sysctl -p
Azure コンテナー ストレージ用にマルチノード クラスターを構成する
少なくとも 3 つのノードを持つマルチノード クラスターでは、Azure IoT Operations のデプロイ時に Azure Arc で有効化された Azure コンテナー ストレージを使用してストレージのフォールト トレランスを有効化するオプションがあります。
デプロイ中にフォールト トレランスを有効にする場合は、「マルチノード Ubuntu クラスターを使用して Linux をエッジ ボリューム用に準備する」の手順に従ってクラスターを構成します。
クラスターを Arc 対応にする
クラスターを Azure Arc に接続して、クラスターをリモートで管理できるようにします。
Kubernetes クラスターをデプロイしたマシン上で、Azure CLI を使ってサインインします。
az login
任意の時点で "リソースにアクセスするにはデバイスを管理対象にする必要があります" というエラーが表示された場合、
az login
を再度実行し、ブラウザーに対話式で確実にサインインします。サインインすると、Azure CLI にすべてのサブスクリプションが表示され、既定のサブスクリプションにはアスタリスク
*
が表示されます。 既定のサブスクリプションで続行するには、Enter
を選択します。 それ以外の場合は、使用する Azure サブスクリプションの番号を入力します。サブスクリプションに必要なリソース プロバイダーを登録します。
Note
この手順は、サブスクリプションごとに 1 回だけ実行する必要があります。 リソース プロバイダーを登録するには、サブスクリプションの共同作成者および所有者のロール内に含まれる、
/register/action
操作を行うためのアクセス許可が必要です。 詳細については、「Azure リソース プロバイダーと種類」を参照してください。az provider register -n "Microsoft.ExtendedLocation" az provider register -n "Microsoft.Kubernetes" az provider register -n "Microsoft.KubernetesConfiguration" az provider register -n "Microsoft.IoTOperations" az provider register -n "Microsoft.DeviceRegistry" az provider register -n "Microsoft.SecretSyncController"
az group create コマンドを使用して、Azure サブスクリプションにリソース グループを作成し、すべてのリソースを保存します。
現在サポートされているすべての Azure リージョンの一覧については、「サポートされているリージョン」を参照してください。
az group create --location <REGION> --resource-group <RESOURCE_GROUP> --subscription <SUBSCRIPTION_ID>
az connectedk8s connect コマンドを使用して Kubernetes クラスターを Arc 対応にし、Azure リソース グループの一部として管理します。
az connectedk8s connect --name <CLUSTER_NAME> -l <REGION> --resource-group <RESOURCE_GROUP> --subscription <SUBSCRIPTION_ID> --enable-oidc-issuer --enable-workload-identity
クラスターの発行者の URL を取得します。
az connectedk8s show --resource-group <RESOURCE_GROUP> --name <CLUSTER_NAME> --query oidcIssuerProfile.issuerUrl --output tsv
このコマンドの出力を保存して、次の手順で使用します。
K3s 構成ファイルを作成します。
sudo nano /etc/rancher/k3s/config.yaml
config.yaml
ファイルに次の内容を追加し、<SERVICE_ACCOUNT_ISSUER>
プレースホルダーをクラスターの発行者の URL で置き換えます。kube-apiserver-arg: - service-account-issuer=<SERVICE_ACCOUNT_ISSUER> - service-account-max-token-expiration=24h
ファイルを保存し、nano エディターを終了します。
テナント内で Azure Arc サービスが使用する Microsoft Entra ID アプリケーションの
objectId
を取得し、環境変数として保存します。 GUID 値を変更せずに、記述されたとおりに次のコマンドを実行します。export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
az connectedk8s enable-features コマンドを使用して、クラスターでカスタムの場所のサポートを有効にします。 このコマンドは、Azure Arc サービスが使う Microsoft Entra ID アプリケーションの
objectId
を使います。 Kubernetes クラスターをデプロイしたマシン上で次のコマンドを実行します。az connectedk8s enable-features -n <CLUSTER_NAME> -g <RESOURCE_GROUP> --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
K3s を再起動します。
systemctl restart k3s
クラスターを確認する
クラスターが Azure IoT Operations デプロイの準備ができていることを確認するために、Azure CLI 用の Azure IoT Operations 拡張機能で verify-host ヘルパー コマンドを使用できます。 クラスター ホストで実行すると、このヘルパー コマンドで Azure Resource Manager および Microsoft Container Registry エンドポイントへの接続が確認されます。
az iot ops verify-host
詳細な構成
この時点で、Azure Arc 対応 Kubernetes クラスターがある場合、それに Azure IoT Operations をデプロイする前に、高度なシナリオに合わせたクラスターの構成が必要になる可能性があります。
- クラスターで監視機能を有効にする場合は、「監視リソースをデプロイとログの設定」の手順に従って行います。
- クラスターで独自の証明書発行者を構成する場合は、「証明書の管理」 > 「独自の発行者を使用する」の手順に従って行います。
次のステップ
Azure Arc 対応 Kubernetes クラスターが作成されたので、Azure IoT Operations をデプロイできます。