すべてのプロダクト
Search
ドキュメントセンター

:アプリケーションの配布を開始する

最終更新日:Nov 14, 2024

Distributed Cloud Container Platform for Kubernetes (ACK One) のフリートインスタンスのアプリケーション配布機能を使用すると、Gitリポジトリに依存することなく、複数のクラスターにアプリケーションを配布できます。これにより、デプロイプロセスが簡素化されます。 このトピックでは、フリートインスタンスでアプリケーションを作成し、配布ポリシーを使用して複数のクラスターに配布する方法について説明します。

前提条件

ステップ1 (オプション): Fleetインスタンスに名前空間を作成する

配布するアプリケーションの名前空間がフリートインスタンスに存在しない場合は、まずフリートインスタンスに作成します。 すでに存在する場合は、この手順をスキップできます。

kubeconfigファイルを使用してFleetインスタンスに接続します。 次のコマンドを実行してdemoという名前の名前空間を作成します。

kubectl create namespace demo

手順2: フリートインスタンスでのアプリケーションの作成

アプリケーションのタイプは、ConfigMap、Deployment、またはServiceです。 このトピックでは、NGINX Deploymentを例として、アプリケーションの配布方法を示します。

  1. 次のYAMLテンプレートを使用して、weighted-deployment.yamlという名前のファイルを作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      namespace: demo  # The namespace to which the application belongs.
      name: weighted-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: weighted-deployment
      template:
        metadata:
          labels:
            app: weighted-deployment
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
  2. 次のコマンドを実行して、アプリケーションをデプロイします。

    kubectl apply -f weighted-deployment.yaml

手順3: フリートインスタンスに配布ポリシーを作成して、アプリケーションを複数のクラスターに配布する

配布ポリシー (PropagationPolicy) を定義して、配布するアプリケーションとターゲットクラスターを選択します。 確立されると、ポリシーは、選択されたアプリケーションを指定されたクラスタに配信する。

この例では、Deployment weighted-deploymentはcluster1とcluster2に分散され、各クラスターは3つのレプリカを受け取ります。

  1. 以下の内容でpropagationpolicy.yamlという名前のファイルを作成します。

    apiVersion: one.alibabacloud.com/v1alpha1
    kind: PropagationPolicy
    metadata:
      name: weighted-pp
      namespace: demo
    spec:
      resourceSelectors:
      - apiVersion: apps/v1
        kind: Deployment
        name: weighted-deployment
      placement:
        clusterAffinity:
          clusterIds:
          - ${cluster1-id} # Your cluster ID.
          - ${cluster2-id} # Your cluster ID.
        replicaScheduling:
          replicaSchedulingType: Duplicated

    次の表に、主要なパラメーターを示します。

    パラメーター

    説明

    項目

    resourceSelectors

    配布する1つ以上のKubernetesリソースを指定します。

    • apiVersion: 配布するリソースのAPIバージョンを指定します。 このフィールドは必須です。

    • kind: 配布するリソースのタイプを指定します。 このフィールドは必須です。

    • name: 配布するリソースの名前を指定します。

    • namespace: 配布するリソースの名前空間を指定します。

      説明

      PropagationPolicyは、同じ名前空間内のリソースにのみ適用できます。

    • labelSelector: 配布するリソースの選択に使用するラベルを指定します。

    配置

    clusterAffinity: リソース配布の宛先クラスターを指定します。

    clusterIds配列を使用してクラスターIDを直接指定します。

    説明

    クラスター名の代わりにクラスターIDを使用してください。

    replicaScheduling: デプロイ、StatefulSets、ジョブなどの複製可能なリソースのスケジューリングポリシーを指定します。

    replicaSchedulingTypeがDuplicatedに設定されている場合、各クラスターは、spec. replicasで指定された数のレプリカを持つリソースのレプリカを受け取ります。

  2. 次のコマンドを実行して、配布ポリシーを作成します。

    kubectl apply -f propagationpolicy.yaml

ステップ4 (オプション): フリートインスタンスでのオーバーライドポリシーの作成

オーバーライドポリシーを使用すると、差別化されたデプロイを必要とするクラスターとリソースを指定できます。 ポリシーが実装されると、選択されたリソースがカスタマイズされ、指定されたクラスターにデプロイされます。

この例では、レプリカの数を1に設定し、イメージレジストリをAlibaba Cloudの数に更新することで、cluster2にデプロイされたアプリケーションに特定の変更を適用します。

  1. 次のYAMLテンプレートを使用して、overridepolicy.yamlという名前のファイルを作成します。

    apiVersion: one.alibabacloud.com/v1alpha1
    kind: OverridePolicy
    metadata:
      name: example
      namespace: demo
    spec:
      resourceSelectors:
        - apiVersion: apps/v1
          kind: Deployment
          name: weighted-pp
      overrideRules:
        - targetCluster:
            clusterNames:
              - ${cluster2-id}   # The cluster that requires different deployment.
          overriders:
            plaintext:
              - operator: replace
                path: /spec/replicas
                value: 1
            imageOverrider:
              - component: Registry
                operator: replace
                value: registry.cn-hangzhou.aliyuncs.com

    次の表に、主要なパラメーターを示します。

    パラメーター

    説明

    項目

    resourceSelector

    オーバーライドが必要なリソースを指定します。

    • apiVersion: 必須です。 オーバーライドが必要なリソースのAPIバージョンを指定します。

    • kind: 必須です。 オーバーライドが必要なリソースのタイプを指定します。

    • name: オーバーライドが必要なリソースの名前を指定します。

    • namespace: オーバーライドが必要なリソースの名前空間を指定します。

      説明

      PropagationPolicyは、同じ名前空間内のリソースにのみ適用できます。

    • labelSelector: オーバーライドが必要なリソースの選択に使用するラベルを指定します。

    overrideRules

    一連のオーバーライド規則を使用して、アプリケーションテンプレートを変更します。

    • plaintex: JSONパッチを使用してテンプレートを変更します。

    • imageOverrider: イメージのレジストリリポジトリ、およびタグを変更します。

  2. 次のコマンドを実行して、オーバーライドポリシーを作成します。

    kubectl apply -f overridepolicy.yaml

手順5: 複数のクラスターでのアプリケーションのステータスの照会

次のAMCコマンドを実行して、アプリケーションの配布状況を確認します。 または、関連するクラスターにログインして、アプリケーションのステータスを確認することもできます。

次のコマンドを実行して、アプリケーションのステータスを照会します。

kubectl amc get deploy -n demo

期待される出力:

NAME                  CLUSTER          READY   UP-TO-DATE   AVAILABLE   AGE    ADOPTION
weighted-deployment   cxxxxxxxxxxxxx   3/3     3            3           3d4h   Y
weighted-deployment   cxxxxxxxxxxxxx   3/3     3            3           3d4h   Y

出力は、アプリケーションが指定されたクラスターに分散されていることを示します。

関連ドキュメント