Distributed Cloud connetted supporta il deployment di una serie di servizi. Google Cloud Questi carichi di lavoro del servizio vengono eseguiti in container Kubernetes sui cluster connessi a Distributed Cloud.
Servizi Google Cloud supportati
Distributed Cloud connetto supporta il deployment dei seguenti servizi Google Cloud :
| Tipo di servizio | Inclusi nei costi di GDC Connected | Fatturazione separata |
|---|---|---|
| Computing | Google Distributed Cloud solo software VM Runtime su Google Distributed Cloud |
Sistemi operativi guest (devi ottenere le tue licenze) |
| Spazio di archiviazione | Archiviazione non elaborata (volume permanente) Container Storage Interface (CSI) Archiviazione ibrida |
Software Defined Storage (SDS), come Symcloud Storage (devi ottenere le tue licenze) |
| Networking | API Edge Network Supporto VLAN Plug-in GKE Custom Network Interface (CNI) Bilanciatore del carico L4 in bundle GKE |
Non applicabile |
| AI/ML | Deployment di modelli AutoML nei container | Non applicabile |
| Database | Nessuno | AlloyDB Omni (anteprima) Soluzioni di database di terze parti, come MongoDB (devi ottenere le tue licenze) |
| Osservabilità | Cloud Logging Cloud Monitoring API Cloud Logging Log e metriche GDCc |
Prometheus per l'osservabilità disconnessa Log e metriche personalizzati a livello di applicazione |
| Config Management | Config Sync Pacchetti del parco risorse (anteprima) |
Non applicabile |
| Gestione | Dashboard Google Kubernetes Engine nella Google Cloud console Connect Gateway Lo kubectl strumento localeAggiornamenti software connessi a Distributed Cloud |
Non applicabile |
| Sicurezza | Integrazione di Cloud Key Management Service Unità Self-Encrypting Disk (SED) Identità del workload del parco risorse Audit logging |
Non applicabile |
Prerequisiti
Prima di poter eseguire il deployment dei servizi Google Cloud su Distributed Cloud con Google Cloud connetto, devi completare i prerequisiti elencati in questa sezione.
Ottenere le credenziali del cluster
Utilizza il seguente comando per ottenere le credenziali per accedere al cluster di destinazione:
gcloud container hub memberships get-credentials CLUSTER_ID \
--project="PROJECT_ID"
Sostituisci quanto segue:
CLUSTER_ID: il nome del cluster di destinazione.PROJECT_ID: l'ID del progetto Google Cloud di destinazione.
Crea o seleziona un cluster
Se non l'hai ancora fatto, crea un cluster connesso a Distributed Cloud come descritto in Crea un cluster. Quando crei il cluster, specifica almeno 8 indirizzi IP virtuali (VIP). Questi VIP verranno utilizzati dai container Kubernetes che eseguono i workload del servizio Google Cloud .
Se utilizzi un cluster esistente, esegui il comando seguente per verificare che siano disponibili VIP sufficienti su questo cluster:
kubectl get cluster --all-namespaces -o jsonpath="{.items[0].spec.loadBalancer.addressPools}"
Il comando restituisce un output simile al seguente:
[
{
"addresses": [
"10.200.11.188-10.200.11.196"
],
"name": "loadBalancerAddressPool-1"
}
]
Se non sono stati sottoposti a provisioning VIP sufficienti sul cluster, viene visualizzato il seguente errore,
dove n è il numero richiesto di VIP e m è il numero di VIP rilevati sul
cluster:
Cluster has less than n external IPs, got m.
Se visualizzi questo errore, devi eliminare e ricreare il cluster con un numero sufficiente di VIP.
Configura il sottodominio del servizio Google Cloud
Prima di eseguire il deployment del primo servizio Google Cloud in una zona connessa a Distributed Cloud, hai la possibilità di personalizzare il sottodominio su cui tutti i servizi Google Cloud di cui è stato eseguito il deployment in quella zona ascolteranno le connessioni. Non puoi modificare questo sottodominio dopo aver eseguito il deployment di almeno un servizio in quella zona Distributed Cloud.
Utilizza il seguente comando per visualizzare la configurazione del sottodominio:
kubectl -n dns-system get celldns cell-dns -o yaml
Il comando restituisce un output simile al seguente:
apiVersion: system.private.gdc.goog/v1alpha1
kind: CellDNS
metadata:
name: cell-dns
namespace: dns-system
spec:
delegatedSubdomain: private.goog
Utilizza il seguente comando per modificare la configurazione del sottodominio:
kubectl -n dns-system edit celldns cell-dns
Esegui il deployment di un servizio Google Cloud su Distributed Cloud connesso
Per eseguire il deployment di un servizio Google Cloud sul cluster connesso a Distributed Cloud, segui i passaggi di deployment descritti nella documentazione del servizio.
Configura il servizio Google Cloud di cui è stato eseguito il deployment
Questa sezione descrive i passaggi di configurazione post-deployment che puoi scegliere di completare in base ai requisiti aziendali.
Inoltra le query DNS dal DNS interno al DNS del cluster
Quando esegui il deployment di un servizio Google Cloud sul cluster connesso a Distributed Cloud, sul cluster viene eseguito il deployment di un server DNS dedicato per quel servizio. Ti consigliamo di inoltrare le query DNS per il sottodominio del servizio al server DNS appena creato sul cluster.
Utilizza i seguenti comandi per ottenere il sottodominio del cluster:
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?}"L'ultimo comando restituisce un output simile al seguente:
my-zone.google.private.googUtilizza questo comando per ottenere il VIP del server DNS on-cluster:
DNS_EXT_IP=$(k -n dns-system get service gpc-coredns-external-tcp -o "jsonpath={.status.loadBalancer.ingress[0].ip}")Configura il server DNS interno per inoltrare le query DNS per il servizio Google Cloud di cui è stato eseguito il deployment all'indirizzo VIP ottenuto nel passaggio precedente. Ad esempio:
Per
dnsmasq, aggiungi quanto segue a/etc/dnsmasq.conf:server=/${CLUSTER_FQDN?}/${DNS_EXT_IP?}Per CoreDNS, aggiungi quanto segue al Corefile:
${CLUSTER_FQDN?}:53 { errors cache 30 forward . ${DNS_EXT_IP?} { max_concurrent 1000 } }
Testare la risoluzione DNS
Utilizza il seguente comando dig per verificare la corretta risoluzione del dominio. Presta particolare attenzione a ANSWER SECTION:
dig "ais-core.${CLUSTER_FQDN?}"
Il comando restituisce un output simile al seguente:
...
;; ANSWER SECTION:
ais-core.my-zone.google.private.goog. 300 IN A 10.200.0.0
...
Recupera il certificato autofirmato per il servizio Google Cloud di cui è stato eseguito il deployment
Quando esegui il deployment di un servizio Google Cloud sul cluster connesso a Distributed Cloud, Distributed Cloud connesso emette un certificato autofirmato che utilizza poi per criptare il traffico di rete per quel servizio. Ti consigliamo di recuperare questo certificato e configurare il tuo ambiente aziendale in modo che lo consideri attendibile.
Per ottenere questo certificato in formato con codifica PEM, utilizza il seguente comando:
kubectl get secret -n cert-manager-cluster-resources web-ca-cert -o jsonpath="{.data.ca\.crt}" | base64 -d
Distributed Cloud Connected genera una serie di bundle di attendibilità in tutto il cluster. Questi bundle di attendibilità vengono archiviati come ConfigMap in ogni spazio dei nomi del cluster. Questi sono:
trust-store-internal-only. Contiene le autorità di certificazione (CA) per i servizi interni di Distributed Cloud connesso.trust-store-root-ext. Contiene tutte le CA intrust-store-root-ext, oltre alla CA che ha firmato il certificato autofirmato del servizioGoogle Cloud di destinazione. Monta questo bundle di attendibilità in un pod se devi che questo pod acceda al servizio Google Cloud di destinazione.trust-store-user-ext. Contiene tutte le CA intrust-store-root-ext, oltre a quelle che hai aggiunto manualmente. Monta questo bundle in un pod se vuoi che il pod acceda sia al servizio Google Cloud di destinazione sia a qualsiasi risorsa interna che utilizza certificati firmati dalle CA che hai aggiunto manualmente.
Utilizza il seguente comando per visualizzare ConfigMap di destinazione:
kubectl -n default get configmap trust-store-user-root-ext -o yaml
L'output di esempio seguente mostra una risorsa ConfigMap trust-store-user-root-ext tipica:
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 un servizio Google Cloud di cui è stato eseguito il deployment in modo che consideri attendibili i tuoi certificati
Puoi creare un secret TLS nel cluster Distributed Cloud connesso e
annotarlo con l'annotazione security.private.gdc.goog/bundles=trust-store-user-root-ext
nello spazio dei nomi cert-manager-cluster-resources. In questo modo, il servizio di cui è stato eseguito il deployment Google Cloud
considera attendibili i tuoi servizi di terze parti interni per facilitare lo scambio di dati tra
loro.
Quando applichi questo secret al cluster, il servizio Google Cloud di cui è stato eseguito il deployment considera attendibile il
certificato CA archiviato nel file ca.crt a cui viene fatto riferimento nel secret. Ad esempio:
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 provider di autenticazione
Puoi configurare un fornitore di autenticazione per facilitare l'accesso tramite l'interfaccia utente del servizioGoogle Cloud di cui è stato eseguito il deployment. L'esempio seguente mostra una configurazione per un provider OpenID Connect:
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"
Per saperne di più, consulta Informazioni sull'autenticazione tramite identità di terze parti.
Utilizza un servizio di cui è stato eseguito il deployment Google Cloud
Consulta la documentazione del servizio Google Cloud di cui è stato eseguito il deployment per informazioni su come configurarlo per soddisfare i requisiti della tua attività.
Rimuovere un servizio Google Cloud di cui è stato eseguito il deployment
Per rimuovere un servizio di cui è stato eseguito il deployment Google Cloud dal cluster connesso a Distributed Cloud, segui i passaggi descritti nella documentazione del servizio. Se hai completato uno dei passaggi post-implementazione facoltativi descritti in questa pagina, esegui anche le seguenti operazioni:
- Disabilita il forwarding DNS al sottodominio del servizio nel tuo DNS interno.
- Disattiva l'attendibilità del certificato autofirmato del servizio ovunque sia stata stabilita.