Skip to main content
本产品推出了新版本。
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

升级 Astra 控制中心

贡献者

要升级Astra控制中心、请从NetApp 支持站点 下载安装包并完成以下说明。您可以使用此操作步骤在互联网连接或通风环境中升级 Astra 控制中心。

开始之前
  • 升级之前、请参见 "操作环境要求" 确保您的环境仍满足Astra Control Center部署的最低要求。您的环境应具有以下内容:

    • 受支持的Astra三项功能版本
      要确定您正在运行的版本、请对现有Astra Control Center运行以下命令:

      kubectl get tridentversion -n trident

      请参见 "Astra Trident 文档" 从旧版本升级。

    警告 要升级到Kubernetes 1.25、您必须升级到Astra Trident 22.10 先前版本
    • 受支持的Kubbernetes分发版
      要确定您正在运行的版本、请对现有Astra Control Center运行以下命令: kubectl get nodes -o wide

    • 集群资源充足
      要确定集群资源、请在现有Asta Control Center集群中运行以下命令: kubectl describe node <node name>

    • 可用于推送和上传Astra控制中心映像的注册表

    • 默认存储类
      要确定默认存储类、请对现有Astra Control Center运行以下命令: kubectl get storageclass

  • (仅限OpenShift)确保所有集群操作员均处于运行状况良好且可用。

    kubectl get clusteroperators
  • 确保所有 API 服务均处于运行状况良好且可用。

    kubectl get apiservices
  • 在开始升级之前、请从Astra控制中心用户界面中注销。

关于此任务

Astra 控制中心升级过程将指导您完成以下高级步骤:

重要说明 请勿删除Astra Control Center运算符(例如、 kubectl delete -f astra_control_center_operator_deploy.yaml)、以避免删除Pod。
提示 如果计划,备份和快照未运行,请在维护窗口中执行升级。

下载并提取Astra控制中心

  1. 转至 "Astra Control Center产品下载页面" 页面。您可以从下拉菜单中选择所需的最新版本或其他版本。

  2. 下载包含Astra Control Center的软件包 (astra-control-center-[version].tar.gz)。

  3. (建议但可选)下载Astra控制中心的证书和签名包 (astra-control-center-certs-[version].tar.gz)以验证捆绑包的签名:

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

    此时将显示输出 Verified OK 验证成功后。

  4. 从Astra Control Center捆绑包中提取映像:

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

删除NetApp Astra kubectl插件并重新安装

您可以使用NetApp Asta kubect命令行插件将映像推送到本地Docker存储库。

  1. 确定是否已安装此插件:

    kubectl astra
  2. 执行以下操作之一:

    • 如果已安装此插件、则此命令应返回kubectl插件帮助。要删除现有版本的kubectl-Astra、请运行以下命令: delete /usr/local/bin/kubectl-astra

    • 如果此命令返回错误、则表示未安装此插件、您可以继续执行下一步以安装它。

  3. 安装插件:

    1. 列出可用的NetApp Astra kubectl插件二进制文件、并记下操作系统和CPU架构所需的文件名称:

      备注 kubectl插件库是tar包的一部分、并会解压缩到文件夹中 kubectl-astra
    ls kubectl-astra/
    1. 将正确的二进制文件移动到当前路径并重命名为 kubectl-astra

      cp kubectl-astra/<binary-name> /usr/local/bin/kubectl-astra

将映像添加到本地注册表

  1. 为容器引擎完成相应的步骤顺序:

Docker
  1. 更改为tarball的根目录。您应看到此文件和目录:

    acc.manifest.bundle.yaml
    acc/

  2. 将Astra Control Center映像目录中的软件包映像推送到本地注册表。在运行之前、请进行以下替换 push-images 命令:

    • 将<BUNDLE_FILE> 替换为Astra Control捆绑包文件的名称 (acc.manifest.bundle.yaml)。

    • 将<MY_FULL_REGISTRY_PATH> 替换为Docker存储库的URL;例如 "https://<docker-registry>"

    • 将<MY_REGISTRY_USER> 替换为用户名。

    • 将<MY_REGISTRY_TOKEN> 替换为注册表的授权令牌。

      kubectl astra packages push-images -m <BUNDLE_FILE> -r <MY_FULL_REGISTRY_PATH> -u <MY_REGISTRY_USER> -p <MY_REGISTRY_TOKEN>
Podman
  1. 更改为tarball的根目录。您应看到此文件和目录:

    acc.manifest.bundle.yaml
    acc/

  2. 登录到注册表:

    podman login <YOUR_REGISTRY>
  3. 准备并运行以下针对您使用的Podman版本自定义的脚本之一。将<MY_FULL_REGISTRY_PATH> 替换为包含任何子目录的存储库的URL。

    Podman 4
    export REGISTRY=<MY_FULL_REGISTRY_PATH>
    export PACKAGENAME=acc
    export PACKAGEVERSION=23.04.2-7
    export DIRECTORYNAME=acc
    for astraImageFile in $(ls ${DIRECTORYNAME}/images/*.tar) ; do
    astraImage=$(podman load --input ${astraImageFile} | sed 's/Loaded image: //')
    astraImageNoPath=$(echo ${astraImage} | sed 's:.*/::')
    podman tag ${astraImageNoPath} ${REGISTRY}/netapp/astra/${PACKAGENAME}/${PACKAGEVERSION}/${astraImageNoPath}
    podman push ${REGISTRY}/netapp/astra/${PACKAGENAME}/${PACKAGEVERSION}/${astraImageNoPath}
    done
    Podman 3
    export REGISTRY=<MY_FULL_REGISTRY_PATH>
    export PACKAGENAME=acc
    export PACKAGEVERSION=23.04.2-7
    export DIRECTORYNAME=acc
    for astraImageFile in $(ls ${DIRECTORYNAME}/images/*.tar) ; do
    astraImage=$(podman load --input ${astraImageFile} | sed 's/Loaded image: //')
    astraImageNoPath=$(echo ${astraImage} | sed 's:.*/::')
    podman tag ${astraImageNoPath} ${REGISTRY}/netapp/astra/${PACKAGENAME}/${PACKAGEVERSION}/${astraImageNoPath}
    podman push ${REGISTRY}/netapp/astra/${PACKAGENAME}/${PACKAGEVERSION}/${astraImageNoPath}
    done
    备注 根据您的注册表配置、此脚本创建的映像路径应类似于以下内容:
    https://netappdownloads.jfrog.io/docker-astra-control-prod/netapp/astra/acc/23.04.2-7/image:version

安装更新后的 Astra 控制中心操作员

  1. 更改目录:

    cd manifests
  2. 编辑Astra控制中心操作员部署YAML (astra_control_center_operator_deploy.yaml)以引用您的本地注册表和密钥。

    vim astra_control_center_operator_deploy.yaml
    1. 如果您使用的注册表需要身份验证、请替换或编辑的默认行 imagePullSecrets: [] 使用以下命令:

      imagePullSecrets: [{name: astra-registry-cred}]
    2. 更改 [your_registry_path]kube-rbac-proxy 将映像推送到注册表路径中 上一步

    3. 更改 [your_registry_path]acc-operator 将映像推送到注册表路径中 上一步

    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
        strategy:
          type: Recreate
        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
              env:
              - name: ACCOP_LOG_LEVEL
                value: "2"
              - name: ACCOP_HELM_UPGRADETIMEOUT
                value: 300m
              image: [your_registry_path]/acc-operator:23.04.36
              imagePullPolicy: IfNotPresent
              livenessProbe:
                httpGet:
                  path: /healthz
                  port: 8081
                initialDelaySeconds: 15
                periodSeconds: 20
              name: manager
              readinessProbe:
                httpGet:
                  path: /readyz
                  port: 8081
                initialDelaySeconds: 5
                periodSeconds: 10
              resources:
                limits:
                  cpu: 300m
                  memory: 750Mi
                requests:
                  cpu: 100m
                  memory: 75Mi
              securityContext:
                allowPrivilegeEscalation: false
            imagePullSecrets: []
            securityContext:
              runAsUser: 65532
            terminationGracePeriodSeconds: 10
  3. 安装更新后的 Astra 控制中心操作员:

    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 控制中心

  1. 编辑Astra Control Center自定义资源(CR):

    kubectl edit AstraControlCenter -n [netapp-acc or custom namespace]
  2. 更改Astra版本号 (astraVersion 在中 spec)升级到要升级到的版本:

    spec:
      accountName: "Example"
      astraVersion: "[Version number]"
  3. 验证您的映像注册表路径是否与您在中将映像推送到的注册表路径匹配 上一步。更新 imageRegistry 在中 spec 注册表自上次安装以来是否发生了更改。

      imageRegistry:
        name: "[your_registry_path]"
  4. 将以下内容添加到 crds 中的配置 spec

    crds:
      shouldUpgrade: true
  5. 在中添加以下行 additionalValues 在中 spec 在Astra控制中心CR中:

    additionalValues:
        nautilus:
          startupProbe:
            periodSeconds: 30
            failureThreshold: 600
  6. 保存并退出文件编辑器。此时将应用所做的更改、并开始升级。

  7. (可选)验证 Pod 是否终止并重新可用:

    watch kubectl get pods -n [netapp-acc or custom namespace]
  8. 等待Astra Control状态条件指示升级已完成且准备就绪 (True):

    kubectl get AstraControlCenter -n [netapp-acc or custom namespace]

    响应:

    NAME    UUID                                      VERSION     ADDRESS         READY
    astra   9aa5fdae-4214-4cb7-9976-5d8b4c0ce27f      23.04.2-7   10.111.111.111  True
    备注 要在操作期间监控升级状态、请运行以下命令: kubectl get AstraControlCenter -o yaml -n [netapp-acc or custom namespace]
    备注 要检查Astra控制中心操作员日志、请运行以下命令:
    kubectl logs deploy/acc-operator-controller-manager -n netapp-acc-operator -c manager -f

验证系统状态

  1. 登录到 Astra 控制中心。

  2. 验证此版本是否已升级。请参见用户界面中的*支持*页面。

  3. 验证所有受管集群和应用程序是否仍存在并受到保护。