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

管理微服務配置與Kubernetes ConfigMap

通過Kubernetes集群管理微服務應用時,一些用戶習慣使用命令行操作,但維護微服務配置仍需在控制臺進行。因此,EDAS將微服務配置的運維操作集成至Kubernetes集群中,您可以直接通過Kubectl等工具發布相關微服務配置。同時,EDAS還支持將Kubernetes中的ConfigMap內容管理集成至微服務配置控制臺中,實現配置的統一管理。本文介紹如何管理Kubernetes ConfigMap與微服務配置。

技術原理

集群導入EDAS后,EDAS會托管一個增強版的Nacos Controller組件。 該控制器監聽DynamicConfiguration資源,根據YAML中定義的內容將配置從Kubernetes集群中的ConfigMap同步至Nacos Server,或將配置從Nacos Server同步寫入至Kubernetes集群中的ConfigMap。

  • 通過Kubernetes ConfigMap管理微服務配置時,Kubernetes集群配置和微服務配置的運維操作都在Kubernetes集群中,由Nacos Controller完成微服務配置的同步。

    image
  • 通過微服務配置管理Kubernetes ConfigMap時,ConfigMap配置和微服務配置的運維操作都在控制臺,由Nacos Controller完成配置并下發至ConfigMap中。

    image

前提條件

K8s集群已導入EDAS,且集群版本≥1.16。具體操作,請參見在EDAS控制臺導入Kubernetes集群

使用限制

當前僅支持通過配置YAML使用該功能。

黑屏操作入口

通過Kubernetes ConfigMap管理微服務配置

使用場景

如果您是經常使用K8s黑屏操作的運維人員,可以執行以下步驟通過ConfigMap發布微服務配置。

操作步驟

  1. 創建dc.yaml文件,定義同步ConfigMap中的配置至微服務配置控制臺的參數信息。

    apiVersion: nacos.io/v1
    kind: DynamicConfiguration
    metadata:
        name: demo
        namespace: default
    spec:
      # 定義哪些dataId需要被同步。
      dataIds:
      - demo-data-id1.properties
      - demo-data-id2.yml
      # 定義同步到哪個微服務空間以及分組。
      nacosServer:
        # EDAS微服務空間ID。
        namespace: cn-hangzhou:demo
        group: demo_group
      # 同步策略
      strategy:
        syncPolicy: Always # Always/IfAbsent,當策略為IfAbsent時,當被同步側存在配置時,跳過同步行為。
        syncDirection: cluster2server # cluster2server 表示從K8s集群同步到nacos server。
        syncDeletion: true # 同步刪除配置操作。
      # 配置實際存放處,當前僅支持ConfigMap。
      objectRef:
        apiVersion: v1
        kind: ConfigMap
        name: configmap-for-nacos
    
    ---
    apiVersion: v1
    kind: ConfigMap
    metadata:
        name: configmap-for-nacos
        namespace: default
    data:
        # 以DataId為key,Content為Value。需要被同步的DataId需要在DynamicConfiguration.spec.DataIds中注冊。
        demo-data-id1.properties: |
          demo-key=demo.value
          demo-key2=demo.value2
        demo-data-id2.yml: |
          app:
            name: demo-app-name
    

    其中nacosServer下的namespace需替換為您當前Region的所屬微服務空間ID,獲取方式:

    1. 登錄EDAS控制臺

    2. 在左側導航欄中選擇資源管理 > 微服務空間

    3. 微服務空間頁面查看當前Region的所有微服務空間ID,您可以任選其中一個替換。

      image.png

  2. 執行以下命令,創建DynamicConfiguration資源。

    kubectl apply -f dc.yaml

    日志提示以下信息,表明DynamicConfiguration已成功創建。

    dynamicconfiguration.nacos.io/demo created
    configmap/configmap-for-nacos created
  3. 執行以下命令,查詢Demo部署狀態。

    kubectl get dc -A

    日志提示以下信息,表明已成功部署。

    NAMESPACE   NAME                            PHASE     AGE
    default     demo                            succeed   4s
  4. 在EDAS控制臺,選擇應用管理> 微服務配置,在配置列表頁面選擇所屬微服務空間后查看配置,可查看部署好的Demo。您可單擊操作列的編輯查看配置詳情。

    image.png

  5. 執行以下命令,修改ConfigMap內容,本文示例為修改demo-data-id2.yml配置文件。

    kubectl edit configmap configmap-for-nacos

    以下部分代碼示例是將demo-data-id2.yml配置文件中appnamedemo-app-name修改為demo-app-name2

    apiVersion: v1
    data:
      demo-data-id1.properties: |
        demo-key=demo.value
        demo-key2=demo.value2
      demo-data-id2.yml: |
        app:
          name: demo-app-name2  # 修改名稱。
    kind: ConfigMap
    metadata:
      name: configmap-for-nacos
      namespace: default
  6. 執行以下命令,查看已修改后的demo-data-id2.yml文件,確認已修改成功。

    kubectl get cm configmap-for-nacos -oyaml
  7. 執行以下命令,查看DynamicConfiguration狀態。

    kubectl get dc demo -oyaml

    可以看到status.syncStatuses中lastSyncTime發生了變化。

    apiVersion: nacos.io/v1
    kind: DynamicConfiguration
    metadata:
      annotations:
        kubectl.kubernetes.io/last-applied-configuration: |
          {"apiVersion":"nacos.io/v1","kind":"DynamicConfiguration","metadata":{"annotations":{},"name":"demo","namespace":"default"},"spec":{"dataIds":["demo-data-id1.properties","demo-data-id2.yml"],"nacosServer":{"group":"demo_group","namespace":"cn-hangzhou"},"objectRef":{"apiVersion":"v1","kind":"ConfigMap","name":"configmap-for-nacos"},"strategy":{"syncDeletion":true,"syncDirection":"cluster2server","syncPolicy":"Always"}}}
      creationTimestamp: "2023-11-08T11:48:55Z"
      finalizers:
      - nacos.io/dc-finalizer
      generation: 1
      name: demo
      namespace: default
      resourceVersion: "138343446"
      uid: ca4a6ff8-20e7-4371-a072-9336403b****
    spec:
      dataIds:
      - demo-data-id1.properties
      - demo-data-id2.yml
      nacosServer:
        group: demo_group
        namespace: cn-hangzhou
      objectRef:
        apiVersion: v1
        kind: ConfigMap
        name: configmap-for-nacos
      strategy:
        syncDeletion: true
        syncDirection: cluster2server
        syncPolicy: Always
    status:
      objectRef:
        apiVersion: v1
        kind: ConfigMap
        name: configmap-for-nacos
        namespace: default
      observedGeneration: 1
      phase: succeed
      syncStatuses:
      - dataId: demo-data-id1.properties
        lastSyncFrom: cluster
        lastSyncTime: "2023-11-08T11:48:55Z"
        md5: 903f7d9a989744f3058266617514****
        ready: true
      - dataId: demo-data-id2.yml
        lastSyncFrom: cluster
        lastSyncTime: "2023-11-08T11:52:08Z"
        md5: 843229a8c3d760be382562ed70a6****
        ready: true
  8. 在EDAS控制臺,也可以看到配置已更新。

    image.png

通過微服務配置管理Kubernetes ConfigMap內容

使用場景

如果您是經常使用微服務配置白屏的運維人員,可以執行以下步驟通過微服務配置控制臺集中管理ConfigMap內容。

操作步驟

  1. 應用管理 > 微服務配置頁面創建配置。具體操作,請參見創建配置

    image.png

  2. 創建dc2.yaml文件,定義同步微服務配置至集群中的ConfigMap內容。

    apiVersion: nacos.io/v1
    kind: DynamicConfiguration
    metadata:
        name: demo2
        namespace: default
    spec:
      # 定義哪些dataId需要被同步。
      dataIds:
      - DEMO_JVM_CONFIG
      # 定義同步到哪個微服務空間以及分組。
      nacosServer:
        # EDAS微服務空間ID。
        namespace: cn-hangzhou:demo
        group: demo_group
      # 同步策略。
      strategy:
        syncPolicy: Always # Always / IfAbsent,當策略為IfAbsent時,當被同步側存在配置時,跳過同步行為。
        syncDirection: server2cluster # cluster2server 表示nacos server同步到K8s中。
        syncDeletion: true # 同步刪除配置操作。
  3. 執行以下命令,創建DynamicConfiguration資源。

    kubectl apply -f dc2.yaml

    日志顯示以下信息,表明DynamicConfiguration已成功創建。

    dynamicconfiguration.nacos.io/demo2 created
  4. 執行以下命令,查看Demo部署狀態。

    kubectl get dc -A

    日志顯示以下信息,表明Demo已成功部署。

    NAMESPACE   NAME                            PHASE     AGE
    default     demo                            succeed   19m
    default     demo2                           succeed   9s
  5. 創建成功后,執行以下命令,集群內出現一個存放著同步配置信息的同名ConfigMap。

    kubectl get cm | grep demo2
    demo2                                             1      38s
  6. 執行以下命令,查看集群內的ConfigMap。

    kubectl get cm demo2 -oyaml

    可以看到目前的ConfigMap配置內容如下所示:

    apiVersion: v1
    data:
      DEMO_JVM_CONFIG: -Xmx1g -Xms1g
    kind: ConfigMap
    metadata:
      creationTimestamp: "2023-11-08T12:08:42Z"
      labels:
        nacos.io/owned-by-dc: demo2
      name: demo2
      namespace: default
      ownerReferences:
      - apiVersion: nacos.io/v1
        blockOwnerDeletion: true
        controller: true
        kind: DynamicConfiguration
        name: demo2
        uid: 7a94527d-c8e5-4ebe-b2df-25448a3e****
      resourceVersion: "138354722"
      uid: a3437c94-5304-41b2-a2ad-15cf090b****
  7. 在EDAS控制臺修改配置內容后發布。

    image.png

  8. 執行以下命令,查看集群內的ConfigMap。

    kubectl get cm demo2 -oyaml

    可以看到配置已同步修改成功。

    apiVersion: v1
    data:
      DEMO_JVM_CONFIG: -Xmx2g -Xms2g
    kind: ConfigMap
    metadata:
      creationTimestamp: "2023-11-08T12:08:42Z"
      labels:
        nacos.io/owned-by-dc: demo2
      name: demo2
      namespace: default
      ownerReferences:
      - apiVersion: nacos.io/v1
        blockOwnerDeletion: true
        controller: true
        kind: DynamicConfiguration
        name: demo2
        uid: 7a94527d-c8e5-4ebe-b2df-25448a3e****
      resourceVersion: "138367066"
      uid: a3437c94-5304-41b2-a2ad-15cf090b****

相關文檔

  • 在EDAS控制臺創建配置的具體操作,請參見創建配置

  • 該功能的開源版本,請參見開源版本