- v1.15 (última)
- v1.14
- v1.13
- Lista de versiones admitidas
- v1.12
- v1.11
- v1.10
- v1.9
- v1.8
- v1.7
- Versión 1.6
- v1.5
- Versión 1.4
- Versión 1.3
- v1.2
- v1.1
Versiones compatibles:
Versiones no compatibles:
Si vas a actualizar desde la versión 1.0 o 1.1 de Apigee hybrid, primero debes actualizar a la versión 1.2 antes de actualizar a la 1.3.6. Consulta las instrucciones para actualizar Apigee hybrid a la versión 1.2.
Información general sobre la actualización a la versión 1.3.6.
Los procedimientos para actualizar Apigee hybrid se organizan en las siguientes secciones:
- Preparación
- Crear y actualizar cuentas de servicio.
- Planifica los grupos de entornos.
- Copia y actualiza el archivo de anulaciones.
- Actualiza Istio y cert-manager.
- Instala la versión 1.3 del entorno de ejecución híbrido.
- Limpiar.
Requisitos previos
- Versión 1.2 de Apigee Hybrid. Si vas a actualizar desde una versión anterior, consulta las instrucciones para actualizar Apigee hybrid a la versión 1.2.
Preparación
- (Recomendado) Haz una copia de seguridad del directorio
$APIGEECTL_HOME/
de la versión 1.2. Por ejemplo:tar -czvf $APIGEECTL_HOME/../apigeectl-v1.2-backup.tar.gz $APIGEECTL_HOME
- (Recomendado) Crea una copia de seguridad de tu base de datos de Cassandra siguiendo las instrucciones de Copia de seguridad y recuperación de Cassandra.
- Actualiza tu plataforma de Kubernetes de la siguiente manera. Consulta la documentación de tu plataforma si necesitas ayuda:
Plataforma Actualizar a la versión GKE 1.15.x Anthos 1,5 AKS 1.16.x con clústeres vinculados de Anthos - Si no usas Apigee Connect en tu instalación híbrida, habilítalo.
- Comprueba si la API Apigee Connect está habilitada:
gcloud services list | grep apigeeconnect apigeeconnect.googleapis.com Apigee Connect API
- Si no lo está, habilita la API:
gcloud services enable apigeeconnect.googleapis.com --project $PROJECT_ID
Donde $PROJECT_ID es el ID de tu proyecto de Google Cloud.
-
En la línea de comandos, obtén tus credenciales de autenticación
gcloud
, como se muestra en el siguiente ejemplo:TOKEN=$(gcloud auth print-access-token)
Para comprobar que se ha rellenado el token, usa
echo
, como se muestra en el siguiente ejemplo:echo $TOKEN
Debería mostrar tu token como una cadena codificada.
Para obtener más información, consulta la descripción general de la herramienta de línea de comandos gcloud.
- Comprueba si Apigee Connect está habilitado en tu organización:
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME"
Donde $ORG_NAME es el ID de tu organización.
Si el resultado contiene lo siguiente:
"name" : "features.mart.connect.enabled", "value" : "true"
Apigee Connect está habilitado.
- Si Apigee Connect no está habilitado, asigna el rol Agente de conexión de Apigee a la cuenta de servicio del servidor de API Management sobre datos del entorno de ejecución:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:apigee-mart@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/apigeeconnect.Agent
- Habilita Apigee Connect con el siguiente comando:
curl -H "Authorization: Bearer $TOKEN" -X PUT \ -H "Content-Type: application/json" \ -d '{ "name" : "'"$ORG_NAME"'", "properties" : { "property" : [ { "name" : "features.hybrid.enabled", "value" : "true" }, { "name" : "features.mart.connect.enabled", "value" : "true" } ] } }' \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME"
Si el resultado contiene las dos propiedades siguientes, significa que Apigee Connect se ha habilitado correctamente:
{ "name": "features.mart.connect.enabled", "value": "true" }, { "name": "features.hybrid.enabled", "value": "true" }
- Comprueba si la API Apigee Connect está habilitada:
- Crea la cuenta de servicio
apigee-watcher
. Apigee Watcher es una nueva cuenta de servicio introducida en la versión 1.3. Monitoriza el sincronizador para detectar cambios a nivel de organización y aplica esos cambios para configurar el ingreso de Istio.En el directorio híbrido principal, haz lo siguiente:
./tools/create-service-account apigee-watcher ./service-accounts
- Asigna el rol Agente de tiempo de ejecución de Apigee a la cuenta de servicio de Watcher:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:apigee-watcher@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/apigee.runtimeAgent
Donde
PROJECT_ID
es el ID de tu proyecto de Google Cloud. Si las direcciones de correo de tu cuenta de servicio no siguen este patrón, sustitúyelas según corresponda.El resultado debe incluir una lista de todas las cuentas de servicio y sus roles, entre los que se incluyen los siguientes:
... - members: - serviceAccount:apigee-watcher@hybrid13rc5.iam.gserviceaccount.com role: roles/apigee.runtimeAgent ...
- Planifica tus grupos de entornos para el enrutamiento.
Apigee hybrid 1.3 gestiona el enrutamiento de la ruta base con grupos de entornos en lugar de
routingRules
. Si usasroutingRules
en tu configuración híbrida, diseña grupos de entornos para replicar tu enrutamiento.Debes crear al menos un grupo de entornos.
Consulta Acerca de los grupos de entorno.
- Actualiza el archivo de anulaciones:
- Haz una copia del archivo de anulaciones.
- Actualiza las estrofas gcp y k8sCluster.
Las siguientes propiedades de configuración se han sustituido en la versión híbrida 1.3:
- Se ha sustituido
gcpRegion
porgcp:region
- Se ha sustituido
gcpProjectID
porgcp:projectID
- Se ha sustituido
gcpProjectIDRuntime
porgcp:gcpProjectIDRuntime
- Se ha sustituido
k8sClusterName
pork8s:clusterName
- Se ha sustituido
k8sClusterRegion
pork8s:clusterRegion
Por ejemplo, sustituye la siguiente estructura:
gcpRegion: gcp region gcpProjectID: gcp project ID gcpProjectIDRuntime: gcp project ID k8sClusterName: name k8sClusterRegion: region
with:
gcp: projectID: gcp project ID region: gcp region gcpProjectIDRuntime: gcp project ID # optional. This is only required if you # want logger/metrics data to be sent in # different gcp project. k8sCluster: name: gcp project ID region: gcp region
- Se ha sustituido
- Si aún no tienes un identificador de instancia único en tu archivo de anulaciones, añade uno:
# unique identifier for this installation. 63 chars length limit instanceID: ID
Donde ID es un identificador único de esta instalación híbrida, como "
my-hybrid-131-installation
" o "acmecorp-hybrid-131
". - Añade la cuenta de servicio Watcher (
apigee-watcher
) al archivo de anulaciones:# Note: the SA should have the "Apigee Runtime Agent" role watcher: serviceAccountPath: "service account file"
- Añade la cuenta de servicio de métricas (
apigee-metrics
) al archivo de anulaciones:metrics: serviceAccountPath: "service account file"
- Actualiza la estrofa
virtualhosts:
para sustituirroutingRules
por tu grupo de entornos.-name:
Sustituye el nombre por el de tu grupo de entornos. Puedes tener varias entradas de nombre, una por cada grupo de entornos.hostAliases:[]
Elimina esta línea.- Mantén (o añade) las entradas
sslCertPath:
ysslKeyPath:
. - Elimina todas las entradas de
routingRules
.
Por ejemplo:
virtualhosts: - name: default hostAliases: - "*.acme.com" sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key routingRules: - paths: - /foo - /bar - env: my-environment
Se convierte en:
virtualhosts: - name: example-env-group sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key
- Actualiza las estrofas
mart
yconnectAgent:
.- En
mart:
, elimina las entradashostAlias:
,sslCertPath:
ysslKeyPath:
. - Añade una estrofa
connectAgent:
. - En
connectAgent:
, añade una entradaserviceAccountPath:
e indica la ruta al archivo de cuenta de servicio que tiene asignado el rol Agente de Apigee Connect (normalmente, la cuenta de servicio de MART).
Por ejemplo:
mart: hostAlias: "mart.apigee-hybrid-docs.net" serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.key
Se convierte en:
mart: serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json connectAgent: serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json
- En
Actualizar Istio y cert-manager
La versión 1.3 de Apigee hybrid requiere cert-manager v0.14.2 para gestionar y verificar certificados, y la distribución de Istio proporcionada con la versión 1.5.7 (o posterior) de Anthos Service Mesh (ASM) para crear y gestionar la pasarela de entrada de tiempo de ejecución.
Actualizar Istio 1.4.6 a ASM 1.5.7 (o una versión posterior)
- Para minimizar el tiempo de inactividad, las implementaciones de Istio y los HPA deben tener al menos dos réplicas cada uno.
Ejecuta los siguientes comandos para determinar el número de réplicas:
kubectl -n istio-system get deployments # list of deployments
kubectl -n istio-system get hpa # list of hpa
- Edita cada despliegue que tenga una sola réplica y aumenta el
replicas:
a2
o más:kubectl -n istio-system edit deployment name
Por ejemplo:
spec: progressDeadlineSeconds: 600 replicas: 2
- Edita cada HPA que tenga una sola réplica y aumenta el
minReplicas:
a2
o más:kubectl -n istio-system edit hpa name
Por ejemplo:
spec: maxReplicas: 5 minReplicas: 2
- Descarga e instala ASM siguiendo las instrucciones de instalación que se indican en el artículo Descargar e instalar ASM.
- Después de la instalación, ejecuta el comando de versión para asegurarte de que has instalado correctamente la versión 1.5.x:
./bin/istioctl version client version: 1.5.8-asm.0 apigee-mart-ingressgateway version: citadel version: 1.4.6 galley version: 1.4.6 ingressgateway version: 1.5.8-asm.0 pilot version: 1.4.6 policy version: 1.4.6 sidecar-injector version: 1.4.6 telemetry version: 1.4.6 pilot version: 1.5.8-asm.0 data plane version: 1.4.6 (1 proxies), 1.5.8-asm.0 (2 proxies)
Actualizar cert-manager
- Elimina la implementación actual de cert-manager:
kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
- Verifica tu versión de Kubernetes:
kubectl version
- Ejecuta el siguiente comando para instalar cert-manager de Jetstack:
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.14.2/cert-manager.yaml
Instalar el entorno de ejecución híbrido
- Almacena el número de la última versión en una variable:
export VERSION=$(curl -s \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/current-version.txt?ignoreCache=1)
- Comprueba que la variable se haya rellenado con un número de versión. Si quieres usar otra versión, puedes guardarla en una variable de entorno. Por ejemplo:
echo $VERSION 1.3.6
Descarga el paquete de lanzamiento para tu sistema operativo:
Mac de 64 bits:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_mac_64.tar.gz
Linux de 64 bits:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_linux_64.tar.gz
Mac de 32 bits:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_mac_32.tar.gz
Linux de 32 bits:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_linux_32.tar.gz
- Cambia el nombre del directorio
apigeectl/
actual por el de un directorio de copia de seguridad. Por ejemplo:mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/
-
Extrae el contenido del archivo gzip descargado en el directorio base híbrido. Por ejemplo:
tar xvzf filename.tar.gz -C hybrid-base-directory
cd
al directorio base.-
De forma predeterminada, el contenido de tar se expande en un directorio con la versión y la plataforma en su nombre. Por ejemplo:
./apigeectl_1.0.0-f7b96a8_linux_64
. Cambia el nombre de ese directorio aapigeectl
:mv apigeectl_1.0.0-f7b96a8_linux_64 apigeectl
- Elimina el trabajo
apigee-resources-install
deapigee-system
:kubectl -n apigee-system delete job apigee-resources-install
- Elimina el CRD anterior:
kubectl delete crd apigeetelemetries.apigee.cloud.google.com
- Actualiza la estrofa
cassandra:
de tu archivo de anulaciones con una propiedadexternalSeedHost
. Esta propiedad ayudará a que tu nueva instalación de la versión 1.3.6 híbrida utilice el mismo clúster de Kubernetes que tu instalación de la versión 1.2. Este paso solo es necesario una vez para actualizar de la versión híbrida 1.2 a la 1.3.6 (o una versión posterior).- Busca una de las direcciones IP de la instalación de Cassandra en el mismo clúster de Kubernetes en el que vas a actualizar la instalación de la versión 1.2.0.
kubectl -n namespace get pods -o wide
Donde namespace es el espacio de nombres de Apigee hybrid.
Anota la dirección IP de un nodo de Cassandra. Por ejemplo:
kubectl -n apigee get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE apigee-cassandra-0 1/1 Running 0 33d 10.68.8.24 gke-example-cluster-rc5-apigee-data-c8bf1234-09kc apigee-cassandra-1 1/1 Running 0 16d 10.68.8.33 gke-example-cluster-rc5-apigee-data-c9221ee7-10kc apigee-cassandra-2 1/1 Running 0 23h 10.68.9.11 gke-example-cluster-rc5-apigee-data-d123e456-11kc
- Añade el valor de la propiedad
externalSeedHost
:cassandra: externalSeedHost: Cassandra_node_IP
Cassandra_node_IP es la IP del nodo de Cassandra (
10.68.8.24
en el ejemplo anterior).
- Busca una de las direcciones IP de la instalación de Cassandra en el mismo clúster de Kubernetes en el que vas a actualizar la instalación de la versión 1.2.0.
- En el directorio new
apigeectl/
, ejecutaapigeectl init
,apigeectl apply
yapigeectl check-ready
:- Inicializa la versión 1.3.6 de Hybrid:
apigeectl init -f overrides_1.3.yaml
Donde overrides_1.3.yaml es el archivo overrides.yaml editado.
- En la versión híbrida 1.3, la sintaxis de la marca
--dry-run
depende de la versión dekubectl
que estés usando. Comprueba la versión dekubectl
:gcloud version
- Comprueba si hay errores con una prueba de funcionamiento:
kubectl
versión 1.17 y anteriores:apigeectl apply -f overrides_1.3.yaml --dry-run=true
kubectl
versión 1.18 y posteriores:apigeectl apply -f overrides_1.3.yaml --dry-run=client
- Aplica las anulaciones. Selecciona y sigue las instrucciones para entornos de producción o de demostración/experimentales, según tu instalación.
Producción
En los entornos de producción, debes actualizar cada componente híbrido por separado y comprobar el estado del componente actualizado antes de pasar al siguiente.
- Aplica las anulaciones para actualizar Cassandra:
apigeectl apply -f overrides_1.3.yaml --datastore
- Comprobación completada:
kubectl -n namespace get pods
Donde namespace es el espacio de nombres de Apigee hybrid.
Continúa con el siguiente paso solo cuando los pods estén listos.
- Aplica las anulaciones para actualizar los componentes de Telemetría y comprueba que se han completado:
apigeectl apply -f overrides_1.3.yaml --telemetry
kubectl -n namespace get pods
- Aplica las anulaciones para actualizar los componentes a nivel de organización (MART, Watcher y Apigee Connect) y comprueba si se han completado:
apigeectl apply -f overrides_1.3.yaml --org
kubectl -n namespace get pods
- Aplica las anulaciones para actualizar tus entornos. Tienes dos opciones:
- Aplica las anulaciones a un entorno cada vez y comprueba si se han completado. Repite
este paso para cada entorno:
apigeectl apply -f overrides_1.3.yaml --env env_name
kubectl -n namespace get pods
Donde env_name es el nombre del entorno que vas a actualizar.
- Aplica las anulaciones a todos los entornos a la vez y comprueba si se han completado:
apigeectl apply -f overrides_1.3.yaml --all-envs
kubectl -n namespace get pods
- Aplica las anulaciones a un entorno cada vez y comprueba si se han completado. Repite
este paso para cada entorno:
Demo o experimental
En la mayoría de los entornos de demostración o experimentales, puedes aplicar las anulaciones a todos los componentes a la vez. Si tu entorno de demostración o experimental es grande y complejo, o bien se parece mucho a un entorno de producción, te recomendamos que sigas las instrucciones para actualizar entornos de producción.
apigeectl apply -f overrides_1.3.yaml
- Comprueba el estado:
apigeectl check-ready -f overrides_1.3.yaml
Para obtener más instrucciones, consulta el paso 5 de la configuración híbrida de GKE: instala la configuración híbrida en GKE.
- Aplica las anulaciones para actualizar Cassandra:
- Una vez que hayas configurado y puesto en marcha la versión híbrida 1.3, verifica que todos los nodos de Cassandra (antiguos y nuevos) formen parte del mismo clúster de Cassandra. Ejecuta el siguiente comando en uno de los nodos de Cassandra:
kubectl -n namespace get pods
kubectl -n namespace exec old Cassandra pod -- nodetool status
En el siguiente ejemplo de salida, 10.68.8.24 es de la versión 1.2.0 y es la IP del nodo que has usado como
externalSeedHost
. 10.68.7.11 es de la versión 1.3.6:Datacenter: dc-1 ================ Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.68.8.24 379.41 KiB 256 50.8% 11bbd43b-af64-464b-a96d-0d6dd0521de1 ra-1 UN 10.68.7.11 1.35 MiB 256 49.2% 0b4d9e08-f353-413a-b4a9-7d18a8d07e58 ra-1
Si no están en el mismo clúster, comprueba el valor de
externalSeedHost
. - Una vez que todos los pods estén en funcionamiento, elimina
externalSeedHost
del archivo de anulaciones y vuelve a ejecutarapigeectl apply
con la opción--datastore
:apigeectl apply --datastore -f overrides_1.3.6.yaml
Limpieza
Una vez que hayas verificado que todos los pods están activos y en buen estado, y que los endpoints de ASM son válidos para la nueva instalación, puedes hacer lo siguiente:
- Recursos de Hybrid 1.2.
- La instancia de Cassandra anterior
- Recursos de Istio 1.4.6.
Eliminar recursos de Hybrid 1.2.0
- Elimina los detalles de enrutamiento del host virtual 1.2.0:
$APIGEECTL_HOME-v1.2/apigeectl delete -s virtualhost -f 1.2.0_overrides.yaml
Donde $APIGEECTL_HOME-v1.2 es el directorio en el que has creado una copia de seguridad de tu directorio de la versión 1.2 de
apigeectl
. - Si el endpoint sigue funcionando correctamente y has verificado que todos los componentes de la versión 1.3.0 funcionan, ejecuta el siguiente comando para eliminar los recursos híbridos de la versión 1.2.0:
$APIGEECTL_HOME-v1.2/apigeectl delete -c "mart,connect-agent,synchronizer,runtime,udca,metrics,logger" \ -f 1.2.0_overrides.yaml
Desactivar la instancia de Cassandra anterior
cd
en el directorioapigeectl
recién instalado.- Ejecuta la secuencia de comandos
tools/cas_cleanup.sh
.Esta secuencia de comandos retira el pod de Cassandra antiguo del anillo de Cassandra, elimina el STS antiguo y elimina los PVCs.
bash cas_cleanup.sh Apigee namespace
Eliminar recursos de la versión 1.4.6 de Istio
- Ejecuta el siguiente comando para eliminar los recursos de Istio v.1.4.6 más recientes:
kubectl delete all -n istio-system --selector \ 'app in (apigee-mart-istio-ingressgateway, galley, security, istio-nodeagent, istio-mixer, sidecarInjectorWebhook, istio-mixer)'
- Ejecuta los siguientes comandos para eliminar las tareas antiguas de la instalación de Istio 1.4.6:
kubectl -n istio-system delete job istio-init-crd-10-1.4.6
kubectl -n istio-system delete job istio-init-crd-11-1.4.6
kubectl -n istio-system delete job istio-init-crd-14-1.4.6
¡Enhorabuena! Has actualizado correctamente a la versión 1.3.6 de Apigee Hybrid.
- Inicializa la versión 1.3.6 de Hybrid: