Azure Arc 対応 Kubernetes クラスターを準備する
Azure Arc 対応 Kubernetes クラスターは、Azure IoT Operations をデプロイするための前提条件です。 この記事では、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 portal の左側にある [アクセス制御 (IAM)] を選択して、[マイ アクセスの表示] を選択します。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料でアカウントを 1 つ作成してください。
Azure リソース グループ。 リソース グループごとにサポートされている Azure IoT Operations インスタンスは 1 つのみです。 新しいリソース グループを作成するには、az group create コマンドを使用します。 現在サポートされているすべての Azure リージョンの一覧については、「サポートされているリージョン」を参照してください。
az group create --location <REGION> --resource-group <RESOURCE_GROUP> --subscription <SUBSCRIPTION_ID>
クラスター マシンにインストールされている Azure CLI バージョン 2.64.0 以降。
az --version
を使用してバージョンを確認し、必要に応じてaz upgrade
を使用して更新します。 詳細については、Azure CLIのインストール方法に関するページを参照してください。Azure CLI 用の connectedk8s 拡張機能の最新バージョン:
az extension add --upgrade --name connectedk8s
システム要件を満たすハードウェア:
フォールト トレランスが有効になっているマルチノード クラスターに Azure IoT Operations をデプロイする場合は、「エッジ ボリューム用に Linux を準備する」のハードウェアとストレージの要件を確認してください。
クラスターを作成して Arc 対応にする
このセクションでは、Linux および Windows 上の検証済み環境でクラスターを作成する手順について説明します。
Ubuntu 上で K3s Kubernetes クラスターを準備するには:
単一ノードまたはマルチノード K3s クラスターを作成します。 例については、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
クラスターを Arc 対応にする
クラスターを Azure Arc に接続して、クラスターをリモートで管理できるようにします。
Kubernetes クラスターを配置したマシンで、Azure サブスクリプションに必要なロールを持つ Microsoft Entra ユーザー アカウントを使用して 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 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 --disable-auto-upgrade
Azure IoT Operations が依存関係として使用する Azure Arc およびシステム Arc の拡張機能が予期せず更新されることを防ぐため、このコマンドでは自動アップグレードが無効になります。 代わりに、必要に応じてエージェントを手動でアップグレードします。
重要
環境でプロキシ サーバーまたは Azure Arc ゲートウェイを使用している場合は、プロキシ情報を使用して
az connectedk8s connect
コマンドを変更します。- 「送信プロキシ サーバーを使用して接続する」または Azure Arc ゲートウェイを使用して Kubernetes クラスターを Azure Arc にオンボードするに関する記事のいずれかの手順に従います。
az connectedk8s connect
コマンドの--proxy-skip-range
パラメーターに169.254.169.254
を追加します。 Azure デバイス レジストリは、このローカル エンドポイントを使用して、認可用のアクセス トークンを取得します。
Azure IoT Operations は、信頼された証明書を必要とするプロキシ サーバーをサポートしていません。
クラスターの発行者の 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 エディターを終了します。
カスタムの場所オブジェクト ID を取得し、それを OBJECT_ID 環境変数として保存して、Arc クラスターで Azure Arc サービスのカスタムの場所を有効にする準備をします。 コマンドを正常に実行するには、サービス プリンシパルではなく Microsoft Entra ユーザー アカウントを使用して Azure CLI にログインする必要があります。 GUID 値を変更せずに、記述されているとおりに次のコマンドを実行します。
export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
Note
"'custom-locations' アプリの oid をフェッチできません。 Proceeding without enabling the feature. 操作を完了するための特権が不十分です" というエラーを受け取った場合、カスタムの場所のオブジェクト ID を取得するために必要なアクセス許可がないサービス プリンシパルを使用している可能性があります。 前提条件を満たす Microsoft Entra ユーザー アカウントを使用して Azure CLI にログインします。
az connectedk8s enable-features コマンドを使用して、Arc クラスターでカスタムの場所フィーチャを有効にします。 このコマンドでは、前の手順で保存したOBJECT_ID環境変数を使用して、custom-locations-oid パラメーターの値を設定します。 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 コンテナー ストレージ用にマルチノード クラスターを構成する
少なくとも 3 つのノードを持つマルチノード クラスターでは、Azure IoT Operations のデプロイ時に Azure Arc で有効化された Azure コンテナー ストレージを使用してストレージのフォールト トレランスを有効化するオプションがあります。
デプロイ中にフォールト トレランスを有効にする場合は、「マルチノード Ubuntu クラスターを使用して Linux をエッジ ボリューム用に準備する」の手順に従ってクラスターを構成します。
詳細な構成
この時点で、Azure Arc 対応 Kubernetes クラスターがある場合、それに Azure IoT Operations をデプロイする前に、高度なシナリオに合わせたクラスターの構成が必要になる可能性があります。
- クラスターで監視機能を有効にする場合は、「監視リソースをデプロイとログの設定」の手順に従って行います。
- クラスターで独自の証明書発行者を構成する場合は、「証明書の管理」 > 「独自の発行者を使用する」の手順に従って行います。
次のステップ
Azure Arc 対応 Kubernetes クラスターが作成されたので、Azure IoT Operations をデプロイできます。