升級Astra Control Center
若要升級 Astra Control Center,請從 NetApp 支援網站下載安裝套件,然後完成以下指示來升級您環境中的 Astra Control Center 元件。您可以使用此程序、在連線網際網路或無線環境中升級Astra Control Center。
-
確保所有叢集操作員都處於健全狀態且可用。
kubectl get clusteroperators
-
確保所有API服務都處於健全狀態且可用。
kubectl get apiservices
-
登出您的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套裝組合
-
下載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:支援網站)。 -
(可選)使用以下命令驗證套件的簽名:
openssl dgst -sha256 -verify AstraControlCenter-public.pub -signature astra-control-center-[version].tar.gz.sig astra-control-center-[version].tar.gz
解壓縮套件並變更目錄
-
擷取影像:
tar -vxzf astra-control-center-[version].tar.gz
將映像新增至本機登錄
-
為您的Container引擎完成適當的步驟順序:
-
變更至Astra目錄:
cd acc
-
[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 login [your_registry_path]
-
執行下列指令碼、依照註解中的說明進行<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操作員
-
變更目錄:
cd manifests
-
編輯Astra Control Center營運者部署yaml (
astra_control_center_operator_deploy.yaml
)以參考您的本機登錄和機密。vim astra_control_center_operator_deploy.yaml
-
如果您使用需要驗證的登錄、請取代的預設行
imagePullSecrets: []
提供下列功能:imagePullSecrets: - name: <name_of_secret_with_creds_to_local_registry>
-
變更
[your_registry_path]
適用於kube-rbac-proxy
映像到您在中推入映像的登錄路徑 上一步。 -
變更
[your_registry_path]
適用於acc-operator-controller-manager
映像到您在中推入映像的登錄路徑 上一步。 -
將下列值新增至
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: []
-
-
安裝更新的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
-
確認Pod正在執行:
kubectl get pods -n netapp-acc-operator
升級Astra Control Center
-
編輯Astra Control Center自訂資源(CR) (
astra_control_center_min.yaml
)並變更Astra版本 (astraVersion
內部Spec
)最新編號:kubectl edit acc -n [netapp-acc or custom namespace]
您的登錄路徑必須符合您在中推送映像的登錄路徑 上一步。 -
在中新增下列行
additionalValues
內部Spec
在Astra Control Center CR:additionalValues: nautilus: startupProbe: periodSeconds: 30 failureThreshold: 600
-
執行下列其中一項:
-
如果您沒有自己的IngresController或Ingreted、而且一直使用Astra Control Center及其Traefik閘道做為負載平衡器類型服務、而且想要繼續進行該設定、請指定另一個欄位
ingressType
(如果尚未顯示)、並將其設為AccTraefik
。ingressType: AccTraefik
-
如果您想切換至預設的Astra Control Center一般入侵部署、請提供您自己的IngresController /入侵設定(TLS終止等)、開啟通往Astra Control Center的路由、然後設定
ingressType
至Generic
。ingressType: Generic
如果您省略此欄位、程序就會變成一般部署。如果您不想要一般部署、請務必新增欄位。
-
-
(可選)驗證Pod是否終止並再次可用:
watch kubectl get po -n [netapp-acc or custom namespace]
-
等待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
-
重新登入、確認所有託管叢集和應用程式仍存在且受到保護。
-
如果營運者未更新Cert管理程式、請升級協力廠商服務、接著再升級。
升級協力廠商服務(選用)
在先前的升級步驟中、不會升級協力廠商服務Traefik和Cert Manager。您可以選擇使用本文所述的程序來升級、或是在系統需要時保留現有的服務版本。
-
* Traefik*:依預設、Astra Control Center會管理Traefik部署的生命週期。設定
externalTraefik
至false
(預設)表示系統中不存在外部Traefik、而Traefik則由Astra Control Center安裝及管理。在此案例中、externalTraefik
設為false
。另一方面、如果您有自己的Traefik部署、請設定
externalTraefik
至true
。在這種情況下、您必須維護部署、否則Astra Control Center將不會升級客戶需求日、除非shouldUpgrade
設為true
。 -
* Cert管理程式*:依預設、Astra Control Center會安裝認證管理程式(和客戶需求日)、除非您設定
externalCertManager
至true
。設定shouldUpgrade
至true
若要讓Astra控制中心升級客戶需求日。
如果符合下列任一條件、就會升級Traefik:
-
外部Traefik:錯
-
externalTraefik:真實且應該升級:真。
-
編輯
acc
CR:kubectl edit acc -n [netapp-acc or custom namespace]
-
變更
externalTraefik
欄位和shouldUpgrade
欄位true
或false
視需要而定。crds: externalTraefik: false externalCertManager: false shouldUpgrade: false
驗證系統狀態
-
登入Astra Control Center。
-
確認您所有的託管叢集和應用程式仍存在且受到保護。
設定入口以進行負載平衡
您可以設定Kubernetes入口物件來管理外部服務存取、例如叢集中的負載平衡。
-
預設升級使用一般入口部署。在此情況下、您也需要設定入口控制器或入口資源。
-
如果您不想要入口控制器、而且想保留現有的內容、請設定
ingressType
至AccTraefik
。
如需有關「負載平衡器」和入口服務類型的其他詳細資料、請參閱 "需求"。 |
這些步驟會因您使用的入口控制器類型而有所不同:
-
Nginx入口控制器
-
OpenShift入口控制器
-
使用現有的秘密
secure-testing-cert
或建立類型的機密[kubernetes.io/tls
]用於中的TLS私密金鑰和憑證netapp-acc
(或自訂命名)命名空間、如所述 "TLS機密"。 -
在中部署入口資源
netapp-acc
(或自訂命名)命名空間、適用於已過時或新架構:-
對於已過時的架構、請遵循以下範例:
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
-
如需新架構、請遵循下列範例:
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路由使用的金鑰、憑證和CA檔案。
-
建立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
驗證入口設定
您可以在繼續之前驗證入口設定。
-
確定Traefik已變更為
clusterIP
從負載平衡器:kubectl get service traefik -n [netapp-acc or custom namespace]
-
驗證Traefik中的路由:
Kubectl get ingressroute ingressroutetls -n [netapp-acc or custom namespace] -o yaml | grep "Host("
結果應為空白。