Skip to main content
此產品有較新版本可以使用。
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

升級Astra Control Center

貢獻者

若要升級Astra Control Center、請從NetApp支援網站下載安裝套件、並完成以下指示、以升級您環境中的Astra Control Center元件。您可以使用此程序、在連線網際網路或無線環境中升級Astra Control Center。

您需要的產品
關於這項工作

Astra Control Center升級程序會引導您完成下列高層級步驟:

重要 請勿在整個升級過程中執行下列命令、以免刪除所有Astra Control Center Pod:「kubecl DELETE -f Astra _control_center_oper_deploy。yaml」
提示 當排程、備份和快照未執行時、請在維護期間執行升級。
註 如果您使用的是Red Hat的Podman、而非Docker Engine、則可使用Podman命令來取代Docker命令。

下載Astra Control Center套裝組合

  1. 請從下載Astra Control Center升級套裝組合(「Astra控制中心-[版本].tar.gz」) "NetApp 支援網站"

  2. (可選)使用以下命令驗證套件的簽名:

    openssl dgst -sha256 -verify astra-control-center[version].pub -signature <astra-control-center[version].sig astra-control-center[version].tar.gz

解壓縮套件並變更目錄

  1. 擷取影像:

    tar -vxzf astra-control-center-[version].tar.gz
  2. 變更至Astra目錄。

    cd astra-control-center-[version]

將映像新增至本機登錄

  1. 將Astra Control Center映像目錄中的檔案新增至本機登錄。

    註 請參閱以下自動載入影像的範例指令碼。
    1. 登入Docker登錄:

      docker login [your_registry_path]
    2. 將影像載入Docker。

    3. 標記影像。

    4. [Subforte_image_local_register_push]將映像推送到本機登錄。

      export REGISTRY=[your_registry_path]
      for astraImageFile in $(ls images/*.tar)
        # Load to local cache. And store the name of the loaded image trimming the 'Loaded images: '
        do astraImage=$(docker load --input ${astraImageFile} | sed 's/Loaded image: //')
        astraImage=$(echo ${astraImage} | sed 's!localhost/!!')
        # Tag with local image repo.
        docker tag ${astraImage} ${REGISTRY}/${astraImage}
        # Push to the local repo.
        docker push ${REGISTRY}/${astraImage}
      done

安裝更新的Astra Control Center操作員

  1. 編輯Astra Control Center營運者部署yaml(「Astra _control_center_operer_deploy」、以參照您的本機登錄和機密。

    vim astra_control_center_operator_deploy.yaml
    1. 如果您使用需要驗證的登錄、請將預設行「imagePullSecrets:[]」改為:

      imagePullSecrets:
      - name: <name_of_secret_with_creds_to_local_registry>
    2. 將「kube-RBAC代理」映像的「[your _register_path]」變更為您將映像推入的登錄路徑 上一步

    3. 將「acc oper-manager-manager」映像的「[your _register_path]」變更為您將映像推入的登錄路徑 上一步

    4. 將下列值新增至「env」區段:

      - name: ACCOP_HELM_UPGRADETIMEOUT
        value: 300m
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        labels:
          control-plane: controller-manager
        name: acc-operator-controller-manager
        namespace: netapp-acc-operator
      spec:
        replicas: 1
        selector:
          matchLabels:
            control-plane: controller-manager
        template:
          metadata:
            labels:
              control-plane: controller-manager
          spec:
            containers:
            - args:
              - --secure-listen-address=0.0.0.0:8443
              - --upstream=http://127.0.0.1:8080/
              - --logtostderr=true
              - --v=10
              image: [your_registry_path]/kube-rbac-proxy:v4.8.0
              name: kube-rbac-proxy
              ports:
              - containerPort: 8443
                name: https
            - args:
              - --health-probe-bind-address=:8081
              - --metrics-bind-address=127.0.0.1:8080
              - --leader-elect
              command:
              - /manager
              env:
              - name: ACCOP_LOG_LEVEL
                value: "2"
              - name: ACCOP_HELM_UPGRADETIMEOUT
                value: 300m
              image: [your_registry_path]/acc-operator:[version x.y.z]
              imagePullPolicy: IfNotPresent
            imagePullSecrets: []
  2. 安裝更新的Astra Control Center操作員:

    kubectl apply -f astra_control_center_operator_deploy.yaml

    回應範例:

    namespace/netapp-acc-operator unchanged
    customresourcedefinition.apiextensions.k8s.io/astracontrolcenters.astra.netapp.io configured
    role.rbac.authorization.k8s.io/acc-operator-leader-election-role unchanged
    clusterrole.rbac.authorization.k8s.io/acc-operator-manager-role configured
    clusterrole.rbac.authorization.k8s.io/acc-operator-metrics-reader unchanged
    clusterrole.rbac.authorization.k8s.io/acc-operator-proxy-role unchanged
    rolebinding.rbac.authorization.k8s.io/acc-operator-leader-election-rolebinding unchanged
    clusterrolebinding.rbac.authorization.k8s.io/acc-operator-manager-rolebinding configured
    clusterrolebinding.rbac.authorization.k8s.io/acc-operator-proxy-rolebinding unchanged
    configmap/acc-operator-manager-config unchanged
    service/acc-operator-controller-manager-metrics-service unchanged
    deployment.apps/acc-operator-controller-manager configured

升級Astra Control Center

  1. 編輯Astra Control Center自訂資源(CR)(「Astra control_center_min.yaml」)、並將Astra版本(「'astraVersion」位於「Pec」內)編號變更為最新版本:

    kubectl edit acc -n [netapp-acc or custom namespace]
    註 您的登錄路徑必須符合您在中推送映像的登錄路徑 上一步
  2. 在Astra Control Center CR的「Pec」內的「additionalValues」中新增下列行:

    additionalValues:
        nautilus:
          startupProbe:
            periodSeconds: 30
            failureThreshold: 600
  3. 執行下列其中一項:

    1. 如果您沒有自己的IngressController或Ingressal、而且一直使用Astra Control Center搭配Traefik閘道做為負載平衡器類型服務、而且想要繼續進行該設定、請指定另一個欄位「ingressType」(如果尚未出現)、並將其設為「AccTraefik」。

      ingressType: AccTraefik
    2. 如果您想要切換至預設Astra控制中心一般入侵部署、請提供您自己的入侵控制器/入侵設定(TLS終止等)、開啟通往Astra控制中心的路由、並將「擷取類型」設為「一般」。

      ingressType: Generic
      提示 如果您省略此欄位、程序就會變成一般部署。如果您不想要一般部署、請務必新增欄位。
  4. (可選)驗證Pod是否終止並再次可用:

    watch kubectl get po -n [netapp-acc or custom namespace]
  5. 等待Astra狀態條件指示升級已完成且準備就緒:

    kubectl get -o yaml -n [netapp-acc or custom namespace] astracontrolcenters.astra.netapp.io astra

    回應:

    conditions:
      - lastTransitionTime: "2021-10-25T18:49:26Z"
        message: Astra is deployed
        reason: Complete
        status: "True"
        type: Ready
      - lastTransitionTime: "2021-10-25T18:49:26Z"
        message: Upgrading succeeded.
        reason: Complete
        status: "False"
        type: Upgrading
  6. 重新登入、確認所有託管叢集和應用程式仍存在且受到保護。

  7. 如果營運者未更新Cert管理程式、請升級協力廠商服務、接著再升級。

升級協力廠商服務(選用)

在先前的升級步驟中、不會升級協力廠商服務Traefik和Cert Manager。您可以選擇使用本文所述的程序來升級、或是在系統需要時保留現有的服務版本。

  • * Traefik*:依預設、Astra Control Center會管理Traefik部署的生命週期。將「externalTraefik」設為「假」(預設)表示系統中不存在外部Traefik、而Traefik則由Astra Control Center安裝及管理。在這種情況下、「externalTraefik」設定為「假」。

    另一方面、如果您有自己的Traefik部署、請將「externalTraefik」設為「true」。在這種情況下、除非將「shouldUpgrade」設為「true」、否則您將維持部署、Astra Control Center將不會升級客戶需求日。

  • 認證管理程式:依預設、Astra Control Center會安裝認證管理程式(和CRD)、除非您將「externalCertManager」設為「true」。將「shouldUpgrade」設為「true」、讓Astra Control Center升級CRD。

如果符合下列任一條件、就會升級Traefik:

  • 外部Traefik:假或

  • externalTraefik:真實且應該升級:真。

步驟
  1. 編輯「acc:

    kubectl edit acc -n [netapp-acc or custom namespace]
  2. 視需要將「externalTraefik」欄位和「shouldUpgrade」欄位變更為「true」或「假」。

    crds:
        externalTraefik: false
        externalCertManager: false
        shouldUpgrade: false

驗證系統狀態

  1. 登入Astra Control Center。

  2. 確認您所有的託管叢集和應用程式仍存在且受到保護。

設定入口以進行負載平衡

您可以設定Kubernetes入口物件來管理外部服務存取、例如叢集中的負載平衡。

  • 預設升級使用一般入口部署。在此情況下、您也需要設定入口控制器或入口資源。

  • 如果您不想要入站控制器並想保留現有的內容、請將「擷取類型」設為「AccTraefik」。

註 如需有關「負載平衡器」和入口服務類型的其他詳細資料、請參閱 "需求"

這些步驟會因您使用的入口控制器類型而有所不同:

  • Nginx入口控制器

  • OpenShift入口控制器

您需要的產品
  • 在CR規格中、

    • 如果出現「crd.externalTraefik」、則應設定為「假」或

    • 如果“crd.externalTraefik”是真的,那麼“crd.doedUpgrade(升級)”也應該是真的。

  • 必要的 "入口控制器" 應已部署。

  • "入口等級" 應已建立對應於入口控制器的。

  • 您使用的Kubernetes版本介於v1.19和v1.21之間、甚至包括在內。

適用於Nginvin像 控制器的步驟
  1. 使用現有的秘密「安全測試證書」、或建立類型的機密 "8a637503539b25b68130b6e8003579d9" 如所述、在「NetApp-acc」(或自訂命名)命名空間中取得TLS私密金鑰和憑證 "TLS機密"

  2. 在「NetApp-acc」(或自訂命名)命名空間中、針對已過時或新架構部署入口資源:

    1. 對於已過時的架構、請遵循以下範例:

      apiVersion: extensions/v1beta1
      kind: Ingress
      metadata:
        name: ingress-acc
        namespace: [netapp-acc or custom namespace]
        annotations:
          kubernetes.io/ingress.class: nginx
      spec:
        tls:
        - hosts:
          - <ACC address>
          secretName: [tls secret name]
        rules:
        - host: [ACC address]
          http:
            paths:
            - backend:
              serviceName: traefik
              servicePort: 80
              pathType: ImplementationSpecific
    2. 如需新架構、請遵循下列範例:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: netapp-acc-ingress
      namespace: [netapp-acc or custom namespace]
    spec:
      ingressClassName: [class name for nginx controller]
      tls:
      - hosts:
        - <ACC address>
        secretName: [tls secret name]
      rules:
      - host: <ACC address>
        http:
          paths:
            - path:
              backend:
                service:
                  name: traefik
                  port:
                    number: 80
              pathType: ImplementationSpecific
OpenShift入口控制器的步驟
  1. 取得您的憑證、取得可供OpenShift路由使用的金鑰、憑證和CA檔案。

  2. 建立OpenShift路由:

    oc create route edge --service=traefik
    --port=web -n [netapp-acc or custom namespace]
    --insecure-policy=Redirect --hostname=<ACC address>
    --cert=cert.pem --key=key.pem

驗證入口設定

您可以在繼續之前驗證入口設定。

  1. 確認Traefik已從負載平衡器變更為「clusterIP(叢集IP)):

    kubectl get service traefik -n [netapp-acc or custom namespace]
  2. 驗證Traefik中的路由:

    Kubectl get ingressroute ingressroutetls -n [netapp-acc or custom namespace]
    -o yaml | grep "Host("
    註 結果應為空白。