ACK One は、フリート内のアプリケーションを配信するために、配信ポリシー (PropagationPolicy) と差分化ポリシー (OverridePolicy) を使用します。配信ポリシー (PropagationPolicy) は、どのリソースをどのクラスターに配信するかを定義します。差分化ポリシー (OverridePolicy) は、リソースのクラスター固有の構成を定義します。このトピックでは、配信ポリシーと差分化ポリシーの設定方法について説明します。
配信ポリシー
PropagationPolicy または ClusterPropagationPolicy を定義して、複数のクラスターにアプリケーションを配信するための配信ポリシーを設定できます。PropagationPolicy と ClusterPropagationPolicy は、オープンソースの Karmada プロジェクトに基づいており、Karmada の ClusterPropagationPolicy および PropagationPolicy インターフェイスと互換性があります。
ClusterPropagationPolicy:PersistentVolume、StorageClass、Namespace、CustomResourceDefinitionなどのクラスターレベルのアプリケーションを配布するために使用されます。 また、システム名前空間を除く、任意の名前空間でのアプリケーションの配布もサポートしています。 リソース配布の RBAC 権限は、マルチクラスターフリートの RBAC 権限によって制御されます。PropagationPolicy:名前空間レベルのアプリケーションを配信するために使用されます。自身の名前空間内のアプリケーションのみを配信できます。
次の例は、静的な重みに基づいてアプリケーションを配信する PropagationPolicy を示し、ポリシーを定義するために使用されるパラメーターについて説明します。
apiVersion: policy.one.alibabacloud.com/v1alpha1
kind: PropagationPolicy
metadata:
name: web-demo
namespace: demo
spec:
resourceSelectors:
- apiVersion: apps/v1
kind: Deployment
name: web-demo
- apiVersion: v1
kind: ConfigMap
name: cm-demo
- apiVersion: apps/v1
kind: Deployment
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- xxxx
preserveResourcesOnDeletion: true
placement:
clusterAffinity:
clusterNames:
- cxxxxx # ご利用のクラスター ID
- cxxxxx # ご利用のクラスター ID
replicaScheduling:
replicaSchedulingType: Divided
replicaDivisionPreference: Weighted
weightPreference:
staticWeightList:
- targetCluster:
clusterNames:
- cxxxxx
weight: 2
- targetCluster:
clusterNames:
- cxxxxxx
weight: 1パラメーター
パラメーター | 必須 | 説明 | 例 |
apiVersion | はい | API バージョン。 |
|
kind | はい | 配信ポリシーのレベル。有効値:
| PropagationPolicy |
namespace | いいえ |
| demo |
name | いいえ | 配信ポリシーの名前。 | policy-xxxx |
resourceSelectors | いいえ | 配信する 1 つ以上の Kubernetes リソースを選択します。詳細については、「resourceSelector パラメーター」をご参照ください。 | |
propagateDeps | いいえ | 依存リソースを自動的に配信するかどうかを指定します。たとえば、デプロイメントが ConfigMap を参照している場合、このパラメーターは ConfigMap もメンバークラスターに配信されるかどうかを決定します。 | true または false |
placement | はい |
| |
dependentOverrides | いいえ | 依存する リソースは、すべての依存する | |
failover | いいえ | アプリケーションの故障後の
| |
preserveResourcesOnDeletion | はい | ポリシーが削除された後、配信されたリソースを保持するかどうかを指定します。デフォルト:true。 | false |
resourceSelector パラメーター
パラメーター | 必須 | 説明 | 例 |
apiVersion | はい | 配信されるリソースの API バージョン。 | v1 |
kind | はい | 配信されるリソースのタイプ。 | Deployment |
namespace | いいえ | 配信されるリソースの名前空間。 説明
| demo |
name | いいえ | 配信されるリソースの名前。 | 任意の名前 |
labelSelector | いいえ | ラベルセレクターを使用してリソースを選択します。
| |
clusterAffinity パラメーター
パラメーター | 必須 | 説明 | 値の例 |
clusterNames | いいえ | リソースを配信するクラスター ID のリスト。 | |
excludeClusters | いいえ | 配信から除外するクラスター ID のリスト。 | |
labelSelector | いいえ | ラベルセレクターを使用して配信対象のクラスターを選択します。 | |
replicaScheduling パラメーター
パラメーター | 必須 | 説明 | 値のサンプル |
replicaSchedulingType | いいえ | レプリカスケジューリングポリシー。有効値:
| Duplicated |
customSchedulingType | いいえ | カスタムスケジューリングポリシー。現在、ジョブワークロードに対しては Gang スケジューリングのみがサポートされています。 | Gang |
replicaDivisionPreference | いいえ | レプリカ分割ポリシー。有効値:
| weighted |
weightPreference | いいえ | 動的または静的な重みのプリファレンスを指定します。
| 次の例では、Cluster1 の重みは 2、Cluster2 の重みは 1 です。レプリカの総数が 3 の場合、2 つのレプリカが Cluster1 に、1 つのレプリカが Cluster2 にスケジュールされます。 次の例は、動的な重みスケジューリングを示しています: |
差分化ポリシー
アプリケーションをデプロイする際、クラスターごとに異なる構成が必要になる場合があります。差分化ポリシーを使用すると、クラスター固有の構成でアプリケーションをデプロイできます。ClusterOverridePolicy または OverridePolicy を定義して、差分化ポリシーを作成できます。ClusterOverridePolicy と OverridePolicy は、オープンソースの Karmada プロジェクトに基づいており、Karmada の ClusterOverridePolicy と互換性があります。
OverridePolicy インターフェイスをサポートしています。
ClusterOverridePolicy: クラスター レベルのリソース(例:PersistentVolume、StorageClass、Namespace、およびCustomResourceDefinition)をオーバーライドするために使用されます。また、システム名前空間を除くすべての名前空間内のリソースのオーバーライドもサポートしています。OverridePolicy:名前空間レベルのリソースをオーバーライドするために使用されます。自身の名前空間内の配信済みリソースをオーバーライドできます。
次の例は、OverridePolicy を示し、ポリシーを定義するために使用されるパラメーターについて説明します。
apiVersion: policy.one.alibabacloud.com/v1alpha1
kind: OverridePolicy
metadata:
name: demo
namespace: demo
spec:
resourceSelectors:
- apiVersion: apps/v1
kind: Deployment
name: example
overrideRules:
- targetCluster:
clusterNames:
- cxxxxx #ご利用のクラスター ID
overriders:
plaintext:
- operator: replace
path: /spec/replicas
value: 1
imageOverrider:
- component: Registry
operator: add
value: registry.cn-hangzhou.aliyuncs.com/xxxx主なパラメーター
パラメーター | 必須 | 説明 | 例 |
apiVersion | はい | API バージョン。 |
|
kind | はい | 差分化ポリシーのタイプ。有効値:
| OverridePolicy |
namespace | いいえ |
| demo |
name | はい | 差分化ポリシーの名前。 | 任意の名前 |
resourceSelectors | はい | resourceSelectors の配列。詳細については、「resourceSelector パラメーター」をご参照ください。 | |
overrideRules | はい | ruleWithClusters の配列。詳細については、「ruleWithCluster パラメーター」をご参照ください。 | |
resourceSelector パラメーター
パラメーター | 必須 | 説明 | 例 |
apiVersion | はい | 配信したいリソースの | v1 |
kind | はい | 配信されるリソースのタイプ。 | Deployment |
namespace | いいえ | 配信されるリソースの名前空間。 説明
| demo |
name | いいえ | 配信されるリソースの名前。 | 任意の名前 |
labelSelector | いいえ | ラベルセレクターを使用して配信対象のリソースを選択します。 | |
clusterAffinity パラメーター
パラメーター | 必須 | 説明 | 値の例 |
clusterNames | いいえ | リソースを配信するクラスター ID のリスト。 | |
excludeClusters | いいえ | 配信から除外するクラスター ID のリスト。 | |
labelSelector | いいえ | ラベルセレクターを使用して配信対象のクラスターを選択します。 | |
ruleWithCluster パラメーター
パラメーター | 必須 | 説明 | 例 |
targetCluster | はい |
| |
overriders | はい | オーバーライドルールを含む
| |
overriders パラメーター
パラメーター | 必須 | 説明 | 例 |
imageOverrider | いいえ | イメージの変更方法を指定します。
| |
plaintext | いいえ | JSON パッチを使用してリソースを変更します。
| |
参照情報
フリートインスタンスでアプリケーションを作成し、マルチクラスター配信のための配信ポリシーまたは差分化ポリシーを設定する方法の詳細については、「アプリケーション配信クイックスタート」をご参照ください。