Distributed Cloud connecté est compatible avec le déploiement d'un certain nombre de Google Cloud services. Ces charges de travail de service s'exécutent dans des conteneurs Kubernetes sur vos clusters Distributed Cloud connecté.
Services Google Cloud compatibles
Distributed Cloud connecté est compatible avec le déploiement des Google Cloud services suivants :
| Type de service | Inclus dans les coûts de GDC connecté | Facturés séparément |
|---|---|---|
| Calcul | Google Distributed Cloud (logiciel uniquement) Environnement d'exécution des VM sur Google Distributed Cloud |
Systèmes d'exploitation invités (vous devez obtenir vos propres licences) |
| Stockage | Interface de stockage en conteneurs (CSI) Stockage hybride |
Stockage défini par logiciel (SDS), tel que Symcloud Storage (vous devez obtenir vos propres licences) |
| Mise en réseau | API Edge Network Compatibilité avec les VLAN Plug-ins GKE Custom Network Interface (CNI) Équilibreur de charge L4 groupé GKE |
Non applicable |
| IA/ML | Déploiement de modèles AutoML dans des conteneurs | Non applicable |
| Base de données | Aucun | AlloyDB Omni (autogéré) (aperçu) Solutions de base de données tierces, telles que MongoDB (vous devez obtenir vos propres licences) |
| Observabilité | Cloud Logging Cloud Monitoring API Cloud Logging Journaux et métriques GDCc Journalisation du parc Surveillance du parc |
Prometheus pour l'observabilité déconnectée Journaux et métriques personnalisés au niveau de l'application |
| Gestion de la configuration | Config Sync (y compris les packages de parc) | Non applicable |
| Gestion | Tableau de bord Google Kubernetes Engine dans la Google Cloud console Passerelle de connexion Outil local kubectlMises à niveau logicielles de Distributed Cloud connecté Gestion des équipes et des espaces de noms du parc gcloud CLI |
Non applicable |
| Sécurité | Intégration de Cloud Key Management Service Lecteurs SED (Self-Encrypting Disk) Identité de charge de travail du parc Journalisation d'audit |
Non applicable |
Prérequis
Pour pouvoir déployer Google Cloud des services sur Distributed Cloud connecté, vous devez remplir les prérequis listés dans cette section.
Obtenir les identifiants du cluster
Utilisez la commande suivante pour obtenir les identifiants permettant d'accéder au cluster cible :
gcloud container hub memberships get-credentials CLUSTER_ID \
--project="PROJECT_ID"
Remplacez les éléments suivants :
CLUSTER_ID: nom du cluster cible.PROJECT_ID: ID du projet cible. Google Cloud
Créer ou sélectionner un cluster
Si vous ne l'avez pas déjà fait, créez un cluster Distributed Cloud connecté comme décrit dans Créer un cluster. Lors de la création du cluster, spécifiez au moins huit adresses IP virtuelles (VIP). Ces VIP seront utilisées par les conteneurs Kubernetes qui exécutent vos Google Cloud charges de travail de service.
Si vous utilisez un cluster existant, exécutez la commande suivante pour vérifier qu'il dispose d'un nombre suffisant de VIP :
kubectl get cluster --all-namespaces -o jsonpath="{.items[0].spec.loadBalancer.addressPools}"
La commande renvoie un résultat semblable à celui-ci :
[
{
"addresses": [
"10.200.11.188-10.200.11.196"
],
"name": "loadBalancerAddressPool-1"
}
]
Si le cluster ne dispose pas d'un nombre suffisant de VIP provisionnées, l'erreur suivante s'affiche,
où n correspond au nombre de VIP requis et m au nombre de VIP détectées sur
le cluster :
Cluster has less than n external IPs, got m.
Si cette erreur s'affiche, vous devez supprimer le cluster et le recréer avec un nombre suffisant de VIP.
Configurer le Google Cloud sous-domaine du service
Avant de déployer le premier Google Cloud service dans une zone Distributed Cloud connecté, vous avez la possibilité de personnaliser le sous-domaine sur lequel tous les Google Cloud services déployés dans cette zone écouteront les connexions. Vous ne pouvez pas modifier ce sous-domaine après avoir déployé au moins un service dans cette zone Distributed Cloud.
Exécutez la commande suivante pour afficher la configuration du sous-domaine :
kubectl -n dns-system get celldns cell-dns -o yaml
La commande renvoie un résultat semblable à celui-ci :
apiVersion: system.private.gdc.goog/v1alpha1
kind: CellDNS
metadata:
name: cell-dns
namespace: dns-system
spec:
delegatedSubdomain: private.goog
Exécutez la commande suivante pour modifier la configuration du sous-domaine :
kubectl -n dns-system edit celldns cell-dns
Déployer un Google Cloud service sur Distributed Cloud connecté
Pour déployer un Google Cloud service sur votre cluster Distributed Cloud connecté suivez les étapes de déploiement décrites dans la documentation de ce service.
Configurer le service déployé Google Cloud
Cette section décrit les étapes de configuration post-déploiement que vous pouvez choisir d'effectuer en fonction de vos besoins commerciaux.
Transférer les requêtes DNS du DNS interne vers le DNS du cluster
Lorsque vous déployez un Google Cloud service sur votre cluster Distributed Cloud connecté, un serveur DNS dédié à ce service est déployé sur le cluster. Nous vous recommandons de transférer les requêtes DNS pour le sous-domaine du service vers le serveur DNS nouvellement créé sur le cluster.
Exécutez les commandes suivantes pour obtenir le sous-domaine du 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?}"La dernière commande renvoie un résultat semblable à celui-ci :
my-zone.google.private.googExécutez la commande suivante pour obtenir la VIP du serveur DNS sur le cluster :
DNS_EXT_IP=$(kubectl -n dns-system get service gpc-coredns-external-tcp -o "jsonpath={.status.loadBalancer.ingress[0].ip}")Configurez votre serveur DNS interne pour transférer les requêtes DNS du service déployé Google Cloud service vers la VIP que vous avez obtenue à l'étape précédente. Exemple :
Pour
dnsmasq, ajoutez ce qui suit à/etc/dnsmasq.conf:server=/${CLUSTER_FQDN?}/${DNS_EXT_IP?}Pour CoreDNS, ajoutez ce qui suit au Corefile :
${CLUSTER_FQDN?}:53 { errors cache 30 forward . ${DNS_EXT_IP?} { max_concurrent 1000 } }
Tester la résolution DNS
Exécutez la commande dig suivante pour tester la résolution de domaine appropriée. Portez une attention particulière à la ANSWER SECTION :
dig "ais-core.${CLUSTER_FQDN?}"
La commande renvoie un résultat semblable à celui-ci :
...
;; ANSWER SECTION:
ais-core.my-zone.google.private.goog. 300 IN A 10.200.0.0
...
Récupérer le certificat autosigné du service déployé Google Cloud
Lorsque vous déployez un Google Cloud service sur votre cluster Distributed Cloud connecté, Distributed Cloud connecté émet un certificat autosigné qu'il utilise ensuite pour chiffrer le trafic réseau de ce service. Nous vous recommandons de récupérer ce certificat et de configurer votre environnement d'entreprise pour qu'il lui fasse confiance.
Pour obtenir ce certificat au format encodé PEM, exécutez la commande suivante :
kubectl get secret -n cert-manager-cluster-resources web-ca-cert -o jsonpath="{.data.ca\.crt}" | base64 -d
Distributed Cloud connecté génère un certain nombre de groupes de confiance dans l'ensemble de votre cluster. Ces groupes de confiance sont stockés en tant que ConfigMaps dans chaque espace de noms du cluster. Les voici :
trust-store-internal-only: contient les autorités de certification (CA) pour les services internes de Distributed Cloud connecté.trust-store-root-ext: contient toutes les autorités de certification danstrust-store-root-ext, ainsi que l'autorité de certification qui a signé le certificat autosigné du service cible.Google Cloud Montez ce groupe de confiance dans un pod si vous avez besoin que ce pod accède au service Google Cloud cible.trust-store-user-root-ext: contient toutes les autorités de certification danstrust-store-root-ext, ainsi que toutes les autorités de certification que vous avez ajoutées manuellement. Montez ce groupe dans un pod si vous avez besoin que ce pod accède à la fois au service cible Google Cloud et à toutes les ressources internes qui utilisent des certificats signés par les autorités de certification que vous avez ajoutées manuellement.
Exécutez la commande suivante pour afficher le ConfigMap cible :
kubectl -n default get configmap trust-store-user-root-ext -o yaml
L'exemple de résultat suivant montre une ressource ConfigMap trust-store-user-root-ext typique :
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
Configurer un service déployé Google Cloud pour qu'il fasse confiance à vos propres certificats
Vous pouvez créer un secret TLS dans votre cluster Distributed Cloud connecté et l'annoter avec l'annotation security.private.gdc.goog/bundles=trust-store-user-root-ext dans l'espace de noms cert-manager-cluster-resources. Cela permet à votre service déployé Google Cloud
de faire confiance à vos services tiers internes pour faciliter l'échange de données entre
eux.
Lorsque vous appliquez ce secret à votre cluster, le service Google Cloud déployé fait confiance au certificat CA stocké dans le fichier ca.crt référencé dans le secret. Exemple :
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
Configurer un fournisseur d'authentification
Vous pouvez configurer un fournisseur d'authentification pour faciliter la connexion via l'interface utilisateur du service déployé Google Cloud . L'exemple suivant montre une configuration pour un OpenID Connect fournisseur :
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"
Pour en savoir plus, consultez Configurer GKE Identity Service pour des clusters individuels.
Utiliser un service déployé Google Cloud
Consultez la documentation du service déployé pour savoir comment le configurer afin de répondre à vos besoins commerciaux. Google Cloud
Supprimer un service déployé Google Cloud
Pour supprimer un service déployé Google Cloud de votre cluster Distributed Cloud connecté, suivez les étapes décrites dans la documentation de ce service. Si vous avez effectué l'une des étapes post-déploiement facultatives décrites sur cette page, procédez également comme suit :
- Désactivez le transfert DNS vers le sous-domaine du service dans votre DNS interne.
- Désactivez la confiance pour le certificat autosigné du service partout où cette confiance a été établie.