La registrazione di un cluster Kubernetes esterno Google Cloud richiede i seguenti passaggi oltre al completamento dei prerequisiti generali.
Verifica la connettività di rete
Per registrare correttamente il cluster, devi assicurarti che i seguenti domini siano raggiungibili dal tuo cluster Kubernetes.
cloudresourcemanager.googleapis.com
risolve i metadati relativi al Google Cloud progetto a cui è collegato il cluster.oauth2.googleapis.com
per ottenere token OAuth di breve durata per le operazioni dell'agente sugkeconnect.googleapis.com
.gkeconnect.googleapis.com
per stabilire il canale utilizzato per ricevere le richieste Google Cloud e inviare le risposte.gkehub.googleapis.com
per creare risorse di appartenenza al parco risorse Google Cloudcorrispondenti al cluster a cui ti stai connettendo Google Cloud.www.googleapis.com
per autenticare i token di servizio provenienti dalle richieste di servizio in entrata. Google Cloudgcr.io
estorage.googleapis.com
per estrarre l'immagine dell'agente GKE Connect.
Se vuoi registrare il cluster utilizzando Workload Identity del parco risorse, devono essere raggiungibili anche i seguenti domini:
securetoken.googleapis.com
iamcredentials.googleapis.com
sts.googleapis.com
Se utilizzi un proxy per Connect, devi anche aggiornare la lista consentita del proxy specificando i domini pertinenti.
Se utilizzi gcloud per registrare il tuo cluster Kubernetes, anche questi domini devono essere raggiungibili nell'ambiente in cui esegui i comandi gcloud.
Utilizzo dei Controlli di servizio VPC
Se vuoi utilizzare Controlli di servizio VPC per una maggiore sicurezza dei dati nella tua applicazione, devi assicurarti che i seguenti servizi siano inclusi nel perimetro di servizio:
- API Resource Manager (
cloudresourcemanager.googleapis.com
) - API GKE Connect (
gkeconnect.googleapis.com
) - API Fleet (
gkehub.googleapis.com
)
Se vuoi registrare il tuo cluster con Workload Identity del parco risorse abilitato, sono necessari anche i seguenti servizi:
- API IAM Service Account Credentials (
iamcredentials.googleapis.com
) - API Security Token Service (
sts.googleapis.com
)
Devi anche configurare la connettività privata per accedere alle API pertinenti. Scopri come farlo in Configurazione della connettività privata.
Configurare l'identità
Tutte le opzioni di registrazione manuale dei cluster al di fuori di Google Cloud richiedono la configurazione dell'autenticazione a Google. Può essere:
- Workload Identity del parco risorse (consigliata se disponibile). Scopri di più sui vantaggi dell'attivazione di Workload Identity del parco risorse in Utilizzare Workload Identity del parco risorse.
- Un Google Cloud account di servizio
I cluster collegati possono essere registrati con Workload Identity del parco risorse abilitato se il cluster soddisfa i prerequisiti dei cluster collegati, come descritto di seguito. In caso contrario, registra i cluster collegati con un Google Cloud account di servizio per l'autenticazione. La sezione successiva mostra come creare un account di servizio.
Crea un Google Cloud account di servizio utilizzando gcloud
Per registrare manualmente un cluster utilizzando un Google Cloud account di servizio, è necessario un file JSON contenente le credenziali dell'account di servizio. Per seguire il principio del privilegio minimo, ti consigliamo di creare un account di servizio distinto per ogni cluster Kubernetes registrato e di associare solo i ruoli IAM per il cluster corrispondente.
Per creare questo file, segui questi passaggi:
gcloud
Crea un account di servizio eseguendo questo comando:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME --project=FLEET_HOST_PROJECT_ID
Elenca tutti gli account di servizio di un progetto eseguendo questo comando:
gcloud iam service-accounts list --project=FLEET_HOST_PROJECT_ID
Se crei un account di servizio distinto per ogni cluster Kubernetes registrato, associa il ruolo IAM gkehub.connect all'account di servizio per il cluster corrispondente con una condizione IAM sul nome dell'appartenenza al cluster:
MEMBERSHIP_NAME=MEMBERSHIP_NAME
FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID
SERVICE_ACCOUNT_NAME=SERVICE_ACCOUNT_NAME
gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \
--member="serviceAccount:${SERVICE_ACCOUNT_NAME}@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \
--role="roles/gkehub.connect" \
--condition "expression=resource.name == \
'projects/${FLEET_HOST_PROJECT_ID}/locations/global/memberships/${MEMBERSHIP_NAME}',\
title=bind-${SERVICE_ACCOUNT_NAME}-to-${MEMBERSHIP_NAME}"
In caso contrario, associa il ruolo al account di servizio per tutti i cluster nel progetto senza la condizione.
FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID
gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \
--member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \
--role="roles/gkehub.connect"
Scarica il file JSON della chiave privata dell'account di servizio. Devi utilizzare questo file quando registri un cluster:
FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID
gcloud iam service-accounts keys create LOCAL_KEY_PATH \
--iam-account=SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com \
--project=${FLEET_HOST_PROJECT_ID}
dove:
- FLEET_HOST_PROJECT_ID è l'ID Google Cloud progetto in cui vuoi registrare i cluster. Scopri come trovare questo valore.
- SERVICE_ACCOUNT_NAME è il nome visualizzato che scegli per il [Service Account].
- MEMBERSHIP_NAME è il nome dell'appartenenza che scegli per rappresentare il cluster in modo univoco durante la registrazione.
- LOCAL_KEY_PATH è un percorso file locale in cui vuoi
salvare la chiave privata dell'account di servizio, sotto forma di file JSON. Ti consigliamo di assegnare un nome al file utilizzando il nome dell'account di servizio e il tuo ID progetto, ad esempio
/tmp/creds/[SERVICE_ACCOUNT_NAME]-[FLEET_HOST_PROJECT_ID].json
.
Prerequisiti del cluster collegato
A seconda del tipo di cluster Kubernetes di terze parti che vuoi registrare come cluster collegato, potresti dover soddisfare alcuni requisiti aggiuntivi per installare l'agente Connect e/o utilizzare Workload Identity del parco risorse.
Configura le limitazioni del contesto di sicurezza (SCC) (cluster OpenShift)
Nei cluster OpenShift OKE e OKD, gli amministratori possono utilizzare le SCC per controllare le autorizzazioni per i pod. Per consentire l'installazione di Connect Agent nel cluster, devi creare un SCC personalizzato.
La seguente definizione di SCC di esempio specifica l'insieme di condizioni con cui Connect Agent deve essere eseguito per essere accettato nel cluster:
# Connect Agent SCC apiVersion: security.openshift.io/v1 kind: SecurityContextConstraints metadata: name: gke-connect-scc allowPrivilegeEscalation: false # This is redundant with non-root + disallow privilege escalation, # but we provide it for defense in depth. requiredDropCapabilities: - ALL runAsUser: type: MustRunAsNonRoot seLinuxContext: type: RunAsAny supplementalGroups: type: MustRunAs ranges: - min: 1 max: 65535 fsGroup: type: MustRunAs ranges: - min: 1 max: 65535 volumes: - secret - projected readOnlyRootFilesystem: true seccompProfiles: - docker/default users: groups: # Grants all service accounts in the gke-connect namespace access to this SCC - system:serviceaccounts:gke-connect
Supponendo che tu abbia salvato la definizione dell'SCC come gke-connect-scc.yaml
, utilizza lo strumento a riga di comando OpenShift oc
per creare l'SCC gke-connect-scc
per il tuo cluster, come segue:
$ oc create -f gke-connect-scc.yaml
Per verificare che il controllo della conformità dei contenuti personalizzato sia stato creato, esegui il seguente comando oc
:
$ oc get scc | grep gke-connect-scc
Requisiti di Workload Identity del parco risorse
Puoi registrare i cluster collegati con Workload Identity abilitato per il parco risorse se la tua piattaforma crea un endpoint OIDC pubblico per il cluster (o ti consente di crearne uno) oppure se hai abilitato la ricerca dell'emittente dell'account di servizio Kubernetes per il cluster. Se non riesci a soddisfare questi requisiti, devi registrare i cluster collegati con un Google Cloud account di servizio per l'autenticazione.
Per tipi di cluster specifici, consulta quanto segue:
- Cluster OpenShift: possono essere registrati con Workload Identity del parco risorse abilitata dopo aver configurato il tuo SCC personalizzato, come descritto sopra.
- kind clusters: per poter utilizzare Workload Identity del parco risorse, è necessario che sia abilitata la ricerca dell'emittente dell'account di servizio. Questa opzione è attiva per impostazione predefinita dalla versione 1.20 di Kubernetes. Se devi attivare questa funzionalità, segui le istruzioni riportate in Proiezione del volume di token degli account di servizio. Il rilevamento dell'emittente dell'account di servizio viene attivato automaticamente quando è attivato il progetto del volume di token dell'account di servizio.
Passaggi successivi
Segui le istruzioni per registrare un cluster.