Astra Control Center를 업그레이드합니다
Astra Control Center를 업그레이드하려면 NetApp Support 사이트에서 설치 번들을 다운로드하고 해당 지침에 따라 Astra Control Center 구성 요소를 업그레이드하십시오. 이 절차를 사용하여 인터넷에 연결되거나 공기가 연결된 환경에서 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
|
|
스케줄, 백업 및 스냅샷이 실행되고 있지 않은 경우 유지보수 창에서 업그레이드를 수행합니다. |
|
Docker Engine 대신 Red Hat의 Podman 명령을 사용하는 경우 Docker 명령 대신 Podman 명령을 사용할 수 있습니다. |
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 지원 사이트^]에서. -
(선택 사항) 다음 명령을 사용하여 번들의 서명을 확인합니다.
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
이미지를 로컬 레지스트리에 추가합니다
-
용기 엔진에 적합한 단계 시퀀스를 완료합니다.
-
Astra 디렉토리로 이동합니다.
cd acc
-
Astra Control Center 이미지 디렉토리에 있는 패키지 이미지를 로컬 레지스트리로 푸시합니다. 명령을 실행하기 전에 다음 대체 작업을 수행합니다.
-
Bundle_file을 Astra Control 번들 파일 이름으로 바꿉니다(예:
acc.manifest.yaml
)를 클릭합니다. -
my_registry를 Docker 리포지토리의 URL로 바꿉니다.
-
my_registry_user를 사용자 이름으로 바꿉니다.
-
my_registry_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_registry> 대체를 만들어 다음 스크립트를 실행합니다.
# 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
-
다음 중 하나를 수행합니다.
-
자체 IngessController 또는 Ingress가 없고 Traefik 게이트웨이와 함께 Astra Control Center를 로드 밸런서 유형 서비스로 사용하고 있으며 이 설정을 계속하려면 다른 필드를 지정하십시오
ingressType
(아직 없는 경우) 를 클릭하여 로 설정합니다AccTraefik
.ingressType: AccTraefik
-
기본 Astra Control Center 일반 수신 배포로 전환하려면 자체 IngressController/Ingress 설정(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-manager를 업데이트하지 않은 경우, 다음으로 타사 서비스를 업그레이드하십시오.
타사 서비스 업그레이드(선택 사항)
타사 서비스 Traefik 및 Cert-manager는 이전 업그레이드 단계 중에 업그레이드되지 않습니다. 여기에 설명된 절차를 사용하여 필요에 따라 업그레이드하거나 시스템에 필요한 경우 기존 서비스 버전을 유지할 수 있습니다.
-
* Traefik *: 기본적으로 Astra Control Center는 Traefik 배포의 수명 주기를 관리합니다. 설정
externalTraefik
를 선택합니다false
(기본값) 시스템에 외부 Traefik이 없고 Astra Control Center에서 Traefik을 설치 및 관리하고 있음을 나타냅니다. 이 경우externalTraefik
가 로 설정되어 있습니다false
.반면, Traefik 배포가 있는 경우 를 설정합니다
externalTraefik
를 선택합니다true
. 이 경우 구축을 유지 관리하고 Astra Control Center는 CRD를 업그레이드하지 않습니다shouldUpgrade
가 로 설정되어 있습니다true
. -
* Cert-manager *: 기본적으로 Astra Control Center는 사용자가 설정하지 않은 경우 인증서 관리자(및 CRD)를 설치합니다
externalCertManager
를 선택합니다true
. 설정shouldUpgrade
를 선택합니다true
Astra Control Center가 CRD를 업그레이드하도록 합니다.
다음 조건 중 하나라도 충족되면 Traefik이 업그레이드됩니다.
-
외부트래이픽: 거짓
-
externalTraefik: true 및 shouldUpgrade: true입니다.
-
를 편집합니다
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("
결과는 비어 있어야 합니다.