Instalar y gestionar Apigee hybrid con gráficos de Helm

<0x0

En este documento se explica paso a paso cómo instalar Apigee hybrid v1.10 mediante gráficos de Helm.

Versión

Los gráficos de Helm de Apigee Hybrid se usan con Apigee Hybrid v1.10.x. Consulta el historial de versiones de Apigee Hybrid para ver la lista de versiones de Hybrid.

Requisitos previos

Ámbito

Plataformas y versiones de Kubernetes compatibles

Plataforma Versiones
GKE 1.24, 1.25 y 1.26
AKS 1.24, 1.25 y 1.26
EKS 1.24, 1.25 y 1.26
OpenShift 4.11 y 4.12

Limitaciones

  • Los gráficos de Helm no admiten CRDs por completo, por lo que usaremos el comando kubectl -k para instalarlos y actualizarlos. Nuestro objetivo es seguir las prácticas recomendadas de la comunidad y de Google en torno a la gestión de Kubernetes. Las implementaciones de CRD a través de Helm aún no han alcanzado un estado en la comunidad en el que veamos un amplio apoyo o solicitudes de este modelo. Por lo tanto, la gestión de los CRDs de Apigee debe hacerse mediante kubectl, tal como se menciona en este documento.
  • En apigeectl, hemos usado archivos en todo el documento overrides.yaml para las cuentas de servicio y los certificados. Sin embargo, Helm no admite referencias a archivos que no estén en el directorio del gráfico. Elige una de las siguientes opciones para los archivos de cuenta de servicio y de certificado:
    • Coloca copias de los archivos pertinentes en cada directorio de gráficos
    • Crea enlaces simbólicos en cada directorio de gráficos para cada archivo o carpeta. Helm seguirá los enlaces simbólicos fuera del directorio del gráfico, pero mostrará una advertencia como la siguiente:
      apigee-operator/gsa -> ../gsa
    • Usa secretos de Kubernetes. Por ejemplo, en el caso de las cuentas de servicio:
      kubectl create secret generic SECRET_NAME \
        --from-file="client_secret.json=CLOUD_IAM_FILE_NAME.json" \
        -n apigee
      

Plataforma y versiones de Kubernetes compatibles

Para ver una lista de las plataformas compatibles, consulta la columna v1.10 de la tabla de plataformas compatibles con Apigee hybrid.

Los permisos que requiere

En esta tabla se enumeran los recursos y los permisos necesarios para Kubernetes y Apigee.

Para filtrar esta tabla, haga una o varias de las siguientes acciones: seleccione una categoría, escriba un término de búsqueda o haga clic en el encabezado de una columna para ordenar los datos.

Categoría Recurso Tipo de recurso Permisos de RBAC de Kubernetes
Datastore apigeedatastores.apigee.cloud.google.com Apigee create delete patch update
Datastore certificates.cert-manager.io Kubernetes create delete patch update
Datastore cronjobs.batch Kubernetes create delete patch update
Datastore jobs.batch Kubernetes create delete patch update
Datastore secrets Kubernetes create delete patch update
Env apigeeenvironments.apigee.cloud.google.com Apigee create delete patch update
Env secrets Kubernetes create delete patch update
Env serviceaccounts Kubernetes create delete patch update
Gestor de entradas certificates.cert-manager.io Kubernetes create delete patch update
Gestor de entradas configmaps Kubernetes create delete patch update
Gestor de entradas deployments.apps Kubernetes create get delete patch update
Gestor de entradas horizontalpodautoscalers.autoscaling Kubernetes create delete patch update
Gestor de entradas issuers.cert-manager.io Kubernetes create delete patch update
Gestor de entradas serviceaccounts Kubernetes create delete patch update
Gestor de entradas services Kubernetes create delete patch update
Operador apigeedatastores.apigee.cloud.google.com Apigee create delete get list patch update watch
Operador apigeedatastores.apigee.cloud.google.com/finalizers Apigee get patch update
Operador apigeedatastores.apigee.cloud.google.com/status Apigee get patch update
Operador apigeedeployments.apigee.cloud.google.com Apigee create delete get list patch update watch
Operador apigeedeployments.apigee.cloud.google.com/finalizers Apigee get patch update
Operador apigeedeployments.apigee.cloud.google.com/status Apigee get patch update
Operador apigeeenvironments.apigee.cloud.google.com Apigee create delete get list patch update watch
Operador apigeeenvironments.apigee.cloud.google.com/finalizers Apigee get patch update
Operador apigeeenvironments.apigee.cloud.google.com/status Apigee get patch update
Operador apigeeissues.apigee.cloud.google.com Apigee create delete get list watch
Operador apigeeorganizations.apigee.cloud.google.com Apigee create delete get list patch update watch
Operador apigeeorganizations.apigee.cloud.google.com/finalizers Apigee get patch update
Operador apigeeorganizations.apigee.cloud.google.com/status Apigee get patch update
Operador apigeeredis.apigee.cloud.google.com Apigee create delete get list patch update watch
Operador apigeeredis.apigee.cloud.google.com/finalizers Apigee get patch update
Operador apigeeredis.apigee.cloud.google.com/status Apigee get patch update
Operador apigeerouteconfigs.apigee.cloud.google.com Apigee get list
Operador apigeeroutes.apigee.cloud.google.com Apigee create delete get list patch update watch
Operador apigeeroutes.apigee.cloud.google.com/finalizers Apigee get patch update
Operador apigeeroutes.apigee.cloud.google.com/status Apigee get patch update
Operador apigeetelemetries.apigee.cloud.google.com Apigee create delete get list patch update watch
Operador apigeetelemetries.apigee.cloud.google.com/finalizers Apigee get patch update
Operador apigeetelemetries.apigee.cloud.google.com/status Apigee get list patch update
Operador cassandradatareplications.apigee.cloud.google.com Apigee get list patch update watch
Operador cassandradatareplications.apigee.cloud.google.com/finalizers Apigee get patch update
Operador cassandradatareplications.apigee.cloud.google.com/status Apigee get patch update
Operador *.networking.x.k8s.io Kubernetes get list watch
Operador apiservices.apiregistration.k8s.io Kubernetes create delete get list patch update watch
Operador certificates.cert-manager.io Kubernetes create delete get list patch update watch
Operador certificates.cert-manager.io/finalizers Kubernetes create delete get list patch update watch
Operador certificatesigningrequests.certificates.k8s.io Kubernetes create delete get update watch
Operador certificatesigningrequests.certificates.k8s.io/approval Kubernetes create delete get update watch
Operador certificatesigningrequests.certificates.k8s.io/status Kubernetes create delete get update watch
Operador clusterissuers.cert-manager.io Kubernetes create get watch
Operador clusterrolebindings.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
Operador clusterroles.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
Operador configmaps Kubernetes create delete get list patch update watch
Operador configmaps/status Kubernetes get patch update
Operador cronjobs.batch Kubernetes create delete get list patch update watch
Operador customresourcedefinitions.apiextensions.k8s.io Kubernetes get list watch
Operador daemonsets.apps Kubernetes create delete get list patch update watch
Operador deployments.apps Kubernetes get list watch
Operador deployments.extensions Kubernetes get list watch
Operador destinationrules.networking.istio.io Kubernetes create delete get list patch update watch
Operador endpoints Kubernetes get list watch
Operador endpointslices.discovery.k8s.io Kubernetes get list watch
Operador events Kubernetes create delete get list patch update watch
Operador gateways.networking.istio.io Kubernetes create delete get list patch update watch
Operador horizontalpodautoscalers.autoscaling Kubernetes create delete get list patch update watch
Operador ingressclasses.networking.k8s.io Kubernetes get list watch
Operador ingresses.networking.k8s.io/status Kubernetes all verbs
Operador issuers.cert-manager.io Kubernetes create delete get list patch update watch
Operador jobs.batch Kubernetes create delete get list patch update watch
Operador leases.coordination.k8s.io Kubernetes create get list update
Operador namespaces Kubernetes create get list watch
Operador nodes Kubernetes get list watch
Operador peerauthentications.security.istio.io Kubernetes create delete get list patch update watch
Operador persistentvolumeclaims Kubernetes create delete get list patch update watch
Operador persistentvolumes Kubernetes get list watch
Operador poddisruptionbudgets.policy Kubernetes create delete get list patch update watch
Operador pods Kubernetes create delete get list patch update watch
Operador pods/exec Kubernetes create
Operador replicasets.apps Kubernetes create delete get list patch update watch
Operador replicasets.extensions Kubernetes get list watch
Operador resourcequotas Kubernetes create delete get list patch update watch
Operador rolebindings.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
Operador roles.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
Operador secrets Kubernetes batch create delete get list patch update watch
Operador securitycontextconstraints.security.openshift.io Kubernetes create get list
Operador serviceaccounts Kubernetes create delete get list patch update watch
Operador services Kubernetes batch create delete get list patch update watch
Operador signers.certificates.k8s.io Kubernetes approve
Operador statefulsets.apps Kubernetes create delete get list patch update watch
Operador subjectaccessreviews.authorization.k8s.io Kubernetes create get list
Operador tokenreviews.authentication.k8s.io Kubernetes create
Operador virtualservices.networking.istio.io Kubernetes create delete get list patch update watch
Organización apigeeorganizations.apigee.cloud.google.com Apigee create delete patch update
Organización secrets Kubernetes create delete patch update
Organización serviceaccounts Kubernetes create delete patch update
Redis apigeeredis.apigee.cloud.google.com Apigee create delete patch update
Redis secrets Kubernetes create delete patch update
Telemetría apigeetelemetry.apigee.cloud.google.com Apigee create delete patch update
Telemetría secrets Kubernetes create delete patch update
Telemetría serviceaccounts Kubernetes create delete patch update
Host virtual apigeerouteconfigs.apigee.cloud.google.com Apigee create delete patch update
Host virtual secrets Kubernetes create delete patch update

Consulta también:

Prepararse para la instalación

Los gráficos de Apigee Hybrid se alojan en Google Artifact Registry:

oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts

Extraer gráficos de Helm de Apigee

Con el comando pull, copia todos los gráficos de Helm de Apigee hybrid en tu almacenamiento local con el siguiente comando:

export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
export CHART_VERSION=1.10.5
helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar

Instalar Apigee Hybrid

Descripción general de la secuencia de instalación

Los componentes se instalan de izquierda a derecha en secuencia, como se muestra en la siguiente figura. Los componentes que se apilan verticalmente en la figura se pueden instalar juntos y en cualquier orden. Una vez que hayas instalado un componente, podrás actualizarlo de forma individual y en cualquier momento. Por ejemplo, puedes actualizar la réplica, la memoria, la CPU, etc.

Secuencia de instalación: gestor de certificados, CRDs, operador de Apigee, componentes apilados (Redis, Datastore, Telemetría, Gestor de entrada), organización y componentes apilados (entorno y host virtual).

Preparar la instalación de Apigee hybrid con gráficos de Helm

  1. Crea el espacio de nombres que se usará para los recursos de apigee. Debe coincidir con el campo de espacio de nombres del archivo overrides.yaml. Si no está presente en overrides.yaml, el valor predeterminado es apigee.
    1. Comprueba si el espacio de nombres ya existe:

      kubectl get namespace apigee

      Si el espacio de nombres existe, el resultado incluye lo siguiente:

        NAME     STATUS   AGE
        apigee   Active   1d
    2. Si el espacio de nombres aún no existe, créalo:

      kubectl create namespace apigee
  2. Crea el espacio de nombres apigee-system que usan los recursos del operador de Apigee.
    1. Comprueba si el espacio de nombres ya existe:

      kubectl get namespace apigee-system
    2. Si el espacio de nombres aún no existe, créalo:

      kubectl create namespace apigee-system
  3. Crea las cuentas de servicio y asígnales los roles de gestión de identidades y accesos adecuados. Apigee hybrid usa las siguientes cuentas de servicio:

    Cuenta de servicio Roles de gestión de identidades y accesos
    apigee-cassandra Administrador de objetos de Storage
    apigee-logger Escritor de registros
    apigee-mart Agente de conexión de Apigee
    apigee-metrics Escritor de las métricas de supervisión
    apigee-runtime No se requiere ningún rol
    apigee-synchronizer Administrador del sincronizador de Apigee
    apigee-udca Agente de Analytics de Apigee
    apigee-watcher Agente de entorno de ejecución de Apigee

    Apigee proporciona una herramienta, create-service-account, en el directorio apigee-operator/etc/tools:

    APIGEE_HELM_CHARTS_HOME/
    └── apigee-operator/
        └── etc/
            └── tools/
                └── create-service-account
    

    Esta herramienta crea las cuentas de servicio, asigna los roles de IAM a cada cuenta y descarga los archivos de certificado en formato JSON para cada cuenta.

    1. Crea el directorio en el que quieras descargar los archivos de certificado de la cuenta de servicio. Lo especificarás en el siguiente comando en lugar de SERVICE_ACCOUNTS_PATH.
    2. Puedes crear todas las cuentas de servicio con un solo comando con las siguientes opciones:
      APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --env prod --dir SERVICE_ACCOUNTS_PATH
      
    3. Lista los nombres de tus cuentas de servicio en el archivo de anulaciones:
      ls service-accounts
      
      my_project-apigee-cassandra.json    my_project-apigee-runtime.json
      my_project-apigee-logger.json       my_project-apigee-synchronizer.json
      my_project-apigee-mart.json         my_project-apigee-udca.json
      my_project-apigee-metrics.json      my_project-apigee-watcher.json

      Para obtener más información, consulta:

  4. Antes de instalar, consulta el archivo overrides.yaml para verificar la configuración:
    instanceID: UNIQUE_ID_TO_IDENTIFY_THIS_CLUSTER
    namespace: apigee # required for Helm charts installation
    
    # By default, logger and metrics are enabled and requires below details
    # Google Cloud project and cluster
    gcp:
      projectID: PROJECT_ID
      region: REGION
    
    k8sCluster:
      name: CLUSTER_NAME
      region: REGION
    
    org: ORG_NAME
    
    envs:
    - name: "ENV_NAME"
      serviceAccountPaths:
        runtime: "PATH_TO_RUNTIME_SVC_ACCOUNT"
        synchronizer: "PATH_TO_SYNCHRONIZER_SVC_ACCOUNT"
        udca: "PATH_TO_UDCA_SVC_ACCOUNT"
    
    ingressGateways:
    - name: GATEWAY_NAME # maximum 17 characters, eg: "ingress-1". See Known issue 243167389.
      replicaCountMin: 1
      replicaCountMax: 2
      svcType: LoadBalancer
    
    virtualhosts:
    - name: ENV_GROUP_NAME
      selector:
        app: apigee-ingressgateway
        ingress_name: GATEWAY_NAME
      sslSecret: SECRET_NAME
    
    mart:
      serviceAccountPath: "PATH_TO_MART_SVC_ACCOUNT"
    
    logger:
      enabled: TRUE_FALSE # lowercase without quotes, eg: true
      serviceAccountPath: "PATH_TO_LOGGER_SVC_ACCOUNT"
    
    metrics:
      enabled: TRUE_FALSE # lowercase without quotes, eg: true
      serviceAccountPath: "PATH_TO_METRICS_SVC_ACCOUNT"
    
    udca:
      serviceAccountPath: "PATH_TO_UDCA_SVC_ACCOUNT"
    
    connectAgent:
      serviceAccountPath: "PATH_TO_MART_SVC_ACCOUNT"
    
    watcher:
      serviceAccountPath: "PATH_TO_WATCHER_SVC_ACCOUNT"

    Esta es la misma configuración de anulaciones que usarás para esta instalación de Helm. Para ver más ajustes, consulta la referencia de la propiedad de configuración.

    Para ver más ejemplos de archivos de anulaciones, consulta el Paso 6: Configurar el tiempo de ejecución híbrido.

  5. Habilita el acceso del sincronizador. Este es un requisito previo para instalar Apigee Hybrid.
    1. Comprueba si el acceso al sincronizador ya está habilitado con los siguientes comandos:

      export TOKEN=$(gcloud auth print-access-token)
      
      curl -X POST -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type:application/json" \
        "https://apigee.googleapis.com/v1/organizations/ORG_NAME:getSyncAuthorization" \
        -d ''
      

      La salida debería tener un aspecto similar al siguiente:

      {
        "identities":[
           "serviceAccount:SYNCHRONIZER_SERVICE_ACCOUNT_ID"
        ],
        "etag":"BwWJgyS8I4w="
      }
    2. Si el resultado no incluye el ID de la cuenta de servicio, habilita el acceso del sincronizador. Tu cuenta debe tener el rol de gestión de identidades y accesos de administrador de la organización de Apigee (roles/apigee.admin) para realizar esta tarea.

      curl -X POST -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type:application/json" \
        "https://apigee.googleapis.com/v1/organizations/ORG_NAME:setSyncAuthorization" \
        -d '{"identities":["'"serviceAccount:SYNCHRONIZER_SERVICE_ACCOUNT_ID"'"]}'
      

      Consulta el paso 7: Habilita el acceso del sincronizador en la documentación de instalación de Apigee hybrid para obtener información más detallada.

  6. Instala Cert Manager con el siguiente comando:
    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
    
  7. Instala los CRDs de Apigee:

    1. Usa la función de prueba kubectl ejecutando el siguiente comando:

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run=server
      
    2. Después de validar con el comando de prueba, ejecuta el siguiente comando:

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
      
    3. Valida la instalación con el comando kubectl get crds:
      kubectl get crds | grep apigee

      La salida debería tener un aspecto similar al siguiente:

      apigeedatastores.apigee.cloud.google.com                    2023-10-09T14:48:30Z
      apigeedeployments.apigee.cloud.google.com                   2023-10-09T14:48:30Z
      apigeeenvironments.apigee.cloud.google.com                  2023-10-09T14:48:31Z
      apigeeissues.apigee.cloud.google.com                        2023-10-09T14:48:31Z
      apigeeorganizations.apigee.cloud.google.com                 2023-10-09T14:48:32Z
      apigeeredis.apigee.cloud.google.com                         2023-10-09T14:48:33Z
      apigeerouteconfigs.apigee.cloud.google.com                  2023-10-09T14:48:33Z
      apigeeroutes.apigee.cloud.google.com                        2023-10-09T14:48:33Z
      apigeetelemetries.apigee.cloud.google.com                   2023-10-09T14:48:34Z
      cassandradatareplications.apigee.cloud.google.com           2023-10-09T14:48:35Z
      
  8. Comprueba las etiquetas de los nodos del clúster. De forma predeterminada, Apigee programa los pods de datos en nodos con la etiqueta cloud.google.com/gke-nodepool=apigee-data y los pods de tiempo de ejecución en nodos con la etiqueta cloud.google.com/gke-nodepool=apigee-runtime. Puedes personalizar las etiquetas de tu grupo de nodos en el archivo overrides.yaml.

    Para obtener más información, consulta Configurar grupos de nodos dedicados.

Instalar los gráficos de Helm de Apigee Hybrid

  1. Instala el operador o el controlador de Apigee:

    helm upgrade operator apigee-operator/ \
      --install \
      --namespace apigee-system \
      --atomic \
      -f overrides.yaml
    

    Verifica la instalación del operador de Apigee:

    helm ls -n apigee-system
    
    NAME           NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
    operator    apigee-system   3               2023-06-26 00:42:44.492009 -0800 PST    deployed        apigee-operator-1.10.5   1.10.5

    Para comprobar que funciona correctamente, consulta su disponibilidad:

    kubectl -n apigee-system get deploy apigee-controller-manager
    
    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    apigee-controller-manager   1/1     1            1           7d20h
  2. Instala el almacén de datos de Apigee:

    helm upgrade datastore apigee-datastore/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    Verifica que apigeedatastore esté en funcionamiento comprobando su estado:

    kubectl -n apigee get apigeedatastore default
    
    NAME      STATE       AGE
    default   running    2d
  3. Instala la telemetría de Apigee:

    helm upgrade telemetry apigee-telemetry/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    Para comprobar que funciona correctamente, consulta su estado:

    kubectl -n apigee get apigeetelemetry apigee-telemetry
    
    NAME               STATE     AGE
    apigee-telemetry   running   2d
  4. Instala Apigee Redis:

    helm upgrade redis apigee-redis/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    Para comprobar que funciona correctamente, consulta su estado:

    kubectl -n apigee get apigeeredis default
    
    NAME      STATE     AGE
    default   running   2d
  5. Instala Apigee Ingress Manager:

    helm upgrade ingress-manager apigee-ingress-manager/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    Para comprobar que funciona correctamente, consulta su disponibilidad:

    kubectl -n apigee get deployment apigee-ingressgateway-manager
    
    NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
    apigee-ingressgateway-manager   2/2     2            2           2d
  6. Instala la organización de Apigee:

    helm upgrade ORG_NAME apigee-org/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    Comprueba que está en funcionamiento consultando el estado de la organización correspondiente:

    kubectl -n apigee get apigeeorg
    
    NAME                      STATE     AGE
    apigee-org1-xxxxx          running   2d
  7. Instala el entorno.

    Debes instalar un entorno cada vez. Especifica el entorno con --set env=ENV_NAME:

    helm upgrade apigee-env-ENV_NAME apigee-env/ \
      --install \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f overrides.yaml
    

    Para comprobar que está en funcionamiento, consulta el estado del entorno correspondiente:

    kubectl -n apigee get apigeeenv
    
    NAME                          STATE       AGE   GATEWAYTYPE
    apigee-org1-dev-xxx            running     2d
  8. Crea los certificados TLS. Debes proporcionar certificados TLS para la pasarela de entrada de tiempo de ejecución en tu configuración híbrida de Apigee.
    1. Crea los certificados. En un entorno de producción, deberá usar certificados firmados. Puedes usar un par de certificado y clave o un secreto de Kubernetes.

      Para la demostración y la prueba de la instalación, la pasarela de tiempo de ejecución puede aceptar credenciales autofirmadas. En el siguiente ejemplo, se usa openssl para generar las credenciales autofirmadas:

      openssl req -nodes -new -x509 \
        -keyout PATH_TO_CERTS_DIRECTORY/keystore_ENV_GROUP_NAME.key \
        -out PATH_TO_CERTS_DIRECTORY/keystore_ENV_GROUP_NAME.pem \
        -subj '/CN='YOUR_DOMAIN'' -days 3650
      

      Para obtener más información, consulta el paso 5: Crea certificados TLS.

    2. Crea el secreto de Kubernetes para hacer referencia a los certificados:

      kubectl create secret generic NAME \
        --from-file="cert=PATH_TO_CRT_FILE" \
        --from-file="key=PATH_TO_KEY_FILE" \
        -n apigee
      
  9. Instala el host virtual.

    Debes instalar un grupo de entornos (virtualhost) a la vez. Especifica el grupo del entorno con --set envgroup=ENV_GROUP_NAME:

    # repeat the following command for each env group mentioned in the overrides.yaml file
    helm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \
      --install \
      --namespace apigee \
      --atomic \
      --set envgroup=ENV_GROUP_NAME \
      -f overrides.yaml
    

    De esta forma, se crea ApigeeRouteConfig (ARC), que crea internamente ApigeeRoute (AR) una vez que el observador de Apigee extrae los detalles relacionados con el grupo de entornos del plano de control. Por lo tanto, comprueba que el estado de la AR correspondiente es "running":

    kubectl -n apigee get arc
    
    NAME                                STATE   AGE
    apigee-org1-dev-egroup                       2d
    kubectl -n apigee get ar
    
    NAME                                        STATE     AGE
    apigee-org1-dev-egroup-xxxxxx                running   2d

Casos prácticos adicionales de gráficos de Helm con Apigee hybrid

Copia de seguridad y restauración de Cassandra

  1. Para habilitar la copia de seguridad, sigue estos pasos:
    1. Actualiza los detalles de la copia de seguridad de Cassandra en el archivo overrides.yaml:

      cassandra:
        backup:
          enabled: true
          serviceAccountPath: PATH_TO_GSA_FILE
          dbStorageBucket: BUCKET_LINK
          schedule: "45 23 * * 6"
    2. Ejecuta la actualización de Helm en el gráfico apigee-datastore:

      helm upgrade datastore apigee-datastore/ \
        --namespace apigee \
        --atomic \
        -f overrides.yaml
      
  2. Del mismo modo, para habilitar la restauración, sigue estos pasos:
    1. Actualiza los detalles de la restauración de Cassandra en el archivo overrides.yaml:

      cassandra:
        restore:
          enabled: true
          snapshotTimestamp: TIMESTAMP
          serviceAccountPath: PATH_TO_GSA_FILE
          cloudProvider: "CSI"
    2. Ejecuta la actualización de Helm en el gráfico apigee-datastore:

      helm upgrade datastore apigee-datastore/ \
        --namespace apigee \
        --atomic \
        -f overrides.yaml
      

Consulte la descripción general de la copia de seguridad de Cassandra para obtener más información sobre la copia de seguridad y la restauración de Cassandra.

Expansión multirregional

La configuración multirregional con gráficos de Helm requiere los mismos requisitos previos que los procedimientos apigeectl actuales. Para obtener más información, consulta los requisitos para las implementaciones multirregionales.

El procedimiento para configurar la opción híbrida para varias regiones es el mismo que el procedimiento actual hasta el proceso de configuración del host de inicialización multirregional y la configuración del clúster y el contexto de Kubernetes.

Configurar la primera región

Sigue estos pasos para configurar la primera región y prepararte para configurar la segunda:

  1. Sigue los pasos que se indican en Configurar Apigee Hybrid para varias regiones para configurar el host de inicialización multirregional en tu plataforma.
  2. En la primera región creada, obtén los pods del espacio de nombres apigee:

    kubectl get pods -o wide -n apigee
    
  3. Identifica la dirección del host de inicialización de multirregión de Cassandra en esta región. Por ejemplo, 10.0.0.11.
  4. Prepara el archivo overrides.yaml de la segunda región y añade la dirección IP del host de inicialización de la siguiente manera:

    cassandra:
      multiRegionSeedHost: "SEED_HOST_IP_ADDRESS"
      datacenter: "DATACENTER_NAME"
      rack: "RACK_NAME"
      clusterName: CLUSTER_NAME
      hostNetwork: false

    Haz los cambios siguientes:

    • SEED_HOST_IP_ADDRESS con la dirección IP del host de la semilla, por ejemplo, 10.0.0.11.
    • DATACENTER_NAME con el nombre del centro de datos (por ejemplo, dc-2).
    • RACK_NAME con el nombre del estante, por ejemplo, ra-1.
    • CLUSTER_NAME por el nombre de tu clúster de Apigee. De forma predeterminada, el valor es apigeecluster. Si usas otro nombre de clúster, debes especificar un valor para cassandra.clusterName. Este valor debe ser el mismo en todas las regiones.

Configurar la segunda región

Para configurar la nueva región, sigue estos pasos:

  1. Instala cert-manager en la región 2:

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
    
  2. Copia el certificado del clúster actual al nuevo. Cassandra y otros componentes híbridos usan la nueva raíz de CA para mTLS. Por lo tanto, es fundamental que los certificados sean coherentes en todo el clúster.
    1. Define el contexto en el espacio de nombres original:

      kubectl config use-context ORIGINAL_CLUSTER_NAME
      
    2. Exporta la configuración del espacio de nombres actual a un archivo:

      kubectl get namespace apigee -o yaml > apigee-namespace.yaml
      
    3. Exporta el secreto de apigee-ca a un archivo:

      kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
      
    4. Define el contexto con el nombre del clúster de la nueva región:

      kubectl config use-context NEW_CLUSTER_NAME
      
    5. Importa la configuración del espacio de nombres al nuevo clúster. Asegúrate de actualizar el espacio de nombres del archivo si usas otro espacio de nombres en la nueva región:

      kubectl apply -f apigee-namespace.yaml
      
    6. Importa el secreto al nuevo clúster:

      kubectl -n cert-manager apply -f apigee-ca.yaml
      
  3. Ahora, usa los charts de Helm para instalar Apigee hybrid en la nueva región con los siguientes comandos de chart de Helm (como se hizo en la región 1):

    helm upgrade operator apigee-operator \
      --install \
      --namespace apigee-system \
      --atomic
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade datastore apigee-datastore \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade telemetry apigee-telemetry \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade redis apigee-redis \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade ingress-manager apigee-ingress-manager \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade ORG_NAME apigee-org \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    # repeat the below command for each env mentioned on the overrides
    helm upgrade apigee-env-ENV_NAME apigee-env/ \
      --install \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f overrides-DATACENTER_NAME.yaml
    # repeat the below command for each env group mentioned on the overrides
    helm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \
      --install \
      --namespace apigee \
      --atomic \
      --set envgroup=ENV_GROUP_NAME \
      -f overrides-DATACENTER_NAME.yaml
    
  4. Una vez que se hayan instalado todos los componentes, configura Cassandra en todos los pods de los nuevos centros de datos. Para obtener instrucciones, consulta el artículo Configurar Apigee hybrid para varias regiones, selecciona tu plataforma, desplázate hasta Configurar la nueva región y, a continuación, busca el paso 5.
  5. Una vez que se haya completado y verificado la replicación de datos, actualiza los hosts de inicialización:
    1. Quita multiRegionSeedHost: 10.0.0.11 de overrides-DATACENTER_NAME.yaml.

      La entrada multiRegionSeedHost ya no es necesaria una vez que se ha establecido la replicación de datos, y se espera que las IPs de los pods cambien con el tiempo.

    2. Vuelve a aplicar el cambio para actualizar el CR de almacén de datos de Apigee:

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace apigee \
        --atomic \
        -f overrides-DATACENTER_NAME.yaml
      

Alojar imágenes de forma privada

En lugar de usar el repositorio público de Google Cloud, puedes alojar las imágenes de forma privada. En lugar de anular cada componente, puede añadir detalles del centro en las anulaciones:

hub: PRIVATE_REPO

Por ejemplo, si se proporciona el siguiente centro, se resolverá automáticamente la ruta de la imagen:

hub: private-docker-host.com

como:

## an example of internal component vs 3rd party
containers:
- name: apigee-udca
  image: private-docker-host.com/apigee-udca:1.10.5
  imagePullPolicy: IfNotPresent

containers:
- name: apigee-ingressgateway
  image: private-docker-host.com/apigee-asm-ingress:1.17.2-asm.8-distroless
  imagePullPolicy: IfNotPresent

Para mostrar una lista de las imágenes de Apigee alojadas en el repositorio de Google Cloud en la línea de comandos, haz lo siguiente:

./apigee-operator/etc/tools/apigee-pull-push.sh --list

Tolerancias

Para usar la función Taints and Tolerations de Kubernetes, debe definir la propiedad de anulación tolerations para cada componente de Apigee hybrid. Los siguientes componentes admiten la definición de tolerancias:

  • ao
  • apigeeIngressGateway
  • cassandra
  • cassandraSchemaSetup
  • cassandraSchemaValidation
  • cassandraUserSetup
  • connectAgent
  • istiod
  • logger
  • mart
  • metrics
  • mintTaskScheduler
  • redis
  • runtime
  • synchronizer
  • udca
  • Watcher

Consulta la referencia de la propiedad de configuración para obtener más información sobre estos componentes.

Por ejemplo, para aplicar las tolerancias a la implementación del operador de Apigee, haz lo siguiente:

ao:
  tolerations:
  - key: "key1"
    operator: "Equal"
    value: "value1"
    effect: "NoExecute"
    tolerationSeconds: 3600

Para aplicar las tolerancias al StatefulSet de Cassandra, haz lo siguiente:

cassandra:
  tolerations:
  - key: "key1"
    operator: "Equal"
    value: "value1"
    effect: "NoExecute"
    tolerationSeconds: 3600

Desinstalar Apigee hybrid con Helm

Para desinstalar una actualización o una versión específicas, puedes usar el comando helm [uninstall/delete] RELEASE-NAME -n NAMESPACE.

Sigue estos pasos para desinstalar por completo Apigee Hybrid del clúster:

  1. Elimina los virtualhosts. Ejecuta este comando para cada virtualhost:
    helm -n apigee delete VIRTUALHOST_RELEASE-NAME
    
  2. Elimina los entornos. Ejecuta este comando para cada entorno:
    helm -n apigee delete ENV_RELEASE-NAME
    
  3. Elimina la organización de Apigee:
    helm -n apigee delete ORG_RELEASE-NAME
    
  4. delete telemetry:
    helm -n apigee delete TELEMETRY_RELEASE-NAME
    
  5. Eliminar redis:
    helm -n apigee delete REDIS_RELEASE-NAME
    
  6. Elimina el gestor de entrada:
    helm -n apigee delete INGRESS_MANAGER_RELEASE-NAME
    
  7. Elimina el almacén de datos:
    helm -n apigee delete DATASTORE_RELEASE-NAME
    
  8. Eliminar operador.
    1. Asegúrate de que se hayan eliminado todos los CR antes de:
      kubectl -n apigee get apigeeds, apigeetelemetry, apigeeorg, apigreeenv, arc, apigeeredis
      
    2. Elimina el operador de Apigee:
      helm -n apigee-system delete OPERATOR_RELEASE-NAME
      
  9. Elimina los CRDs de Apigee Hybrid:
    kubectl delete -k  apigee-operator/etc/crds/default/