Como parte del procedimiento de actualización, debes asegurarte de que tu instalación de Kf utilice la versión más reciente del operador de Kf:
- Confirma que tu versión actual de Kf se puede actualizar a Kf 2.4.1.
- Actualiza a Kf v2.4.1.
- Actualiza las dependencias (si es necesario).
Antes de empezar
Necesitarás lo siguiente:
- Un clúster con Kf instalado.
- Acceso a una máquina con
gcloud
,kf
ykubectl
instalados.
Prepararse para la actualización
Conéctate al clúster de destino.
gcloud container clusters get-credentials CLUSTER_NAME \
--zone CLUSTER_ZONE \
--project CLUSTER_PROJECT_ID
Confirma que las versiones de la CLI de Kf y del servidor coinciden
Ejecuta kf debug
y comprueba que las versiones de la CLI de Kf y del servidor de Kf coincidan.
- La versión de la CLI aparece en
Kf Client
. - La versión del servidor Kf se indica en
kf["app.kubernetes.io/version"]
.
$ kf debug
...
Version:
Kf Client: v2.3.2
Server version: v1.20.6-gke.1000
kf["app.kubernetes.io/version"]: v2.3.2
...
Si los valores del cliente y del servidor de Kf no coinciden, pero la versión del servidor es la 2.3.x, instala la CLI de Kf 2.4.1 antes de continuar.
Si el valor del servidor Kf es anterior a la versión 2.3.x, primero debes actualizarlo de forma incremental a la versión 2.3.x para continuar.
Confirma que Kf está en buen estado antes de actualizar
Ejecuta kf doctor
para comprobar el estado de tu clúster. Asegúrate de que todas las pruebas se superen
antes de continuar.
$ kf doctor
...
=== RUN doctor/user
=== RUN doctor/user/ContainerRegistry
--- PASS: doctor/user
--- PASS: doctor/user/ContainerRegistry
...
Si ves algún mensaje FAIL
o Error: environment failed checks
, sigue las
instrucciones de la salida kf doctor
o consulta la guía de solución de problemas para resolver el problema y vuelve a intentar ejecutar el comando
hasta que se complete correctamente.
Opcionalmente, haz una copia de seguridad de los configmaps de Kf si has hecho personalizaciones.
Crea una copia de seguridad del configmap
config-defaults
ejecutando el siguiente comando:kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
Crea una copia de seguridad del configmap
config-secrets
ejecutando el siguiente comando:kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
Actualizar el operador de Kf
El operador Kf se lanzó por primera vez como parte de las versiones 2.4.0:
Si ya has instalado el operador Kf como parte de la instalación de la versión 2.4.0, solo tienes que actualizarlo como parte de la actualización a la versión 2.4.1.
Consulta Actualizar el operador Kf.
Si vas a actualizar desde la versión 2.3.2, debes instalar la versión 2.4.1 del operador de Kf para actualizar a Kf gestionado por el operador.
Consulta Instalar el operador de Kf.
Actualizar el operador de Kf actual
El operador de Kf realiza las actualizaciones por ti.
Aplica el archivo yaml del operador:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
Instalar el operador de Kf por primera vez
Sigue estos pasos para actualizar a Kf gestionado por el operador.
Aplica el archivo yaml del operador:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
Elige entre usar los valores predeterminados o conservar las personalizaciones:
Prepara
kfsystem.yaml
para la actualización con los valores predeterminados:Descarga el archivo
kfsystem.yaml
, rellena las variables que aparecen a continuación y, a continuación, ejecuta los comandos en el mismo directorio que el archivo para preparar automáticamentekfsystem.yaml
para la actualización.export CLUSTER_PROJECT_ID=YOUR_PROJECT_ID export CLUSTER_NAME=YOUR_CLUSTER_NAME export CONTAINER_REGISTRY=YOUR_CLUSTER_COMPUTE_REGION-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME} kubectl apply -f kfsystem.yaml kubectl patch \ kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': true, 'config': {'spaceContainerRegistry': '${CONTAINER_REGISTRY}', 'secrets':{'workloadidentity':{'googleserviceaccount':'${CLUSTER_NAME}-sa', 'googleprojectid':'${CLUSTER_PROJECT_ID}'}}}}}]"
Prepara
kfsystem.yaml
la actualización sin perder las personalizaciones:Descarga el archivo
kfsystem.yaml
.Crea una copia de seguridad del configmap
config-defaults
ejecutando el siguiente comando:kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
Crea una copia de seguridad del configmap
config-secrets
ejecutando el siguiente comando:kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
Inspecciona los configmaps config-defaults y config-secrets actuales, y busca los ajustes correspondientes en
kfsystem.yaml
.Copia los ajustes de
config-secrets
yconfig-defaults
. Todos los ajustes deconfig-secrets
yconfig-defaults
se pueden encontrar enkfsystem.yaml
. El campogoogleProjectId
ahora es obligatorio.El campo
wi.googleServiceAccount
es la cuenta de servicio completa enconfig-secrets
, pero enkfsystem
se debe quitar el sufijo. Por ejemplo,${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
se convertiría en${CLUSTER_NAME}-sa
enkfsystem.yaml
.Una vez que se hayan copiado los ajustes, cambia el campo
enabled
dekfsystem
atrue
.Guarda los cambios en
kfsystem.yaml
.Configura el operador de Kf:
kubectl apply -f kfsystem.yaml
Actualizar las dependencias de Kf
Actualizar Tekton:
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.23.0/release.yaml"
Actualiza Cloud Service Mesh:
- Sigue los pasos que se indican en la guía de actualización de Cloud Service Mesh 1.9.
Actualiza Config Connector.
Descarga el archivo tar del operador de Config Connector necesario.
Extrae el archivo tar.
tar zxvf release-bundle.tar.gz
Instala el operador de Config Connector en tu clúster.
kubectl apply -f operator-system/configconnector-operator.yaml
Configura el operador de Config Connector si es la primera vez que instalas Config Connector.
Copia el siguiente código YAML en un archivo llamado
.configconnector.yaml
:# configconnector.yaml apiVersion: core.cnrm.cloud.google.com/v1beta1 kind: ConfigConnector metadata: # the name is restricted to ensure that there is only one # ConfigConnector resource installed in your cluster name: configconnector.core.cnrm.cloud.google.com spec: mode: cluster googleServiceAccount: "KF_SERVICE_ACCOUNT_NAME" # Replace with the full service account resolved from ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
Aplica la configuración a tu clúster.
kubectl apply -f configconnector.yaml
Verifica que Config Connector esté completamente instalado antes de continuar.
Config Connector ejecuta todos sus componentes en un espacio de nombres llamado
cnrm-system
. Para comprobar que los pods estén listos, ejecuta el siguiente comando:kubectl wait -n cnrm-system --for=condition=Ready pod --all
Si Config Connector se ha instalado correctamente, el resultado será similar al siguiente:
pod/cnrm-controller-manager-0 condition met
Configura Workload Identity si vas a instalar Config Connector por primera vez.
kubectl annotate serviceaccount \ --namespace cnrm-system \ --overwrite \ cnrm-controller-manager \ iam.gke.io/gcp-service-account=${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
Actualizar a la CLI de Kf 2.4.1
Instala la CLI:
Linux
Este comando instala la CLI de Kf para todos los usuarios del sistema. Sigue las instrucciones de la pestaña Cloud Shell para instalarlo solo para ti.
gcloud storage cp gs://kf-releases/v2.4.1/kf-linux /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Mac
Este comando instala
kf
para todos los usuarios del sistema.gcloud storage cp gs://kf-releases/v2.4.1/kf-darwin /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Cloud Shell
Este comando instala
kf
en tu instancia de Cloud Shell si usasbash
. Si usas otro shell, es posible que tengas que modificar las instrucciones.mkdir -p ~/bin
gcloud storage cp gs://kf-releases/v2.4.1/kf-linux ~/bin/kf
chmod a+x ~/bin/kf
echo "export PATH=$HOME/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
Windows
De esta forma, se descarga
kf
en el directorio actual. Añádela a la ruta si quieres llamarla desde cualquier otro directorio que no sea el actual.gcloud storage cp gs://kf-releases/v2.4.1/kf-windows.exe kf.exe
Valida que las versiones de la CLI de Kf y del servidor de Kf coincidan:
- La versión de la CLI aparece en
Kf Client
. - La versión del servidor Kf se indica en
kf["app.kubernetes.io/version"]
.
$ kf debug ... Version: Kf Client: v2.4.1 Server version: v1.20.6-gke.1000 kf["app.kubernetes.io/version"]: v2.4.1 ...
- La versión de la CLI aparece en
Verificar que Kf se ha actualizado correctamente
Si es la primera vez que instalas el operador Kf, confirma que se ha instalado:
kubectl get deployment -n appdevexperience appdevexperience-operator
Si no ves el operador como en el ejemplo de salida que se muestra a continuación, consulta los pasos para instalar el operador Kf por primera vez.
NAME READY UP-TO-DATE AVAILABLE AGE appdevexperience-operator 1/1 1 1 1h
Ejecuta
doctor
para asegurarte de que la versión recién instalada funciona correctamente:kf doctor --retries=20
El comando ejecutará comprobaciones del clúster varias veces. Es normal que algunos intentos fallen mientras se inician los nuevos controladores.
Si el comando falla y aparece el mensaje
Error: environment failed checks
, sigue las instrucciones del resultadodoctor
para solucionar el problema y vuelve a ejecutar el comando hasta que se complete correctamente.Si ha personalizado
config-defaults
oconfig-secrets
, compruebe que se han aplicado:Compara el archivo
config-defaults-backup.yaml
conkubectl diff -f config-defaults-backup.yaml
para asegurarte de que el clúster sigue configurado correctamente.Por ejemplo, si conservas todos los cambios de tu versión antigua de Kf y apruebas el uso de un nuevo paquete de compilación incluido en la siguiente versión de Kf:
$ kubectl diff -f config-defaults-backup.yaml diff -u -N /tmp/LIVE/v1.ConfigMap.kf.config-defaults /tmp/MERGED/v1.ConfigMap.kf.config-defaults --- /tmp/LIVE/v1.ConfigMap.kf.config-defaults +++ /tmp/MERGED/v1.ConfigMap.kf.config-defaults @@ -131,6 +131,8 @@ enable_route_services: false spaceBuildpacksV2: | - - name: new_buildpack - url: https://github.com/cloudfoundry/new-buildpack - name: staticfile_buildpack url: https://github.com/cloudfoundry/staticfile-buildpack - name: java_buildpack exit status 1
Si se superan los pasos de verificación, significa que el clúster se ha actualizado correctamente. Si tienes algún problema, consulta la página de asistencia para obtener ayuda.