En este documento, se explica el proceso paso a paso para instalar Apigee Hybrid v1.10 con gráficos de Helm.
Versión
Los gráficos de Helm de Apigee Hybrid están destinados a Apigee Hybrid v1.10.x. Consulta el historial de versiones de Apigee Hybrid para obtener la lista de versiones híbridas.
Requisitos previos
- Apigee Hybrid 1.10.4
- Helm v3.10+
-
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
- Crea y administra proyectos
- Un clúster de Kubernetes para la instalación de Apigee Hybrid. Consulta:
Alcance
- Esta versión solo es compatible con la versión 1.10.4 de Apigee Hybrid.
-
Esta versión es compatible con lo siguiente:
- Instalaciones nuevas de Apigee Hybrid.
- Las instalaciones existentes de Apigee Hybrid que se hayan actualizado a la versión 1.10.4 y se hayan migrado a la administración de Helm con la herramienta de migración de Helm de Apigee Hybrid.
- Esta versión es compatible con lo siguiente:
Plataformas y versiones de Kubernetes compatibles
Plataforma | Versiones |
---|---|
GKE | 1.24, 1.25, 1.26 |
AKS | 1.24, 1.25, 1.26 |
EKS | 1.24, 1.25, 1.26 |
OpenShift | 4.11, 4.12 |
Limitaciones
-
Los gráficos de Helm no admiten por completo las CRD; por lo tanto, usaremos el comando
kubectl -k
para instalarlos y actualizarlos. Nuestro objetivo es seguir las prácticas recomendadas de la comunidad y Google en relación con la administración de Kubernetes. Las implementaciones de CRD con Helm aún no alcanzaron un estado de la comunidad en el que observamos una amplia asistencia o solicitudes para ese modelo. Por lo tanto, la administración de las CRD de Apigee debe realizarse conkubectl
, como se menciona en este documento. -
En
apigeectl
, usamos archivos enoverrides.yaml
para cuentas de servicio y certificados; sin embargo, Helm no admite archivos de referencia fuera del directorio del gráfico. Elige una de las siguientes opciones para la cuenta de servicio y los archivos de certificación:- Coloca copias de los archivos relevantes dentro de cada directorio del gráfico
-
Crea vínculos simbólicos dentro de cada directorio del gráfico para cada archivo o una carpeta. Helm seguirá los vínculos simbólicos fuera del directorio del gráfico, pero
mostrará una advertencia como la siguiente:
apigee-operator/gsa -> ../gsa
-
Usa los secretos sde Kubernetes Por ejemplo, para las cuentas de servicio:
kubectl create secret generic SECRET_NAME \ --from-file="client_secret.json=CLOUD_IAM_FILE_NAME.json" \ -n apigee
-
Reemplaza lo siguiente:
- SECRET_NAME por el nombre del Secret de Kubernetes que creaste.
- CLOUD_IAM_FILE_NAME.json por el nombre del archivo JSON descargado.
Plataformas y versiones compatibles de Kubernetes
Para obtener una lista de las plataformas compatibles, consulta la columna v1.10 en la tabla de plataformas compatibles con Apigee Hybrid.
Permisos necesarios
En esta tabla, se enumeran los recursos y permisos necesarios para Kubernetes y Apigee.
Para filtrar esta tabla, realiza una o más de las siguientes acciones: selecciona una categoría, escribe un término de búsqueda o haz clic en el encabezado de una columna para ordenar.
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 |
Entorno | apigeeenvironments.apigee.cloud.google.com |
Apigee | create delete patch update |
Entorno | secrets |
Kubernetes | create delete patch update |
Entorno | serviceaccounts |
Kubernetes | create delete patch update |
Administrador de Ingress | certificates.cert-manager.io |
Kubernetes | create delete patch update |
Administrador de Ingress | configmaps |
Kubernetes | create delete patch update |
Administrador de Ingress | deployments.apps |
Kubernetes | create delete patch update |
Administrador de Ingress | horizontalpodautoscalers.autoscaling |
Kubernetes | create delete patch update |
Administrador de Ingress | issuers.cert-manager.io |
Kubernetes | create delete patch update |
Administrador de Ingress | serviceaccounts |
Kubernetes | create delete patch update |
Administrador de Ingress | 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 | 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 |
Unidad organizativa | apigeeorganizations.apigee.cloud.google.com |
Apigee | create delete patch update |
Unidad organizativa | secrets |
Kubernetes | create delete patch update |
Unidad organizativa | 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 |
También consulte lo siguiente:
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
Extrae gráficos de Helm para 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.4
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
Instala Apigee Hybrid
Descripción general de la secuencia de instalación
La instalación de los componentes se realiza 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 cualquier componente, puedes actualizarlo de forma individual y en cualquier momento, por ejemplo, réplica, memoria, CPU, etcétera.
Prepárate para instalar Apigee Hybrid con gráficos de Helm
-
Crea el espacio de nombres que se usará para los recursos
apigee
. Este debe coincidir con el campo del espacio de nombres en el archivooverrides.yaml
. Si no está presente enoverrides.yaml
, el valor predeterminado esapigee
.Verifica 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 las cuentas de servicio y asígnales los roles de IAM adecuados. Apigee Hybrid usa las siguientes cuentas de servicio:
Cuenta de servicio Roles de IAM apigee-cassandra
Administrador de objetos de Storage apigee-logger
Escritor de registros apigee-mart
Agente de Apigee Connect apigee-metrics
Escritor de métricas de Monitoring apigee-runtime
No se requiere una función apigee-synchronizer
Administrador de Apigee Synchronizer apigee-udca
Agente de Apigee Analytics apigee-watcher
Agente del 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 deseas descargar los archivos de certificación de la cuenta de servicio. Especificarás esto en el siguiente comando en lugar de SERVICE_ACCOUNTS_PATH.
-
Puedes crear todas las cuentas de servicio con un solo comando a través de las siguientes opciones:
APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --env prod --dir SERVICE_ACCOUNTS_PATH
- Enumera los nombres de las cuentas de servicio para el archivo de anulación:
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 anulación que usarás para esta instalación de Helm. Para obtener más información, consulta la Referencia de propiedad de configuración.
Para obtener más ejemplos de archivos de anulación, consulta Paso 6: Configura el entorno de ejecución híbrido.
- Habilita el acceso del sincronizador. Este es un requisito para instalar Apigee Hybrid.
-
Verifica si el acceso del 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 respuesta debería ser similar a la 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 IAM 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 las CRD de Apigee:
-
Usa la función de ejecución de prueba
kubectl
mediante la ejecución del 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 ejecución 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 respuesta debería ser similar a la 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
-
-
Verifica las etiquetas existentes en los nodos del clúster. De forma predeterminada, Apigee programa los Pods de datos en los nodos con la etiqueta
cloud.google.com/gke-nodepool=apigee-data
y los Pods del entorno de ejecución se programan 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 Configura grupos de nodos dedicados.
Instala los gráficos de Helm de Apigee Hybrid
ElInstala el operador o controlador de Apigee:
helm upgrade operator apigee-operator/ \ --install \ --create-namespace \ --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.4 1.10.4
Para verificar que esté en funcionamiento, comprueba 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
Para verificar que
apigeedatastore
esté en funcionamiento, comprueba 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 verificar que esté en funcionamiento, comprueba 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 verificar que esté en funcionamiento, comprueba su estado:
kubectl -n apigee get apigeeredis default
NAME STATE AGE default running 2d
-
Instala el administrador de entrada de Apigee:
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
Para verificar que esté en funcionamiento, comprueba 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
Para verificar que esté en funcionamiento, comprueba 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 a la 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 verificar que esté en funcionamiento, comprueba 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 puerta de enlace de entrada del entorno de ejecución en tu configuración de Apigee Hybrid.
-
Crea los certificados. En un entorno de producción, deberás usar certificados firmados. Puedes usar un certificado y un par de claves o un Secret de Kubernetes.
Para la instalación de demostración y prueba, la puerta de enlace del entorno de ejecución puede aceptar credenciales autofirmadas. En el siguiente ejemplo, openssl se usa 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 objeto Secret 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 de entornos 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
Esto crea ApigeeRouteConfig (ARC) que crea ApigeeRouter (AR) de manera interna una vez que Apigee Watcher extrae detalles relacionados con el grupo de entornos desde el plano de control. Por lo tanto, verifica que el estado de AR correspondiente esté en ejecución:
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 de uso adicionales para los gráficos de Helm con Apigee Hybrid
Copia de seguridad y restablecimiento de Cassandra
- Para habilitar la copia de seguridad, haz lo siguiente:
-
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 el restablecimiento, sigue estos pasos:
-
Actualiza los detalles de restablecimiento 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
-
Consulta Descripción general de la copia de seguridad de Cassandra para obtener más detalles sobre la copia de seguridad y el restablecimiento de Cassandra.
Expansión multirregional
La configuración multirregional con gráficos de Helm requiere los mismos requisitos que los procedimientos apigeectl
actuales. Para obtener más detalles, consulta
Requisitos para implementaciones multirregionales.
El procedimiento para configurar Hybrid para varias regiones es el mismo que el procedimiento existente hasta el proceso de configuración del host de origen multirregional y de la configuración del clúster y el contexto de Kubernetes.
Configura 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 Configura Apigee Hybrid para varias regiones para configurar el host de origen multirregional en tu plataforma.
-
Para la primera región creada, obtén los Pods en el espacio de nombres de Apigee:
kubectl get pods -o wide -n apigee
- Identifica la dirección del host de origen multirregional para Cassandra en esta región, por ejemplo,
10.0.0.11
. -
Prepara el archivo
overrides.yaml
para la segunda región y agrega la dirección IP del host de origen de la siguiente manera:cassandra: multiRegionSeedHost: "SEED_HOST_IP_ADDRESS" datacenter: "DATACENTER_NAME" rack: "RACK_NAME" clusterName: CLUSTER_NAME hostNetwork: false
Reemplaza lo siguiente:
- SEED_HOST_IP_ADDRESS por la dirección IP del host de origen, por ejemplo,
10.0.0.11
. - DATACENTER_NAME por el nombre del centro de datos, por ejemplo,
dc-2
. - RACK_NAME por el nombre del bastidor, por ejemplo,
ra-1
. - CLUSTER_NAME por el nombre del clúster de Apigee. De forma predeterminada, el valor
es
apigeecluster
. Si usas un nombre de clúster diferente, debes especificar un valor para cassandra.clusterName. Este valor debe ser el mismo en todas las regiones.
- SEED_HOST_IP_ADDRESS por la dirección IP del host de origen, por ejemplo,
Configura la segunda región
Para configurar la región nueva, haz lo siguiente:
-
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
- Crea un Secret de Kubernetes para tu cuenta de servicio.
- Crea un Secret de Kubernetes para el certificado de entrada.
- Copia tu certificado del clúster existente en el clúster nuevo.
Cassandra y otros componentes híbridos para mTLS usan la raíz de CA nueva.
Por lo tanto, es fundamental tener certificados coherentes en todo el clúster.
-
Establece 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 Secret
apigee-ca
a un archivo:kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
-
Establece el contexto en el nombre del clúster de la región nueva:
kubectl config use-context NEW_CLUSTER_NAME
-
Importa la configuración del espacio de nombres al clúster nuevo. Asegúrate de actualizar el espacio de nombres en el archivo si usas un espacio de nombres diferente en la región nueva:
kubectl apply -f apigee-namespace.yaml
-
Importa el secreto al clúster nuevo:
kubectl -n cert-manager apply -f apigee-ca.yaml
-
-
Ahora usa gráficos de Helm para instalar Apigee Hybrid en la región nueva con los siguientes comandos del gráfico de Helm (como se hace en la región 1):
helm upgrade operator apigee-operator \ --install \ --create-namespace \ --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 estén instalados todos los componentes, configura Cassandra en todos los Pods de los centros de datos nuevos. Si deseas obtener instrucciones, consulta Configura Apigee Hybrid para varias regiones, selecciona tu plataforma, desplázate hasta Configura la región nueva y, luego, busca el Paso 5.
- Una vez que se complete y verifique la replicación de datos, actualiza los hosts de origen:
-
Quita
multiRegionSeedHost: 10.0.0.11
deoverrides-DATACENTER_NAME.yaml
. -
Vuelve a aplicar el cambio para actualizar la CR del almacén de datos de Apigee:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yaml
-
Quita
Aloja imágenes de forma privada
En lugar de depender del repositorio público de Google Cloud, tienes la opción de alojar las imágenes de forma privada. En lugar de anular cada componente, puedes agregar detalles del concentrador en las anulaciones:
hub: PRIVATE_REPO
Por ejemplo, si se proporciona el siguiente concentrador, se resolverá de forma automática 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.4 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 de Taints y tolerancias de Kubernetes, debes definir la
propiedad de anulación tolerations
de 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 Referencia de 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, sigue estos pasos:
cassandra: tolerations: - key: "key1" operator: "Equal" value: "value1" effect: "NoExecute" tolerationSeconds: 3600