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
- Apigee hybrid 1.10.5
- Helm 3.10 o versiones posteriores
-
Acceso al repositorio de gráficos de Helm de Apigee Hybrid en:
oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
- CLI de gcloud
- Un Google Cloud proyecto para tu instalación de Apigee Hybrid. Consulta el artículo Crear y gestionar proyectos.
- Un clúster de Kubernetes para tu instalación de Apigee Hybrid. Consulta:
Ámbito
- Esta versión solo es compatible con la versión 1.10.5 de Apigee Hybrid.
-
Esta versión es compatible con lo siguiente:
- Nuevas instalaciones de Apigee Hybrid.
- Las instalaciones de Apigee hybrid se han actualizado a la versión 1.10.5 y se han migrado a la gestión de Helm mediante la herramienta de migración de Apigee hybrid a Helm.
- Esta versión es compatible con lo siguiente:
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 mediantekubectl
, tal como se menciona en este documento. -
En
apigeectl
, hemos usado archivos en todo el documentooverrides.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
-
Sustituye lo siguiente:
- SECRET_NAME con el nombre del secreto de Kubernetes que has creado.
- CLOUD_IAM_FILE_NAME.json con el nombre del archivo JSON descargado.
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-chartsexport 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.
Preparar la instalación de Apigee hybrid con gráficos de Helm
-
Crea el espacio de nombres que se usará para los recursos de
apigee
. Debe coincidir con el campo de espacio de nombres del archivooverrides.yaml
. Si no está presente enoverrides.yaml
, el valor predeterminado esapigee
.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
-
Si el espacio de nombres aún no existe, créalo:
kubectl create namespace apigee
-
Crea el espacio de nombres
apigee-system
que usan los recursos del operador de Apigee.Comprueba si el espacio de nombres ya existe:
kubectl get namespace apigee-system
-
Si el espacio de nombres aún no existe, créalo:
kubectl create namespace apigee-system
-
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 directorioapigee-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.
- 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.
-
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
- 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:
- 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.
- Habilita el acceso del sincronizador. Este es un requisito previo para instalar Apigee Hybrid.
-
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=" }
-
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.
-
- 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
-
Instala los CRDs de Apigee:
-
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
-
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
- 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
-
-
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 etiquetacloud.google.com/gke-nodepool=apigee-runtime
. Puedes personalizar las etiquetas de tu grupo de nodos en el archivooverrides.yaml
.Para obtener más información, consulta Configurar grupos de nodos dedicados.
Instalar los gráficos de Helm de Apigee Hybrid
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
-
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
-
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
-
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
-
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
-
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
-
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
- 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.
-
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.
-
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
-
-
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
- Para habilitar la copia de seguridad, sigue estos pasos:
-
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"
-
Ejecuta la actualización de Helm en el gráfico
apigee-datastore
:helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f overrides.yaml
-
- Del mismo modo, para habilitar la restauración, sigue estos pasos:
-
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"
-
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:
- Sigue los pasos que se indican en Configurar Apigee Hybrid para varias regiones para configurar el host de inicialización multirregional en tu plataforma.
-
En la primera región creada, obtén los pods del espacio de nombres apigee:
kubectl get pods -o wide -n apigee
- Identifica la dirección del host de inicialización de multirregión de Cassandra en esta región. Por ejemplo,
10.0.0.11
. -
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.
- SEED_HOST_IP_ADDRESS con la dirección IP del host de la semilla, por ejemplo,
Configurar la segunda región
Para configurar la nueva región, sigue estos pasos:
-
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
- 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.
-
Define el contexto en el espacio de nombres original:
kubectl config use-context ORIGINAL_CLUSTER_NAME
-
Exporta la configuración del espacio de nombres actual a un archivo:
kubectl get namespace apigee -o yaml > apigee-namespace.yaml
-
Exporta el secreto de
apigee-ca
a un archivo:kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
-
Define el contexto con el nombre del clúster de la nueva región:
kubectl config use-context NEW_CLUSTER_NAME
-
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
-
Importa el secreto al nuevo clúster:
kubectl -n cert-manager apply -f apigee-ca.yaml
-
-
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 overrideshelm 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 overrideshelm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace apigee \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides-DATACENTER_NAME.yaml
- 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.
- Una vez que se haya completado y verificado la replicación de datos, actualiza los hosts de inicialización:
-
Quita
multiRegionSeedHost: 10.0.0.11
deoverrides-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. -
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
-
Quita
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:
- Elimina los virtualhosts. Ejecuta este comando para cada virtualhost:
helm -n apigee delete VIRTUALHOST_RELEASE-NAME
- Elimina los entornos. Ejecuta este comando para cada entorno:
helm -n apigee delete ENV_RELEASE-NAME
- Elimina la organización de Apigee:
helm -n apigee delete ORG_RELEASE-NAME
- delete telemetry:
helm -n apigee delete TELEMETRY_RELEASE-NAME
- Eliminar redis:
helm -n apigee delete REDIS_RELEASE-NAME
- Elimina el gestor de entrada:
helm -n apigee delete INGRESS_MANAGER_RELEASE-NAME
- Elimina el almacén de datos:
helm -n apigee delete DATASTORE_RELEASE-NAME
- Eliminar operador.
- Asegúrate de que se hayan eliminado todos los CR antes de:
kubectl -n apigee get apigeeds, apigeetelemetry, apigeeorg, apigreeenv, arc, apigeeredis
- Elimina el operador de Apigee:
helm -n apigee-system delete OPERATOR_RELEASE-NAME
- Asegúrate de que se hayan eliminado todos los CR antes de:
- Elimina los CRDs de Apigee Hybrid:
kubectl delete -k apigee-operator/etc/crds/default/