Astra Control Center をアップグレードします
Astra Control Center をアップグレードするには、ネットアップサポートサイトからインストールバンドルをダウンロードし、以下の手順を実行して、環境内の Astra Control Center コンポーネントをアップグレードします。この手順を使用して、インターネット接続環境またはエアギャップ環境の Astra コントロールセンターをアップグレードできます。
-
"アップグレードを開始する前に、環境が Astra Control Center 導入の最小要件を満たしていることを確認します"。
-
すべてのクラスタオペレータが正常な状態であり、使用可能であることを確認します。
OpenShift の例:
oc get clusteroperators
-
すべての API サービスが正常な状態であり、使用可能であることを確認します。
OpenShift の例:
oc get apiservices
-
Astra Control Center からログアウトします。
Astra Control Center のアップグレードプロセスでは、次の手順を実行できます。
すべての Astra Control Center ポッドが削除されないようにするため、アップグレードプロセス全体で次のコマンドを実行しないでください。 'kubectl delete -f Astra_control_center_deployment.yaml |
スケジュール、バックアップ、 Snapshot が実行されていないときは、メンテナンス時間内にアップグレードを実行します。 |
Docker Engine の代わりに Red Hat の Podman を使用している場合は、 Docker コマンドの代わりに Podman コマンドを使用できます。 |
Astra Control Center バンドルをダウンロードします
-
から Astra Control Center アップグレードバンドル (`Astra - control-ccenter-[version].tar.gz') をダウンロードします "ネットアップサポートサイト"。
-
(任意)次のコマンドを使用して、バンドルのシグニチャを確認します。
openssl dgst -sha256 -verify astra-control-center[version].pub -signature <astra-control-center[version].sig astra-control-center[version].tar.gz
バンドルを開梱し、ディレクトリを変更します
-
画像を抽出します。
tar -vxzf astra-control-center-[version].tar.gz
-
Astra ディレクトリに移動します。
cd astra-control-center-[version]
イメージをローカルレジストリに追加します
-
Astra Control Center イメージディレクトリ内のファイルをローカルレジストリに追加します。
以下の画像の自動ロードについては、サンプルスクリプトを参照してください。 -
Docker レジストリにログインします。
docker login [your_registry_path]
-
Docker にイメージをロードする。
-
画像にタグを付けます。
-
[[[</Z1>[</Z1>[</Z1>[</Z1>[</Z1>[</Z1>[</Z1>[</Z1></Z1></Z1>_image_local_registry_push]]]]]]]]</Z2> ローカルレジストリにイメージをプッシュ
export REGISTRY=[your_registry_path] for astraImageFile in $(ls images/*.tar) # Load to local cache. And store the name of the loaded image trimming the 'Loaded images: ' do astraImage=$(docker load --input ${astraImageFile} | sed 's/Loaded image: //') astraImage=$(echo ${astraImage} | sed 's!localhost/!!') # Tag with local image repo. docker tag ${astraImage} ${REGISTRY}/${astraImage} # Push to the local repo. docker push ${REGISTRY}/${astraImage} done
-
更新された Astra Control Center オペレータをインストールします
-
Astra Control Center オペレータの配備 YAML (`Astra_control_center_deployment.yaml ') を編集して、ローカルのレジストリと秘密を参照します。
vim astra_control_center_operator_deploy.yaml
-
認証が必要なレジストリを使用する場合は、デフォルト行の「 imagePullSecret:[] 」を次のように置き換えます。
imagePullSecrets: - name: <name_of_secret_with_creds_to_local_registry>
-
「 kube-rbac プロキシ」イメージの「 [Your_registry_path] 」を、でイメージをプッシュしたレジストリパスに変更します 前の手順。
-
「 acc-operator-controller-manager 」イメージの「 [Your_registry_path] 」を、でイメージをプッシュしたレジストリパスに変更します 前の手順。
-
「 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
Astra Control Center をアップグレードします
-
Astra Control Center カスタムリソース( CR )( 'Astra_control_center_min.yaml )を編集し、 Astra バージョン( 'Spec' の中の 'astrave) の番号を最新のものに変更します。
kubectl edit acc -n [netapp-acc or custom namespace]
レジストリパスは、のイメージをプッシュしたレジストリパスと一致する必要があります 前の手順。 -
Astra Control Center CR の 'Spec' の中にある 'additionalValues' 内に次の行を追加します
additionalValues: nautilus: startupProbe: periodSeconds: 30 failureThreshold: 600
-
次のいずれかを実行します。
-
独自の IngressController または入力がなく、トラフィックゲートウェイをロードバランサタイプサービスとして使用していて、そのセットアップを続行する場合は、別のフィールド「 ingressType 」を指定し(まだ存在しない場合)、それを「 AccTraefik 」に設定します。
ingressType: AccTraefik
-
デフォルトの Astra Control Center の一般的な入力配置に切り替える場合は、独自の IngressController/Ingress セットアップ( TLS 終端など)を指定し、 Astra Control Center へのルートを開き、「 ingressType 」を「 Generic 」に設定します。
ingressType: Generic
フィールドを省略すると、プロセスは汎用的な配置になります。汎用的な導入が不要な場合は、必ずフィールドを追加してください。
-
-
(オプション)ポッドが終了し、再び使用可能になったことを確認します。
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 によってインストールおよび管理されていることを示します。この場合、「 externalTraefik 」は「 false 」に設定されます。
一方、 Traefik を独自に導入している場合は、「 externalTraefik 」を「 true 」に設定します。この場合 ' 配置を維持して 'Astra Control Center は 'shouldUpgrade' が true' に設定されていない限り 'CRD をアップグレードしません
-
Cert-managor: デフォルトでは 'externalCertManager` を TRUE に設定しない限り 'Astra Control Center は cert-manager ( および CRD) をインストールします'shouldUpgrade' を 'true' に設定すると 'Astra Control Center が CRD をアップグレードします
次のいずれかの条件に該当する場合は、 Traefik がアップグレードされます。
-
externalTraefik : false または
-
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 」に設定します。
サービスタイプ「 LoadBalancer 」および入力の詳細については、を参照してください "要件"。 |
この手順は、使用する入力コントローラのタイプによって異なります。
-
nginx 入力コントローラ
-
OpenShift 入力コントローラ
-
CR 仕様で、
-
「 CRD .externalTraefik 」が存在する場合は、「 false 」またはに設定する必要があります
-
「 CRD.externalTraefik 」が「真」の場合、「 CRD.shoulldUpgrade 」も「真」でなければなりません。
-
-
が必要です "入力コントローラ" すでに導入されている必要があります。
-
。 "入力クラス" 入力コントローラに対応するものがすでに作成されている必要があります。
-
V1.19 と v1.21 の間で Kubernetes のバージョンを使用している。
-
既存のシークレット「 secure-testing-cert 」を使用するか、タイプのシークレットを作成します "8a637503539b25b68130b6e8003579d9" に示すように 'NetApp-acc' (またはカスタム名前の)名前空間内の TLS 秘密鍵と証明書の場合 "TLS シークレット"。
-
非推奨または新しいスキーマのいずれかの入力リソースを NetApp-acc` (またはカスタム名前付き)ネームスペースに配置します。
-
廃止されたスキーマについては、次の例を参照してください。
apiVersion: extensions/v1beta1 kind: Ingress 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
入力セットアップを確認します
入力セットアップを確認してから、続行できます。
-
Loadbalancer から 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("
結果は空である必要があります。