日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

應用分發差異化配置

您可以在ACK One Fleet實例上進行多集群應用分發差異化配置,實現同一個應用在不同目標關聯集群上的配置不同,例如副本數量、鏡像、環境變量不同。本文通過示例應用的部署介紹如何實現應用分發的差異化配置。

前提條件

操作步驟

  1. 使用以下內容,創建app-meta.yaml文件,包含應用相關的Kubernetes原生資源。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: demo
      name: demo
      namespace: demo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: demo
      template:
        metadata:
          labels:
            app: demo
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/acs/rollouts-demo:red
            name: demo
  2. 執行以下命令,在Fleet實例上部署應用demo。

    kubectl apply -f app-meta.yaml
  3. 使用以下內容,創建policy-topology.yaml,定義分發的目標集群是cluster-beijingcluster-hangzhou

    1. 執行以下命令,查看Fleet實例管理的關聯集群,確定應用分發的目標集群。

      kubectl get managedclusters

      預期輸出:

      NAME                     HUB ACCEPTED   MANAGED CLUSTER URLS   JOINED   AVAILABLE   AGE
      managedcluster-c5***z9   true                                  True     True        12d
      managedcluster-c1***e5   true                                  True     True        12d
    2. 選擇對應目標集群,替換如下示例中的<clusterid1><clusterid2>為待發布的目標集群ID。

      apiVersion: core.oam.dev/v1alpha1
      kind: Policy
      metadata:
        name: cluster-beijing
        namespace: demo
      type: topology
      properties:
        clusters: ["<clusterid1>"]
      ---
      apiVersion: core.oam.dev/v1alpha1
      kind: Policy
      metadata:
        name: cluster-hangzhou
        namespace: demo
      type: topology
      properties:
        clusters: ["<clusterid2>"]

      參數

      說明

      type: topology

      Topology類型的Policy定義了應用資源的下發目標。

      properties. clusters

      目前支持通過關聯集群ID定義下發目標,一個下發目標可以包含一個或多個集群。

  4. 執行以下命令,在Fleet實例上部署多集群應用的分發策略。

    kubectl apply -f policy-topology.yaml
  5. 使用以下內容,創建policy-override.yaml,定義差異化配置,修改Deployment的副本數。

    apiVersion: core.oam.dev/v1alpha1
    kind: Policy
    metadata:
      name: override-replic-beijing
      namespace: demo
    type: override
    properties:
      components:
      - name: "demo"
        traits:
        - type: scaler
          properties:
            replicas: 3
    ---
    apiVersion: core.oam.dev/v1alpha1
    kind: Policy
    metadata:
      name: override-replic-hangzhou
      namespace: demo
    type: override
    properties:
      components:
      - name: "demo"
        traits:
        - type: scaler
          properties:
            replicas: 5

    參數

    說明

    type: override

    Override類型的Policy定義差異化配置。

    properties. components. name

    引用Application中Components,差異化的目標對象。

    properties. components.traits

    差異化配置,通過scaler修改Deployment副本數。

  6. 執行以下命令,在Fleet實例上部署多集群應用的差異化配置策略。

    kubectl apply -f policy-override.yaml
  7. 使用以下內容,創建workflow.yaml,定義工作流。

    apiVersion: core.oam.dev/v1alpha1
    kind: Workflow
    metadata:
      name: deploy-demo
      namespace: demo
    steps:
      - type: deploy
        name: deploy-bejing
        properties:
          policies: ["override-replic-beijing", "cluster-beijing"]
      - type: deploy
        name: deploy-hangzhou
        properties:
          policies: ["override-replic-hangzhou", "cluster-hangzhou"]

    參數

    說明

    type: deploy

    定義workflow部署步驟。

    steps. properties. policies

    部署步驟用使用的Policy,包括差異化配置和部署目標集群。

  8. 執行以下命令,在Fleet實例上部署多集群應用分發工作流。

    kubectl apply -f workflow.yaml
  9. 使用以下內容,創建app.yaml,定義應用。

    apiVersion: core.oam.dev/v1beta1
    kind: Application
    metadata:
      name: demo
      namespace: demo
      annotations:
        app.oam.dev/publishVersion: version1
    spec:
      components:
        - name: demo
          type: ref-objects
          properties:
            objects:
              - apiVersion: apps/v1
                kind: Deployment
                name: demo
      workflow:
        ref: deploy-demo

    參數

    說明

    annotations: app.oam.dev/publishVersion

    應用的版本控制,當應用或應用引用的Kubernetes資源發生變化時,必須更新此字段,才能觸發向目標集群的分發。

    components. type: ref-objects

    通過apiVersion、kindname引用同命名空間下的Kubernetes資源,應用將下發這些資源到目標關聯集群中。

    • 目前ACK One支持的應用Kubernetes資源包括Deployment/apps/v1、Secret/v1、ConfigMap/v1Ingress/networking.k8s.io/v1。

    • 如需分發其他資源的需求,請提交工單聯系ACK One團隊。

    workflow. ref

    定義Application部署使用的工作流。

  10. 執行以下命令,在Fleet實例上部署應用demo。

    kubectl apply -f app.yaml
  11. 查看應用的狀態。

    • 執行以下命令,查看應用部署的狀態。

      kubectl get app demo -n demo

      預期輸出:

      NAME   COMPONENT   TYPE          PHASE     HEALTHY   STATUS   AGE
      demo   demo        ref-objects   running   true               24m
    • 執行以下命令,查看Deployment資源在各關聯集群上的副本數。

      替換其中<clusterid1>為待查看的目標集群ID,可以看到實際副本數與差異化配置一致。

      kubectl amc get deployment demo -n demo -m <clusterid1>

      預期輸出:

      Run on ManagedCluster <clusterid1>
      NAME   READY   UP-TO-DATE   AVAILABLE   AGE
      demo   3/3     3            3           28m
      kubectl amc get deployment demo -n demo -m <clusterid2>

      預期輸出:

      Run on ManagedCluster <clusterid2>
      NAME   READY   UP-TO-DATE   AVAILABLE   AGE
      demo   5/5     5            5           28m