次の方法で共有


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 をデプロイする場合は、「エッジ ボリューム用に Linux を準備する」のハードウェアとストレージの要件を確認してください。

クラスターを作成して Arc 対応にする

このセクションでは、Linux および Windows 上の検証済み環境でクラスターを作成する手順について説明します。

Ubuntu 上で K3s Kubernetes クラスターを準備するには:

  1. 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
    

Azure コンテナー ストレージ用にマルチノード クラスターを構成する

少なくとも 3 つのノードを持つマルチノード クラスターでは、Azure IoT Operations のデプロイ時に Azure Arc で有効化された Azure コンテナー ストレージを使用してストレージのフォールト トレランスを有効化するオプションがあります。

デプロイ中にフォールト トレランスを有効にする場合は、「マルチノード Ubuntu クラスターを使用して Linux をエッジ ボリューム用に準備する」の手順に従ってクラスターを構成します。

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

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

  1. Kubernetes クラスターをデプロイしたマシン上で、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 group create コマンドを使用して、Azure サブスクリプションにリソース グループを作成し、すべてのリソースを保存します。

    現在サポートされているすべての Azure リージョンの一覧については、「サポートされているリージョン」を参照してください。

    az group create --location <REGION> --resource-group <RESOURCE_GROUP> --subscription <SUBSCRIPTION_ID>
    
  5. 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
    
  6. クラスターの発行者の URL を取得します。

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

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

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

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

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

  10. テナント内で Azure Arc サービスが使用する Microsoft Entra ID アプリケーションの objectId を取得し、環境変数として保存します。 GUID 値を変更せずに、記述されたとおりに次のコマンドを実行します。

    export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
    
  11. 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
    
  12. 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 をデプロイできます。