升级 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控制中心
-
转至 "Astra Control Center产品下载页面" 页面。您可以从下拉菜单中选择所需的最新版本或其他版本。
-
下载包含Astra Control Center的软件包 (
astra-control-center-[version].tar.gz
)。 -
(建议但可选)下载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
验证成功后。 -
从Astra Control Center捆绑包中提取映像:
tar -vxzf astra-control-center-[version].tar.gz
删除NetApp Astra kubectl插件并重新安装
您可以使用NetApp Asta kubect命令行插件将映像推送到本地Docker存储库。
-
确定是否已安装此插件:
kubectl astra
-
执行以下操作之一:
-
如果已安装此插件、则此命令应返回kubectl插件帮助。要删除现有版本的kubectl-Astra、请运行以下命令:
delete /usr/local/bin/kubectl-astra
。 -
如果此命令返回错误、则表示未安装此插件、您可以继续执行下一步以安装它。
-
-
安装插件:
-
列出可用的NetApp Astra kubectl插件二进制文件、并记下操作系统和CPU架构所需的文件名称:
kubectl插件库是tar包的一部分、并会解压缩到文件夹中 kubectl-astra
。
ls kubectl-astra/
-
将正确的二进制文件移动到当前路径并重命名为
kubectl-astra
:cp kubectl-astra/<binary-name> /usr/local/bin/kubectl-astra
-
将映像添加到本地注册表
-
为容器引擎完成相应的步骤顺序:
-
更改为tarball的根目录。您应看到此文件和目录:
acc.manifest.bundle.yaml
acc/
-
将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>
-
-
更改为tarball的根目录。您应看到此文件和目录:
acc.manifest.bundle.yaml
acc/
-
登录到注册表:
podman login <YOUR_REGISTRY>
-
准备并运行以下针对您使用的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 控制中心操作员
-
更改目录:
cd manifests
-
编辑Astra控制中心操作员部署YAML (
astra_control_center_operator_deploy.yaml
)以引用您的本地注册表和密钥。vim astra_control_center_operator_deploy.yaml
-
如果您使用的注册表需要身份验证、请替换或编辑的默认行
imagePullSecrets: []
使用以下命令:imagePullSecrets: [{name: astra-registry-cred}]
-
更改
[your_registry_path]
。kube-rbac-proxy
将映像推送到注册表路径中 上一步。 -
更改
[your_registry_path]
。acc-operator
将映像推送到注册表路径中 上一步。 -
将以下值添加到
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
-
-
安装更新后的 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
-
验证Pod是否正在运行:
kubectl get pods -n netapp-acc-operator
升级 Astra 控制中心
-
编辑Astra Control Center自定义资源(CR):
kubectl edit AstraControlCenter -n [netapp-acc or custom namespace]
-
更改Astra版本号 (
astraVersion
在中spec
)升级到要升级到的版本:spec: accountName: "Example" astraVersion: "[Version number]"
-
验证您的映像注册表路径是否与您在中将映像推送到的注册表路径匹配 上一步。更新
imageRegistry
在中spec
注册表自上次安装以来是否发生了更改。imageRegistry: name: "[your_registry_path]"
-
将以下内容添加到
crds
中的配置spec
:crds: shouldUpgrade: true
-
在中添加以下行
additionalValues
在中spec
在Astra控制中心CR中:additionalValues: nautilus: startupProbe: periodSeconds: 30 failureThreshold: 600
-
保存并退出文件编辑器。此时将应用所做的更改、并开始升级。
-
(可选)验证 Pod 是否终止并重新可用:
watch kubectl get pods -n [netapp-acc or custom namespace]
-
等待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
验证系统状态
-
登录到 Astra 控制中心。
-
验证此版本是否已升级。请参见用户界面中的*支持*页面。
-
验证所有受管集群和应用程序是否仍存在并受到保护。