次の方法で共有


Azure Kubernetes Fleet Manager の自動デプロイを使用してマルチクラスター リソースの配置を推進する (プレビュー)

Azure Kubernetes Fleet Manager の自動デプロイを使用して、コード リポジトリからフリート内の 1 つ以上の AKS クラスターにアプリケーションをビルドしてデプロイできます。 自動デプロイにより、コードをビルドしてデプロイするための GitHub アクション ワークフローを設定するプロセスが簡略化されます。 接続されると、新しくコミットするたびにパイプラインが実行されます。

自動デプロイは 、draft.sh に基づいて構築されます。新しいデプロイ ワークフローを作成するときに、既存の Dockerfile を使用したり、Dockerfile を生成したり、既存の Kubernetes マニフェストを使用したり、Kubernetes マニフェストを生成したりできます。 生成されたマニフェストは、セキュリティと回復性のベスト プラクティスを念頭に置いて作成されます。

Von Bedeutung

Azure Kubernetes Fleet Manager のプレビュー機能は、セルフサービス、オプトイン ベースで利用できます。 プレビューは、"現状有姿のまま" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 Azure Kubernetes Fleet Manager のプレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は、運用環境での使用を意図していません。

[前提条件]

アプリケーションのソース コードを取り込む

Azure Kubernetes Fleet Manager を見つけて、自動デプロイの構成を開始します。

  1. Azure portal で、上部の検索バーで Kubernetes Fleet Manager を検索します。
  2. 検索結果で Kubernetes Fleet Manager を選択します。
  3. リソースの一覧から Azure Kubernetes Fleet Manager を選択します。
  4. Fleet Manager サービス メニューの [フリート リソース] で、[ 自動デプロイ] を選択します。
  5. 上部のメニューで [ + 作成 ] を選択します。 このデプロイが初めての場合は、展開リスト領域で [作成 ] を選択することもできます。

Fleet Manager の自動デプロイの作成オプションを示すスクリーンショット。

ソース コード リポジトリに接続する

ワークフローを作成し、目的のソース コード リポジトリとブランチに接続することを承認します。 [リポジトリ] タブで次の詳細を完了します。

  1. [ワークフロー名] フィールドに、ワークフローのわかりやすい 名前 を入力します。
  2. 次に、[ アクセスの承認 ] を選択して GitHub に対してユーザーを承認し、リポジトリの一覧を取得します。
  3. リポジトリ ソースの場合は、次のいずれかを選択します。
    1. 現在承認されている GitHub ユーザーが所有しているリポジトリの場合は [My repositories]。または、
    2. すべてのリポジトリとは、現在承認されている GitHub ユーザーがアクセスできるリポジトリのことです。 リポジトリを所有する 組織 を選択する必要があります。
  4. リポジトリとブランチを選択します
  5. [ 次へ ] ボタンを選択します。

Fleet Manager の自動デプロイを設定するときのソース管理リポジトリの選択を示すスクリーンショット。

アプリケーション イメージとデプロイ構成を指定する

Kubernetes で実行するアプリケーションを準備するには、コンテナー レジストリに格納するコンテナー イメージにアプリケーションをビルドする必要があります。 Dockerfile では、コンテナー イメージをビルドする方法について説明します。 ソース コード リポジトリに Dockerfile がまだない場合は、自動デプロイで生成できます。

コード リポジトリに既に Dockerfile がある場合は、それを使用してアプリケーション イメージをビルドできます。

  1. 既存の Dockerfileコンテナー構成に対して選択します。
  2. リポジトリから Dockerfile を選択します。
  3. Dockerfile ビルド コンテキストを入力して、一連のファイルとディレクトリをビルド プロセス (通常は Dockerfile と同じフォルダー) に渡します。 これらのファイルはイメージのビルドに使用され、 .dockerignore ファイルに含めることで無視されない限り、最終的なイメージに含まれます。
  4. 既存の Azure Container Registry を選択します。 このレジストリは、ビルドされたアプリケーション イメージを格納するために使用されます。 アプリケーションを受信できる AKS クラスターには、レジストリに対するアクセス許可 AcrPull 付与する必要があります。
  5. Azure Container Registry イメージ名を設定します。 このイメージ名は、Kubernetes 配置マニフェストで使用する必要があります。

Fleet Manager の自動デプロイを設定するときの既存の Dockerfile の選択を示すスクリーンショット。

Kubernetes マニフェスト構成を選択する

Kubernetes で実行されているアプリケーションは、多くの Kubernetes プリミティブ コンポーネントで構成されます。 これらのコンポーネントは、使用するコンテナー イメージ、実行するレプリカの数、アプリケーションを公開するために必要なパブリック IP がある場合などについて説明します。詳細については、 Kubernetes の公式ドキュメントを参照してください。 ソース コード リポジトリに Kubernetes マニフェストがまだない場合は、自動デプロイで自動的に生成できます。 既存の Helm グラフを選択することもできます。

Warnung

これらの名前空間は Fleet Manager によって使用される内部名前空間であり、アプリケーションの配置に使用できないため、 fleet-system または fleet-member 名前空間を選択しないでください。

コード リポジトリに既に Kubernetes マニフェストがある場合は、それを選択して、クラスター リソース配置によってデプロイおよび構成されるワークロードを制御できます。

  1. 配置オプション として [既存の Kubernetes マニフェスト配置ファイルを使用 する] を選択します。
  2. リポジトリから Kubernetes マニフェスト ファイルまたはフォルダー を選択します。
  3. ワークロードをステージングする既存の Fleet Manager 名前空間 を選択します。
  4. [ 次へ ] ボタンを選択します。

Fleet Manager の自動デプロイを設定するときの既存の Kubernetes マニフェストの選択を示すスクリーンショット。

構成の確認

リポジトリ、イメージ、およびデプロイ構成の構成を確認します。

送信前に確認できるように自動デプロイの構成を示すスクリーンショット。

[次へ] を選択して、次のアクションを実行するプロセスを開始します。

  1. フェデレーション資格情報を作成して、GitHub アクションで次の操作を行えるようにします。
    1. ビルドされたコンテナー イメージを Azure Container Registry にプッシュします。
    2. Kubernetes マニフェストを Fleet Manager ハブ クラスターで選択した名前空間にステージングします。
  2. 生成されたファイルとワークフローを使用して、コード リポジトリに pull request を作成します。

セットアップには数分かかるため、[デプロイ] ページから移動しないでください。

プル要求を承認するボタンが表示された、自動デプロイ構成が完了したことを示すスクリーンショット。

プル要求を確認してマージする

デプロイ ステージが完了したら、[ プル要求の承認 ] ボタンを選択して、コード リポジトリで生成されたプル要求を開きます。

生成されたプル要求の名前には、それがAKSにデプロイされているかのように示されるという、既知の問題があります。 この間違った名前にもかかわらず、選択した名前空間の Fleet Manager ハブ クラスターでワークロードがステージングされます。

GitHub での pull request のスクリーンショット。

  1. [変更されたファイル] で 変更を確認 し、必要な編集を行います。
  2. 変更をコード リポジトリにマージするには、[ プル要求 のマージ] を選択します。

変更をマージすると、アプリケーションをコンテナー イメージにビルドし、選択した Azure Container Registry に格納する GitHub Actions ワークフローが実行されます。

進行中の GitHub Actions ワークフローを示すスクリーンショット。

生成されたリソースを確認する

パイプラインが完了したら、構成した Azure Container Registry インスタンスを見つけてイメージ リポジトリを開くことで、Azure portal で作成されたコンテナー イメージを確認できます。

Azure Container Registry リポジトリでホストされているビルドされたコンテナー イメージのスクリーンショット。

Fleet Manager の自動デプロイ構成を表示することもできます。 workflow名を選択すると、GitHub アクションで GitHub が開きます。

GitHub アクションへのリンクを含む、構成された Fleet Manager の自動デプロイのスクリーンショット。

最後に、予想される Kubernetes リソースが Fleet Manager ハブ クラスターでステージングされていることを確認できます。

az fleet get-credentials \
    --resource-group ${GROUP} \
    --name ${FLEET}
kubectl describe deployments virtual-worker --namespace=contoso-store

出力は次のようになります。 0 のレプリカでは、ワークロードが Fleet Manager ハブ クラスターでスケジュールされていないと想定されます。 Image プロパティが Azure Container Registry のビルドイメージに向けられていることを確認してください。

Name:                   virtual-worker
Namespace:              contoso-store
CreationTimestamp:      Thu, 24 Apr 2025 01:56:49 +0000
Labels:                 workflow=actions.github.com-k8s-deploy
                        workflowFriendlyName=contoso-store-deploy
Annotations:            <none>
Selector:               app=virtual-worker
Replicas:               1 desired | 0 updated | 0 total | 0 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=virtual-worker
  Containers:
   virtual-worker:
    Image:      contoso03.azurecr.io/virtual-worker:latest
    Port:       <none>
    Host Port:  <none>
    Limits:
      cpu:     2m
      memory:  20Mi
    Requests:
      cpu:     1m
      memory:  1Mi
    Environment:
      MAKELINE_SERVICE_URL:  http://makeline-service:3001
      ORDERS_PER_HOUR:       100
    Mounts:                  <none>
  Volumes:                   <none>
  Node-Selectors:            kubernetes.io/os=linux
  Tolerations:               <none>
Events:                      <none>

クラスター リソースの配置を定義する

プレビュー期間中に、ステージングされたワークロードのメンバー クラスターへの配置を構成するには、次の手順に従います。

  1. アプリケーションのソース コード リポジトリで、 fleet という名前のリポジトリ ルートにフォルダーを作成します。

  2. deploy-contoso-ns-two-regions.yaml フォルダーに新しいファイル を作成し、表示された内容を追加します。 このサンプルでは、2 つの異なる Azure リージョンに存在する必要がある 2 つのクラスターに contoso-store 名前空間をデプロイします。

    apiVersion: placement.kubernetes-fleet.io/v1
    kind: ClusterResourcePlacement
    metadata:
      name: distribute-virtual-worker-two-regions
    spec:
      resourceSelectors:
        - group: ""
          kind: Namespace
          version: v1          
          name: contoso-store
      policy:
        placementType: PickN
        numberOfClusters: 2
        topologySpreadConstraints:
        - maxSkew: 1
          topologyKey: region
          whenUnsatisfiable: DoNotSchedule
    
  3. GitHub アクション ワークフロー ファイルを変更し、CRP ファイルへの参照を追加します。

    DEPLOYMENT_MANIFEST_PATH: |
      ./virtual-worker.yaml
      ./fleet/deploy-contoso-ns-two-regions.yaml
    
  4. 新しい CRP マニフェストと更新された GitHub アクション ワークフロー ファイルをコミットします。

  5. CRP 定義で定義されているポリシーに従ってワークロードが配置されていることを確認します。 Azure portal を使用するか、コマンド ラインで kubectl を確認します。

正常に完了した配置を示す Fleet Manager リソース配置のスクリーンショット。

次のステップ