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

升級Astra Control Center

貢獻者

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

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

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

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

下載Astra Control Center套裝組合

  1. 下載Astra Control Center升級套裝組合 (astra-control-center-[version].tar.gz)、網址為https:mysupport.netapp.com/site/products/all/details/astra-control-center/downloads-tab[NetApp Support Site(https:支援網站)。

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

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

解壓縮套件並變更目錄

  1. 擷取影像:

    tar -vxzf astra-control-center-[version].tar.gz

將映像新增至本機登錄

  1. 為您的Container引擎完成適當的步驟順序:

Docker
  1. 變更至Astra目錄:

    cd acc
  2. [Subforte_image_local_register_push]將Astra Control Center映像目錄中的套件映像推送到本機登錄。執行命令之前、請先進行下列替代:

    • 以Astra Control套件檔案名稱取代bunder_file(例如、 acc.manifest.yaml)。

    • 將my_registry取代為Docker儲存庫的URL。

    • 以使用者名稱取代my_register_user。

    • 以登錄的授權權杖取代my_register_token。

      kubectl astra packages push-images -m BUNDLE_FILE -r MY_REGISTRY -u MY_REGISTRY_USER -p MY_REGISTRY_TOKEN
Podman
  1. 登入您的登錄:

    podman login [your_registry_path]
  2. 執行下列指令碼、依照註解中的說明進行<your _inforation>替換:

    # You need to be at the root of the tarball.
    # You should see these files to confirm correct location:
    #   acc.manifest.yaml
    #   acc/
    
    # Replace <YOUR_REGISTRY> with your own registry (e.g registry.customer.com or registry.customer.com/testing, etc..)
    export REGISTRY=<YOUR_REGISTRY>
    export PACKAGENAME=acc
    export PACKAGEVERSION=22.08.1-26
    export DIRECTORYNAME=acc
    for astraImageFile in $(ls ${DIRECTORYNAME}/images/*.tar) ; do
      # Load to local cache
      astraImage=$(podman load --input ${astraImageFile} | sed 's/Loaded image(s): //')
    
      # Remove path and keep imageName.
      astraImageNoPath=$(echo ${astraImage} | sed 's:.*/::')
    
      # Tag with local image repo.
      podman tag ${astraImage} ${REGISTRY}/netapp/astra/${PACKAGENAME}/${PACKAGEVERSION}/${astraImageNoPath}
    
      # Push to the local repo.
      podman push ${REGISTRY}/netapp/astra/${PACKAGENAME}/${PACKAGEVERSION}/${astraImageNoPath}
    done

安裝更新的Astra Control Center操作員

  1. 變更目錄:

    cd manifests
  2. 編輯Astra Control Center營運者部署yaml (astra_control_center_operator_deploy.yaml)以參考您的本機登錄和機密。

    vim astra_control_center_operator_deploy.yaml
    1. 如果您使用需要驗證的登錄、請取代的預設行 imagePullSecrets: [] 提供下列功能:

      imagePullSecrets:
      - name: <name_of_secret_with_creds_to_local_registry>
    2. 變更 [your_registry_path] 適用於 kube-rbac-proxy 映像到您在中推入映像的登錄路徑 上一步

    3. 變更 [your_registry_path] 適用於 acc-operator-controller-manager 映像到您在中推入映像的登錄路徑 上一步

    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: []
  3. 安裝更新的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
  4. 確認Pod正在執行:

    kubectl get pods -n netapp-acc-operator

升級Astra Control Center

  1. 編輯Astra Control Center自訂資源(CR) (astra_control_center_min.yaml)並變更Astra版本 (astraVersion 內部 Spec)最新編號:

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

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

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

      ingressType: AccTraefik
    2. 如果您想切換至預設的Astra Control Center一般入侵部署、請提供您自己的IngresController /入侵設定(TLS終止等)、開啟通往Astra Control Center的路由、然後設定 ingressTypeGeneric

      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部署的生命週期。設定 externalTraefikfalse (預設)表示系統中不存在外部Traefik、而Traefik則由Astra Control Center安裝及管理。在此案例中、 externalTraefik 設為 false

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

  • * Cert管理程式*:依預設、Astra Control Center會安裝認證管理程式(和客戶需求日)、除非您設定 externalCertManagertrue。設定 shouldUpgradetrue 若要讓Astra控制中心升級客戶需求日。

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

  • 外部Traefik:錯

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

步驟
  1. 編輯 acc CR:

    kubectl edit acc -n [netapp-acc or custom namespace]
  2. 變更 externalTraefik 欄位和 shouldUpgrade 欄位 truefalse 視需要而定。

    crds:
        externalTraefik: false
        externalCertManager: false
        shouldUpgrade: false

驗證系統狀態

  1. 登入Astra Control Center。

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

設定入口以進行負載平衡

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

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

  • 如果您不想要入口控制器、而且想保留現有的內容、請設定 ingressTypeAccTraefik

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

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

  • Nginx入口控制器

  • OpenShift入口控制器

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

    • 如果 crd.externalTraefik 存在、應設為 false

    • 如果 crd.externalTraefiktruecrd.shouldUpgrade 也應該如此 true

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

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

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

適用於Nginvin像 控制器的步驟
  1. 使用現有的秘密 secure-testing-cert 或建立類型的機密[kubernetes.io/tls]用於中的TLS私密金鑰和憑證 netapp-acc (或自訂命名)命名空間、如所述 "TLS機密"

  2. 在中部署入口資源 netapp-acc (或自訂命名)命名空間、適用於已過時或新架構:

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

      apiVersion: extensions/v1beta1
      kind: IngressClass
      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 從負載平衡器:

    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("
    註 結果應為空白。