Actualice Astra Control Center
Para actualizar Astra Control Center, descargue el paquete de instalación desde el sitio de soporte de NetApp y complete estas instrucciones para actualizar los componentes de Astra Control Center en su entorno. Puede utilizar este procedimiento para actualizar Astra Control Center en entornos conectados a Internet o con conexión por aire.
-
Asegurarse de que todos los operadores del clúster se encuentren en estado correcto y estén disponibles.
Ejemplo de OpenShift:
oc get clusteroperators
-
Asegúrese de que todos los servicios de API están en buen estado y disponibles.
Ejemplo de OpenShift:
oc get apiservices
-
Cierre la sesión en Astra Control Center.
El proceso de actualización del Centro de control de Astra le guiará por los siguientes pasos de alto nivel:
No ejecute el siguiente comando durante todo el proceso de actualización para evitar eliminar todas las POD de Astra Control Center: kubectl delete -f astra_control_center_operator_deploy.yaml
|
Realice actualizaciones en una ventana de mantenimiento cuando no se estén ejecutando las programaciones, los backups y las snapshots. |
Los comandos de Podman se pueden utilizar en lugar de los comandos de Docker si está utilizando Podman de Red Hat en lugar de Docker Engine. |
Descargue el paquete Astra Control Center
-
Descargue el paquete de actualización de Astra Control Center (
astra-control-center-[version].tar.gz
) del "Sitio de soporte de NetApp". -
(Opcional) Use el siguiente comando para verificar la firma del paquete:
openssl dgst -sha256 -verify astra-control-center[version].pub -signature <astra-control-center[version].sig astra-control-center[version].tar.gz
Desembale el paquete y cambie el directorio
-
Extraiga las imágenes:
tar -vxzf astra-control-center-[version].tar.gz
-
Cambie al directorio Astra.
cd astra-control-center-[version]
Agregue las imágenes al registro local
-
Agregue los archivos del directorio imagen de Astra Control Center al registro local.
Consulte una secuencia de comandos de ejemplo para la carga automática de imágenes a continuación. -
Inicie sesión en su registro de Docker:
docker login [your_registry_path]
-
Cargue las imágenes en Docker.
-
Etiquete las imágenes.
-
empuje las imágenes al registro local.
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
-
Instale el operador actualizado de Astra Control Center
-
Edite la implementación del operador de Astra Control Center yaml (
astra_control_center_operator_deploy.yaml
) para referirse a su registro local y secreto.vim astra_control_center_operator_deploy.yaml
-
Si utiliza un registro que requiere autenticación, reemplace la línea predeterminada de
imagePullSecrets: []
con lo siguiente:imagePullSecrets: - name: <name_of_secret_with_creds_to_local_registry>
-
Cambiar
[your_registry_path]
para lakube-rbac-proxy
imagen a la ruta del registro en la que se insertó la imagen en un paso anterior. -
Cambiar
[your_registry_path]
para laacc-operator-controller-manager
imagen a la ruta del registro en la que se insertó la imagen en un paso anterior. -
Añada los siguientes valores a la
env
sección:- 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: []
-
-
Instale el operador actualizado de Astra Control Center:
kubectl apply -f astra_control_center_operator_deploy.yaml
Respuesta de ejemplo:
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
Actualice Astra Control Center
-
Editar el recurso personalizado de Astra Control Center (CR) (
astra_control_center_min.yaml
) Y cambie la versión Astra (astraVersion
dentro deSpec
) número a la última:kubectl edit acc -n [netapp-acc or custom namespace]
La ruta de acceso del Registro debe coincidir con la ruta de acceso del Registro en la que ha insertado las imágenes en un paso anterior. -
Añada las siguientes líneas dentro de
additionalValues
dentro deSpec
En el Centro de control de Astra CR:additionalValues: nautilus: startupProbe: periodSeconds: 30 failureThreshold: 600
-
Debe realizar una de las siguientes acciones:
-
Si no tiene su propio IngressController o Ingress y ha estado utilizando el Astra Control Center con su puerta de enlace Traefik como servicio de tipo LoadBalancer y desea continuar con esa configuración, especifique otro campo
ingressType
(si aún no está presente) y configúrelo enAccTraefik
.ingressType: AccTraefik
-
Si desea cambiar a la implementación de entrada genérica predeterminada de Astra Control Center, proporcione su propia configuración IngressController/Ingress (con terminación TLS, etc.), abra una ruta a Astra Control Center y establezca
ingressType
paraGeneric
.ingressType: Generic
Si omite el campo, el proceso se convierte en la implementación genérica. Si no desea la implementación genérica, asegúrese de agregar el campo.
-
-
(Opcional) Verifique que los POD terminan y estén disponibles de nuevo:
watch kubectl get po -n [netapp-acc or custom namespace]
-
Espere a que las condiciones de estado de Astra indiquen que la actualización está completa y lista:
kubectl get -o yaml -n [netapp-acc or custom namespace] astracontrolcenters.astra.netapp.io astra
Respuesta:
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
-
Vuelva a iniciar sesión y compruebe que todos los clústeres y aplicaciones gestionados siguen presentes y protegidos.
-
Si el operador no actualizó el gerente de cert, actualice los servicios de terceros, a continuación.
Actualizar servicios de terceros (opcional)
Los servicios de otros fabricantes Traefik y Cert-Manager no se actualizan durante los pasos de actualización anteriores. Opcionalmente, puede actualizarlos con el procedimiento descrito aquí o conservar versiones de servicio existentes si su sistema lo requiere.
-
Traefik: Por defecto, Astra Control Center gestiona el ciclo de vida de la implementación de Traefik. Ajuste
externalTraefik
parafalse
(Predeterminado) indica que no existe ninguna Traefik externa en el sistema y que Astra Control Center está instalando y gestionando Traefik. En este caso,externalTraefik
se establece enfalse
.Por otro lado, si usted tiene su propio despliegue de Traefik, set
externalTraefik
paratrue
. En este caso, usted mantiene la implementación y Astra Control Center no actualizará los CRD, a menos queshouldUpgrade
se establece entrue
. -
Cert-Manager: De forma predeterminada, Astra Control Center instala el cert-Manager (y CRD) a menos que usted establezca
externalCertManager
paratrue
. ConfiguradoshouldUpgrade
paratrue
Para que Astra Control Center actualice los CRD.
Traefik se actualiza si se cumple alguna de las siguientes condiciones:
-
ExternalTraefik: Falso OR
-
ExternalTraefik: Verdadero Y deberíldUpgrade: Verdadero.
-
Edite el
acc
CR:kubectl edit acc -n [netapp-acc or custom namespace]
-
Cambie el
externalTraefik
y lashouldUpgrade
campo para uno de los dostrue
o.false
según se necesite.crds: externalTraefik: false externalCertManager: false shouldUpgrade: false
Comprobar el estado del sistema
-
Inicie sesión en Astra Control Center.
-
Compruebe que todos los clústeres y aplicaciones gestionados siguen presentes y protegidos.
Configure la entrada para el equilibrio de carga
Puede configurar un objeto de entrada de Kubernetes que gestione el acceso externo a los servicios, como el equilibrio de carga en un clúster.
-
La actualización predeterminada utiliza la implementación de ingreso genérico. En este caso, también deberá configurar un controlador de entrada o un recurso de entrada.
-
Si no desea un controlador de entrada y desea conservar lo que ya tiene, configure
ingressType
paraAccTraefik
.
Para obtener más información sobre el tipo de servicio de "LoadBalancer" y la entrada, consulte "Requisitos". |
Los pasos varían en función del tipo de controlador de entrada que utilice:
-
Controlador de entrada nginx
-
Controlador OpenShift Ingress
-
En la especificación CR,
-
Si
crd.externalTraefik
está presente, debe estar configurado enfalse
O. -
Si
crd.externalTraefik
estrue
,crd.shouldUpgrade
también debería sertrue
.
-
-
El requerido "controlador de entrada" ya debe ponerse en marcha.
-
La "clase de entrada" ya se debe crear la correspondiente al controlador de entrada.
-
Se utilizan versiones de Kubernetes entre e incluidas v1.19 y v1.21.
-
Utilice el secreto existente
secure-testing-cert
o cree un secreto de tipo[kubernetes.io/tls
] Para una clave privada TLS y un certificado ennetapp-acc
(o nombre personalizado) como se describe en "Secretos TLS". -
Implemente un recurso de entrada en
netapp-acc
espacio de nombres (o con nombre personalizado) para un esquema obsoleto o nuevo:-
Para un esquema obsoleto, siga este ejemplo:
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
-
Para un nuevo esquema, siga este ejemplo:
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
-
-
Obtenga su certificado y consiga los archivos de clave, certificado y CA listos para su uso por la ruta OpenShift.
-
Cree la ruta 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
Compruebe la configuración de entrada
Puede verificar la configuración de entrada antes de continuar.
-
Asegúrese de que Traefik ha cambiado a.
clusterIP
Desde LoadBalancer:kubectl get service traefik -n [netapp-acc or custom namespace]
-
Verificar rutas en Traefik:
Kubectl get ingressroute ingressroutetls -n [netapp-acc or custom namespace] -o yaml | grep "Host("
El resultado debe estar vacío.