次の方法で共有


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 クラスターを準備するには:

  1. 単一ノードまたはマルチノード K3s クラスターを作成します。 例については、K3s クイックスタート ガイドまたは K3s 関連プロジェクトを参照してください。

  2. kubectl が K3s の一部としてインストールされていることを確認します。 そうでない場合は、手順に従って Linux に kubectl をインストールします

    kubectl version --client
    
  3. 手順に従って Helm をインストールします

  4. .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
    
  5. 次のコマンドを実行して、ユーザー ウォッチ/インスタンスの制限を増やします。

    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
    
  6. パフォーマンスを向上させるために、ファイル記述子の制限を増やします。

    echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    

クラスターを Arc 対応にする

クラスターを Azure Arc に接続して、クラスターをリモートで管理できるようにします。

  1. Kubernetes クラスターを配置したマシンで、Azure サブスクリプションに必要なロールを持つ Microsoft Entra ユーザー アカウントを使用して Azure CLI にサインインします。

    az login
    

    任意の時点で "リソースにアクセスするにはデバイスを管理対象にする必要があります" というエラーが表示された場合、az login を再度実行し、ブラウザーに対話式で確実にサインインします。

  2. サインインすると、Azure CLI にすべてのサブスクリプションが表示され、既定のサブスクリプションにはアスタリスク * が表示されます。 既定のサブスクリプションで続行するには、Enter を選択します。 それ以外の場合は、使用する Azure サブスクリプションの番号を入力します。

  3. サブスクリプションに必要なリソース プロバイダーを登録します。

    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"
    
  4. 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 コマンドを変更します。

    1. 送信プロキシ サーバーを使用して接続する」または Azure Arc ゲートウェイを使用して Kubernetes クラスターを Azure Arc にオンボードするに関する記事のいずれかの手順に従います。
    2. az connectedk8s connect コマンドの --proxy-skip-range パラメーターに 169.254.169.254 を追加します。 Azure デバイス レジストリは、このローカル エンドポイントを使用して、認可用のアクセス トークンを取得します。

    Azure IoT Operations は、信頼された証明書を必要とするプロキシ サーバーをサポートしていません。

  5. クラスターの発行者の URL を取得します。

    az connectedk8s show --resource-group <RESOURCE_GROUP> --name <CLUSTER_NAME> --query oidcIssuerProfile.issuerUrl --output tsv
    

    このコマンドの出力を保存して、次の手順で使用します。

  6. K3s 構成ファイルを作成します。

    sudo nano /etc/rancher/k3s/config.yaml
    
  7. config.yaml ファイルに次の内容を追加し、<SERVICE_ACCOUNT_ISSUER> プレースホルダーをクラスターの発行者の URL で置き換えます。

    kube-apiserver-arg:
     - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
     - service-account-max-token-expiration=24h
    
  8. ファイルを保存し、nano エディターを終了します。

  9. カスタムの場所オブジェクト 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 にログインします。

  1. 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
    
  2. 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 をデプロイできます。