Azure Arc 対応 Kubernetes クラスターは、Azure IoT Operations をデプロイするための前提条件です。 この記事では、Azure IoT Operations をデプロイする前にクラスターを準備する方法について説明します。 この記事には、Ubuntu、Windows、Azure Local、Tanzu Kubernetes Grid (TKG) のガイダンスが含まれています。
この記事の手順では、セキュリティで保護された設定のデプロイのためにクラスターを準備します。これは、より時間がかかるものの実稼働可能なプロセスです。 Azure IoT Operations をすばやくデプロイし、テスト設定のみでサンプル ワークロードを実行する場合は、代わりに、「クイックスタート: K3s を使用して GitHub Codespaces で Azure IoT Operations を実行する」を参照してください。 テスト設定とセキュリティで保護された設定の詳細については、デプロイ詳細 > 機能の選択を参照してください。
前提条件
Microsoft では、Windows でのデプロイに Azure Kubernetes Service (AKS) Edge Essentials、Ubuntu でのデプロイ用 K3s、Azure Local での AKS デプロイ、TKG 上の Tanzu Kubernetes リリース (TKr) をサポートしています。 Azure IoT Operations をマルチノード ソリューションにデプロイする場合は、Ubuntu で K3s を使用します。
Azure Arc 対応 Kubernetes クラスターを準備するには、以下が必要です。
Owner ロール、または Contributor と User Access Administrator ロールの組み合わせを持つ Azure サブスクリプション。 アクセス レベルを確認するには、サブスクリプションに移動し、Azure portal の左側にある Access コントロール (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.62.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 に接続して、クラスターをリモートで管理できるようにします。
クラスターに
kubectl
アクセスできるマシンから、Azure サブスクリプションに必要なロールを持つ Microsoft Entra ユーザー アカウントを使用して Azure CLI にサインインします。az login
任意の時点で "リソースにアクセスするにはデバイスを管理対象にする必要があります" というエラーが表示された場合、 を再度実行し、ブラウザーに対話式で確実にサインインします。
az login
サインインすると、Azure CLI にすべてのサブスクリプションが表示され、既定のサブスクリプションにはアスタリスク
*
が表示されます。 既定のサブスクリプションで続行するには、Enter
を選択します。 それ以外の場合は、使用する Azure サブスクリプションの番号を入力します。サブスクリプションに必要なリソース プロバイダーを登録します。
注
この手順は、サブスクリプションごとに 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 にオンボードするに関する記事のいずれかの手順に従います。
-
169.254.169.254
コマンドの--proxy-skip-range
パラメーターにaz connectedk8s connect
を追加します。 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)
注
"'custom-locations' アプリの oid をフェッチできません。 機能を有効にせずに続行します。 操作を完了するための特権が不十分です。サービス プリンシパルには、カスタムの場所のオブジェクト 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 つのノードを持つ複数ノードの Ubuntu クラスターでは、Azure IoT Operations をデプロイするときに 、Azure Arc によって Azure Container Storage が有効になっている ストレージのフォールト トレランスを有効にするオプションがあります。
デプロイ中にフォールト トレランスを有効にする場合は、「マルチノード Ubuntu クラスターを使用して Linux をエッジ ボリューム用に準備する」の手順に従ってクラスターを構成します。
k3s 以外の Kubernetes ディストリビューションでクラスターを実行している場合は、 他のプラットフォームで Linux を準備するためのガイダンスを確認してください。
詳細な構成
この時点で、Azure Arc 対応 Kubernetes クラスターがある場合、それに Azure IoT Operations をデプロイする前に、高度なシナリオに合わせたクラスターの構成が必要になる可能性があります。
- クラスターで監視機能を有効にする場合は、「監視リソースをデプロイとログの設定」の手順に従って行います。
- クラスターで独自の証明書発行者を構成する場合は、「証明書の管理」 > 「独自の発行者を使用する」の手順に従って行います。
次のステップ
Azure Arc 対応 Kubernetes クラスターが作成されたので、Azure IoT Operations をデプロイできます。