Distributed Cloud conectado admite la implementación de varios servicios Google Cloud . Estas cargas de trabajo de servicio se ejecutan en contenedores de Kubernetes en tus clústeres de Distributed Cloud conectado.
Servicios admitidos Google Cloud
Distributed Cloud conectado admite la implementación de los siguientes Google Cloud servicios:
| Tipo de servicio | Incluido en los costos de GDC conectado | Se factura por separado |
|---|---|---|
| Procesamiento | Google Distributed Cloud solo de software Entorno de ejecución de VM en Google Distributed Cloud |
Sistemas operativos invitados (debes obtener tus propias licencias) |
| Almacenamiento | Interfaz de almacenamiento de contenedores (CSI) Almacenamiento híbrido |
Almacenamiento definido por software (SDS), como Symcloud Storage (debes obtener tus propias licencias) |
| Redes | API de Edge Network Compatibilidad con VLAN Plug-ins de la interfaz de red personalizada (CNI) de GKE Balanceador de cargas L4 incluido en GKE |
No aplicable |
| IA/AA | Implementación de modelos de AutoML en contenedores | No aplicable |
| Base de datos | Ninguno | AlloyDB Omni (versión preliminar) Soluciones de bases de datos de terceros, como MongoDB (debes obtener tus propias licencias) |
| Observabilidad | Cloud Logging Cloud Monitoring API de Cloud Logging Registros y métricas de GDCc |
Prometheus para la observabilidad desconectada Registros y métricas personalizados a nivel de la aplicación |
| Administración de la configuración | Sincronizador de configuración Usa paquetes de flota en Distributed Cloud conectado Paquetes de flota (versión preliminar) |
No aplicable |
| Administración | Panel de Google Kubernetes Engine en la Google Cloud consola Puerta de enlace de conexión La herramienta local kubectlActualizaciones de software de Distributed Cloud conectado |
No aplicable |
| Seguridad | Integración de Cloud Key Management Service Unidades de disco con encriptación automática (SED) Workload Identity de la flota Registro de auditoría |
No aplicable |
Requisitos previos
Antes de que puedas implementar Google Cloud servicios en Distributed Cloud conectado, debes completar los requisitos previos que se indican en esta sección.
Obtén credenciales de clúster
Usa el siguiente comando para obtener las credenciales para acceder al clúster de destino:
gcloud container hub memberships get-credentials CLUSTER_ID \
--project="PROJECT_ID"
Reemplaza lo siguiente:
CLUSTER_ID: Es el nombre del clúster de destino.PROJECT_ID: Es el ID del proyecto de destino. Google Cloud
Crea o selecciona un clúster
Si aún no lo hiciste, crea un clúster de Distributed Cloud conectado como se describe en Crea un clúster. Cuando crees el clúster, especifica al menos 8 direcciones IP virtuales (VIP). Los contenedores de Kubernetes que ejecutan tus cargas de trabajo deservicio usarán estas VIP Google Cloud .
Si usas un clúster existente, usa el siguiente comando para verificar que haya suficientes VIP disponibles en ese clúster:
kubectl get cluster --all-namespaces -o jsonpath="{.items[0].spec.loadBalancer.addressPools}"
El comando muestra un resultado similar al siguiente:
[
{
"addresses": [
"10.200.11.188-10.200.11.196"
],
"name": "loadBalancerAddressPool-1"
}
]
Si no hay suficientes VIP aprovisionadas en el clúster, aparece el siguiente error,
en el que n es la cantidad requerida de VIP y m es la cantidad de VIP descubiertas en
el clúster:
Cluster has less than n external IPs, got m.
Si recibes este error, debes borrar y volver a crear el clúster con una cantidad suficiente de VIP.
Configura el subdominio de Google Cloud servicio
Antes de implementar el primer Google Cloud servicio en una zona de Distributed Cloud conectado, tienes la opción de personalizar el subdominio en el que todos los Google Cloud servicios implementados en esa zona escucharán las conexiones. No puedes modificar este subdominio después de implementar al menos un servicio en esa zona de Distributed Cloud.
Usa el siguiente comando para ver la configuración del subdominio:
kubectl -n dns-system get celldns cell-dns -o yaml
El comando muestra un resultado similar al siguiente:
apiVersion: system.private.gdc.goog/v1alpha1
kind: CellDNS
metadata:
name: cell-dns
namespace: dns-system
spec:
delegatedSubdomain: private.goog
Usa el siguiente comando para modificar la configuración del subdominio:
kubectl -n dns-system edit celldns cell-dns
Implementa un Google Cloud servicio en Distributed Cloud conectado
Para implementar un Google Cloud servicio en tu clúster de Distributed Cloud conectado, sigue los pasos de implementación que se describen en la documentación de ese servicio.
Configura elservicio implementado Google Cloud
En esta sección, se describen los pasos de configuración posteriores a la implementación que puedes completar según tus requisitos comerciales.
Reenvía consultas de DNS del DNS interno al DNS del clúster
Cuando implementas un Google Cloud servicio en tu clúster de Distributed Cloud conectado, se implementa un servidor DNS dedicado para ese servicio en el clúster. Te recomendamos que reenvíes las consultas de DNS para el subdominio del servicio al servidor DNS recién creado en el clúster.
Usa los siguientes comandos para obtener el subdominio del clúster:
CLUSTER_SUBDOMAIN=$(kubectl get configmap -n \ $(kubectl get clusters -A -o jsonpath="{.items[0].metadata.namespace}") \ dns-prefix -o jsonpath="{.data.dnsPrefix}") DELEGATED_SUBDOMAIN=$(kubectl get celldns -n dns-system cell-dns -o \ jsonpath="{.spec.delegatedSubdomain}") CLUSTER_FQDN="${CLUSTER_SUBDOMAIN?}.${DELEGATED_SUBDOMAIN?}" echo "${CLUSTER_FQDN?}"El último comando muestra un resultado similar al siguiente:
my-zone.google.private.googUsa el siguiente comando para obtener la VIP del servidor DNS en el clúster:
DNS_EXT_IP=$(k -n dns-system get service gpc-coredns-external-tcp -o "jsonpath={.status.loadBalancer.ingress[0].ip}")Configura tu servidor DNS interno para reenviar las consultas de DNS para elservicio Google Cloud implementado a la VIP que obtuviste en el paso anterior. Por ejemplo:
Para
dnsmasq, agrega lo siguiente a/etc/dnsmasq.conf:server=/${CLUSTER_FQDN?}/${DNS_EXT_IP?}Para CoreDNS, agrega lo siguiente al Corefile:
${CLUSTER_FQDN?}:53 { errors cache 30 forward . ${DNS_EXT_IP?} { max_concurrent 1000 } }
Prueba la resolución de DNS
Usa el siguiente comando dig para probar la resolución de dominio adecuada. Presta especial atención a la ANSWER SECTION:
dig "ais-core.${CLUSTER_FQDN?}"
El comando muestra un resultado similar al siguiente:
...
;; ANSWER SECTION:
ais-core.my-zone.google.private.goog. 300 IN A 10.200.0.0
...
Recupera el certificado autofirmado para elservicio implementado Google Cloud
Cuando implementas un Google Cloud servicio en tu clúster de Distributed Cloud conectado, Distributed Cloud conectado emite un certificado autofirmado que luego usa para encriptar el tráfico de red de ese servicio. Te recomendamos que recuperes este certificado y configures tu entorno comercial para que confíe en él.
Para obtener este certificado en formato codificado en PEM, usa el siguiente comando:
kubectl get secret -n cert-manager-cluster-resources web-ca-cert -o jsonpath="{.data.ca\.crt}" | base64 -d
Distributed Cloud conectado genera varios paquetes de confianza en todo el clúster. Estos paquetes de confianza se almacenan como ConfigMaps en cada espacio de nombres del clúster. que son las siguientes:
trust-store-internal-only. Contiene autoridades certificadoras (AC) para los servicios internos de Distributed Cloud conectado.trust-store-root-ext. Contiene todas las AC entrust-store-root-ext, además de la AC que firmó el certificado autofirmado del servicio de destino Google Cloud . Activa este paquete de confianza en un pod si necesitas que ese pod acceda alservicio de destino Google Cloud .trust-store-user-ext. Contiene todas las AC entrust-store-root-ext, además de las AC que agregaste de forma manual. Activa este paquete en un pod si necesitas que ese pod acceda alservicio de destino y a cualquier recurso interno que use certificados firmados por las AC que agregaste de forma manual. Google Cloud
Usa el siguiente comando para ver el ConfigMap de destino:
kubectl -n default get configmap trust-store-user-root-ext -o yaml
El siguiente resultado de ejemplo muestra un recurso ConfigMap trust-store-user-root-ext típico:
apiVersion: v1
binaryData:
ca.jks: WW91IGFyZSBhd2Vzb21lIQo=
data:
ca.crt: |-
-----BEGIN CERTIFICATE-----
WW91IGFyZSBncmVhdCEK
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
WW91IGFyZSBmYW50YXN0aWMhCg==
-----END CERTIFICATE-----
kind: ConfigMap
metadata:
labels:
trust.cert-manager.io/bundle: trust-store-user-root-ext
name: trust-store-user-root-ext
namespace: default
Configura unservicio implementado para que confíe en tus propios certificados Google Cloud
Puedes crear un secreto de TLS en tu clúster de Distributed Cloud conectado y anotarlo con la anotación security.private.gdc.goog/bundles=trust-store-user-root-ext en el espacio de nombres cert-manager-cluster-resources. Esto permite que tu servicio implementado Google Cloud
confíe en tus servicios internos de terceros para facilitar el intercambio de datos entre
ellos.
Cuando aplicas este Secret a tu clúster, el servicio implementado confía en el certificado de la AC almacenado en el ca.crt archivo al que se hace referencia en el Secret. Google Cloud Por ejemplo:
apiVersion: v1
data:
ca.crt: base64EncodedCaCert
tls.crt: base64EncodedCert
tls.key: base64EncodedKey
kind: Secret
metadata:
annotations:
security.private.gdc.goog/bundles: trust-store-user-root-ext
name: my-corporate-cert
namespace: cert-manager-cluster-resources
type: kubernetes.io/tls
Configura un proveedor de autenticación
Puedes configurar un proveedor de autenticación para facilitar el acceso a través de la interfaz de usuario del servicio implementado Google Cloud . En el siguiente ejemplo, se muestra una configuración para un OpenID Connect proveedor:
apiVersion: authentication.gke.io/v2alpha1
kind: ClientConfig
metadata:
name: default
namespace: kube-public
spec:
authentication:
- name: "google-oidc"
oidc:
clientID: "my-supersecret-client-id.apps.googleusercontent.com"
clientSecret: "my-supersecret-secret"
issuerURI: "https://accounts.google.com"
scopes: "email"
userClaim: "email"
name: "default"
Para obtener más información, consulta Configura el Servicio de identidad de GKE para clústeres individuales.
Usa unservicio implementado Google Cloud
Consulta la documentación del Google Cloud servicio implementado para obtener información sobre cómo configurarlo para cumplir con tus requisitos comerciales.
Quita unservicio implementado Google Cloud
Para quitar unservicio implementado de tu clúster de Distributed Cloud conectado, sigue los pasos que se indican en la documentación de ese servicio. Google Cloud Si completaste alguno de los pasos opcionales posteriores a la implementación que se describen en esta página, también haz lo siguiente:
- Inhabilita el reenvío de DNS al subdominio del servicio en tu DNS interno.
- Inhabilita la confianza para el certificado autofirmado del servicio donde se haya establecido esa confianza.