次の方法で共有


Kubernetes ツールを使用して Azure Arc 対応データ コントローラーを作成する

データ コントローラーは、Kubernetes クラスターの Azure Arc 対応データ サービスを管理します。 この記事では、Kubernetes ツールを使用してデータ コントローラーを作成する方法について説明します。

データ コントローラーを作成するステップの概要は、次のとおりです。

  1. 名前空間とブートストラップ サービスを作成する
  2. データ コントローラーを作成する

わかりやすくするために、次の手順では、自分が Kubernetes クラスター管理者であることを前提としています。 運用環境デプロイまたはより安全な環境の場合は、デプロイ プロセスに関連するユーザーとサービス アカウントに特定のアクセス許可のみを付与することでデータ コントローラーをデプロイする時は、"最小限の特権" のセキュリティのベスト プラクティスに従うことをお勧めします。

詳細な手順については、 Arc 対応データ サービスを最小限の特権で操作する方法に関する トピックを参照してください。

前提条件

概要情報については、「 Azure Arc 対応データ サービスのデプロイを計画 する」トピックを参照してください。

Kubernetes ツールを使用してデータ コントローラーを作成するには、Kubernetes ツールがインストールされている必要があります。 この記事の例では kubectl を使用しますが、Kubernetes ダッシュボード、ochelm などの Kubernetes の他のツールや Kubernetes yaml/json を使い慣れている場合は、それらのツールでも同様のアプローチを使用できます。

kubectl ツールをインストールする

名前空間とブートストラップ サービスを作成する

ブートストラップ サービスでは、データ コントローラーなどのカスタム リソースの作成、編集、削除を行う受信要求が処理されます。

bootstrapper-unified.yaml のコピーを保存し、ファイル内のすべての場所にあるプレースホルダー {{NAMESPACE}}を目的の名前空間名に置き換えます (例: arc)。

重要

ブートストラップの unified.yaml テンプレート ファイルにより、既定で Microsoft Container Registry (MCR) からブートストラップのコンテナー イメージがプルされます。 お使いの環境で Microsoft Container Registry に直接アクセスできない場合は、次の操作を実行します。

次のコマンドを実行して、編集したファイルで名前空間とブートストラップ サービスを作成します。

kubectl apply --namespace arc -f bootstrapper-unified.yaml

次のコマンドを使用して、ブートストラップ ポッドが実行されていることを確認します。

kubectl get pod --namespace arc -l app=bootstrapper

状態が [実行中] でない場合は、状態が [実行中] になるまでコマンドを数回実行します。

データ コントローラーを作成する

これで、データ コントローラー自体を作成する準備が整いました。

まず、一部の設定を変更できるように、 テンプレート ファイル のコピーをコンピューター上にローカルに作成します。

メトリックとログ ダッシュボードのユーザー名とパスワードを作成する

ファイルの上部で、メトリックとログのダッシュボードに対する認証に使用するユーザー名とパスワードを管理者として指定できます。 安全なパスワードを選択し、これらの特権を必要とするユーザーとのみ共有します。

Kubernetes シークレットは base64 でエンコードされた文字列として格納されます。1 つはユーザー名、1 つはパスワード用です。

オンライン ツールを使用して、希望するユーザー名とパスワードを base64 でエンコードできます。また、プラットフォームに応じて組み込みの CLI ツールを使用することもできます。

PowerShell

[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('<your string to encode here>'))

#Example
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('example'))

Linux/macOS

echo -n '<your string to encode here>' | base64

#Example
# echo -n 'example' | base64

ログとメトリック ダッシュボードの証明書を作成する

必要に応じて、ログとメトリック ダッシュボードの SSL/TLS 証明書を作成できます。 Kubernetes ネイティブ ツールのデプロイ時の SSL/TLS 証明書の指定に関する記事の手順に従います。

データ コントローラーの構成を編集する

必要に応じて、データ コントローラーの構成を編集します。

必須

  • ___location: データ コントローラーに関する メタデータ が格納される Azure の場所に変更します。 使用可能なリージョンの一覧を確認します
  • resourceGroup: Azure Resource Manager でデータ コントローラー Azure リソースを作成する Azure リソース グループ。 通常、このリソース グループは既に存在しているはずですが、データを Azure にアップロードするときまでは必要ありません。
  • subscription: Azure リソースを作成するためのサブスクリプションの GUID。

既定値を確認して変更することをお勧めします

  • 貯蔵。。className: データ コントローラーのデータ ファイルとログ ファイルに使用するストレージ クラス。 Kubernetes クラスターで使用できるストレージ クラスがわからない場合は、次のコマンドを実行します。kubectl get storageclass 既定値は default で、既定のストレージ クラスではなく、default という名前の既存のストレージ クラスがあることを前提としています。 注: 目的のストレージ クラスに設定する className 設定は 2 つあります - 1 つはデータ用、1 つはログ用です。
  • serviceType: LoadBalancer を使用していない場合は、サービスの種類を NodePort に変更します。
  • 安全 Azure Red Hat OpenShift または Red Hat OpenShift Container Platform の場合は、 security: 設定をデータ コントローラー yaml ファイルの次の値に置き換えます。
  security:
    allowDumps: false
    allowNodeMetricsCollection: false
    allowPodMetricsCollection: false

任意

  • name: データ コントローラーの既定の名前は arcされていますが、必要に応じて変更できます。
  • displayName: ファイルの先頭にある name 属性と同じ値に設定します。
  • logsui-certificate-secret: ログ UI 証明書の Kubernetes クラスターで作成されたシークレットの名前。
  • metricsui-certificate-secret: メトリック UI 証明書の Kubernetes クラスターで作成されたシークレットの名前。

次の例は、完成したデータ コントローラーの yaml を示しています。

apiVersion: v1
data:
  password: <your base64 encoded password>
  username: <your base64 encoded username>
kind: Secret
metadata:
  name: metricsui-admin-secret
type: Opaque

---

apiVersion: v1
data:
  password: <your base64 encoded password>
  username: <your base64 encoded username>
kind: Secret
metadata:
  name: logsui-admin-secret
type: Opaque

---

apiVersion: arcdata.microsoft.com/v5
kind: DataController
metadata:
  name: arc-dc
spec:
  credentials:
    dockerRegistry: arc-private-registry # Create a registry secret named 'arc-private-registry' if you are going to pull from a private registry instead of MCR.
    serviceAccount: sa-arc-controller
  docker:
    imagePullPolicy: Always
    imageTag: v1.39.0_2025-05-13
    registry: mcr.microsoft.com
    repository: arcdata
  infrastructure: other # Must be a value in the array [alibaba, aws, azure, gcp, onpremises, other]
  security:
    allowDumps: true # Set this to false if deploying on OpenShift
    allowNodeMetricsCollection: true # Set this to false if deploying on OpenShift
    allowPodMetricsCollection: true # Set this to false if deploying on OpenShift
  services:
  - name: controller
    port: 30080
    serviceType: LoadBalancer # Modify serviceType based on your Kubernetes environment
  settings:
    ElasticSearch:
      vm.max_map_count: "-1"
    azure:
      connectionMode: indirect # Only indirect is supported for Kubernetes-native deployment for now.
      ___location: eastus # Choose a different Azure ___location if you want
      resourceGroup: <your resource group>
      subscription: <your subscription GUID>
    controller:
      displayName: arc-dc
      enableBilling: true
      logs.rotation.days: "7"
      logs.rotation.size: "5000"
  storage:
    data:
      accessMode: ReadWriteOnce
      className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
      size: 15Gi
    logs:
      accessMode: ReadWriteOnce
      className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
      size: 10Gi

編集したファイルをローカル コンピューターに保存し、次のコマンドを実行してデータ コントローラーを作成します。

kubectl create --namespace arc -f <path to your data controller file>

#Example
kubectl create --namespace arc -f data-controller.yaml

作成状態の監視

コントローラーの作成が完了するまでに数分かかります。 次のコマンドを使用して、別のターミナル ウィンドウで進行状況を監視できます。

kubectl get datacontroller --namespace arc
kubectl get pods --namespace arc

次のようなコマンドを実行して、特定のポッドの作成状態やログを確認することもできます。 これは特に、何らの問題をトラブルシューティングするのに役立ちます。

kubectl describe pod/<pod name> --namespace arc
kubectl logs <pod name> --namespace arc

#Example:
#kubectl describe pod/control-2g7bl --namespace arc
#kubectl logs control-2g7b1 --namespace arc

作成の問題のトラブルシューティング

作成で問題が発生した場合は、 トラブルシューティング ガイドを参照してください。