Un cluster Managed Service per Apache Kafka fornisce un ambiente per l'archiviazione e l'elaborazione di flussi di messaggi organizzati in argomenti.
Per creare un cluster, puoi utilizzare la console Google Cloud , Google Cloud CLI, la libreria client o l'API Managed Kafka. Non puoi utilizzare l'API Apache Kafka open source per creare un cluster.
Prima di iniziare
Verifica di conoscere quanto segue:
Ruoli e autorizzazioni richiesti per creare un cluster
Per ottenere le autorizzazioni
necessarie per creare un cluster,
chiedi all'amministratore di concederti il
ruolo IAM Editor cluster Kafka gestito (roles/managedkafka.clusterEditor)
nel progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per creare un cluster. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per creare un cluster sono necessarie le seguenti autorizzazioni:
-
Crea un cluster:
managedkafka.clusters.create
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Il ruolo Editor cluster Kafka gestito non consente di creare, eliminare o modificare argomenti e gruppi di consumatori nei cluster Managed Service per Apache Kafka. Né consente l'accesso al piano dati per pubblicare o utilizzare messaggi all'interno dei cluster. Per saperne di più su questo ruolo, consulta Ruoli predefiniti di Managed Service per Apache Kafka.
Proprietà di un cluster Managed Service per Apache Kafka
Quando crei o aggiorni un cluster Managed Service per Apache Kafka, devi specificare le seguenti proprietà.
Nome del cluster
Il nome o l'ID del cluster Managed Service per Apache Kafka che stai creando. Per linee guida su come assegnare un nome a un cluster, consulta Linee guida per assegnare un nome a una risorsa Managed Service per Apache Kafka. Il nome di un cluster è immutabile.
Località
La località in cui stai creando il cluster. La località deve essere una delle regioni Google Cloud supportate. La località di un cluster non può essere modificata in un secondo momento. Per un elenco di località disponibili, consulta le località di Managed Service per Apache Kafka.
Configurazione della capacità
La configurazione della capacità richiede di impostare il numero di vCPU e la quantità di memoria richiesta per la configurazione di Kafka. Per maggiori informazioni su come configurare la capacità di un cluster, consulta Pianificare le dimensioni del cluster Kafka.
Di seguito sono riportate le proprietà per la configurazione della capacità:
vCPUs: il numero di vCPU nel cluster. Sono richieste almeno 3 vCPU per cluster.
Memoria: la quantità di memoria assegnata al cluster. Devi eseguire il provisioning tra 1 GiB e 8 GiB per vCPU.
Ad esempio, se crei un cluster con 6 vCPU, la memoria minima che puoi allocare al cluster è 6 GiB (1 GiB per vCPU) e la massima è 48 GiB (8 GiB per vCPU).
Per ulteriori informazioni su come modificare la memoria e il numero di vCPU dopo la creazione di un cluster, consulta Aggiornare le dimensioni del cluster.
Configurazione di rete
La configurazione di rete è un elenco di subnet VPC in cui il cluster è accessibile. Per produrre o utilizzare i messaggi, i client devono essere in grado di raggiungere una di queste subnet.
Di seguito sono riportate alcune linee guida per la configurazione di rete:
Per un cluster è richiesta almeno una subnet. Il valore massimo è dieci.
Per un determinato cluster è consentita una sola subnet per rete.
Ogni subnet deve trovarsi nella stessa regione del cluster. Il progetto e la rete possono essere diversi.
Gli indirizzi IP dei broker e del server di bootstrap vengono allocati automaticamente in ogni subnet. Inoltre, le voci DNS per questi indirizzi IP vengono create nelle reti VPC corrispondenti.
Se aggiungi una subnet di un altro progetto, devi concedere le autorizzazioni al account di servizio gestito da Google associato al cluster. Per maggiori informazioni, consulta Connettere un cluster a più progetti.
Dopo aver creato il cluster, puoi aggiornare l'elenco delle subnet. Per saperne di più sul networking, consulta Configura il networking per Managed Service per Apache Kafka.
Etichette
Le etichette sono coppie chiave-valore che ti aiutano con l'organizzazione e l'identificazione.
Le etichette consentono di classificare le risorse in base all'ambiente. Esempi sono
"env:production" e "owner:data-engineering".
Puoi filtrare e cercare le risorse in base alle etichette. Ad esempio,
supponiamo che tu abbia più cluster Managed Service per Apache Kafka per
dipartimenti diversi. Puoi
configurare e cercare i cluster con l'etichetta "department:marketing"
per trovare rapidamente quello pertinente.
Configurazione del ribilanciamento
Questa impostazione determina se il servizio ribilancia automaticamente le repliche delle partizioni tra i broker.
Le modalità disponibili sono:
Bilanciamento automatico in caso di scalabilità verticale: quando questa opzione è attivata, il servizio attiva automaticamente un ribilanciamento delle repliche quando aumenti la scalabilità verticale del cluster. Questa modalità consente di mantenere una distribuzione uniforme del carico, ma potrebbe influire temporaneamente sulle prestazioni durante l'operazione di ribilanciamento.
Nessun ribilanciamento: se questa opzione è abilitata, il servizio non ribilancia automaticamente le repliche.
Crittografia
Managed Service per Apache Kafka può criptare i messaggi con Google-owned and Google-managed encryption keys (impostazione predefinita) o chiavi di crittografia gestite dal cliente (CMEK). Ogni messaggio è criptato at-rest e in transito. Il tipo di crittografia per un cluster è immutabile.
Google-owned and Google-managed encryption keys vengono utilizzati per impostazione predefinita. Queste chiavi vengono create, gestite e archiviate interamente da Google Cloud all'interno della sua infrastruttura.
Le CMEK sono chiavi di crittografia che gestisci utilizzando Cloud Key Management Service. Questa funzionalità ti consente di avere un maggiore controllo sulle chiavi utilizzate per criptare i dati inattivi all'interno dei servizi Google Cloud supportati. L'utilizzo di CMEK comporta costi aggiuntivi correlati a Cloud Key Management Service. Per l'utilizzo di CMEK, il portachiavi deve trovarsi nella stessa posizione delle risorse con cui lo utilizzi. Per saperne di più, consulta Configura la crittografia dei messaggi.
Configurazione mTLS
Se vuoi, puoi configurare mTLS come metodo di autenticazione alternativo che utilizza i certificati client. La configurazione include quanto segue:
Pool di CA: un elenco da 1 a 10 pool di Certificate Authority Service (CAS) considerati attendibili dal cluster per l'autenticazione client.
Regole di mapping dell'entità SSL: una proprietà del broker
ssl.principal.mapping.rulesfacoltativa, ma consigliata, per semplificare i nomi delle entità dei certificati lunghi da utilizzare negli ACL Kafka.
Per saperne di più su mTLS, consulta Configurare l'autenticazione mTLS.
Crea un cluster
Prima di creare un cluster, consulta la documentazione delle proprietà del cluster.
La creazione di un cluster richiede in genere 20-30 minuti.
Per creare un cluster:
Console
Nella console Google Cloud , vai alla pagina Cluster.
Seleziona Crea.
Viene visualizzata la pagina Crea cluster Kafka.
Per Nome cluster, inserisci una stringa.
Per maggiori informazioni su come assegnare un nome a un cluster, consulta le linee guida per assegnare un nome a una risorsa Managed Service per Apache Kafka.
In Posizione, inserisci una posizione supportata.
Per saperne di più sulle località supportate, consulta Località di Managed Service per Apache Kafka supportate.
Per la configurazione della capacità, inserisci i valori per Memoria e vCPU.
Per maggiori informazioni su come dimensionare un cluster Managed Service per Apache Kafka, consulta Pianificare le dimensioni del cluster Kafka.
Per Configurazione di rete, inserisci i seguenti dettagli:
- Progetto: il progetto in cui si trova la subnet. La subnet deve trovarsi nella stessa regione del cluster, ma il progetto potrebbe essere diverso.
- Rete: la rete a cui è connessa la subnet.
- Subnet: il nome della subnet.
- Percorso URI subnet: questo campo viene compilato automaticamente. In alternativa, puoi inserire qui il percorso della subnet. Il nome della subnet deve essere nel formato:
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_ID. - Fai clic su Fine.
(Facoltativo) Aggiungi altre subnet facendo clic su Aggiungi una subnet connessa.
Puoi aggiungere altre subnet, fino a un massimo di dieci.
Mantieni gli altri valori predefiniti.
Fai clic su Crea.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Esegui il comando
gcloud managed-kafka clusters create:gcloud managed-kafka clusters create CLUSTER_ID \ --location=LOCATION \ --cpu=CPU \ --memory=MEMORY \ --subnets=SUBNETS \ --auto-rebalance \ --encryption-key=ENCRYPTION_KEY \ --async \ --labels=LABELSSostituisci quanto segue:
CLUSTER_ID: l'ID o il nome del cluster.
Per maggiori informazioni su come assegnare un nome a un cluster, consulta le linee guida per assegnare un nome a una risorsa Managed Service per Apache Kafka.
LOCATION: la posizione del cluster.
Per saperne di più sulle località supportate, consulta Località di Managed Service per Apache Kafka.
CPU: Il numero di vCPU per il cluster.
Per maggiori informazioni su come dimensionare un cluster Managed Service per Apache Kafka, consulta Pianificare le dimensioni del cluster Kafka.
MEMORY: La quantità di memoria per il cluster. Utilizza le unità "MB", "MiB", "GB", "GiB", "TB" o "TiB". Ad esempio, "10 GiB".
SUBNETS: l'elenco delle subnet a cui connettersi. Utilizza le virgole per separare più valori di subnet.
Il formato della subnet è
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_ID.auto-rebalance: consente il ribilanciamento automatico delle partizioni degli argomenti tra i broker quando cambia il numero di CPU nel cluster. Questa opzione è attiva per impostazione predefinita.ENCRYPTION_KEY: l'ID della chiave di crittografia gestita dal cliente da utilizzare per il cluster.
Il formato è
projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.--async: consente al sistema di inviare la richiesta di creazione e restituire immediatamente una risposta, senza attendere il completamento dell'operazione. Con il flag--async, puoi continuare con altre attività mentre la creazione del cluster avviene in background. Se non utilizzi il flag, il sistema attende il completamento dell'operazione prima di restituire una risposta. Devi attendere il completamento dell'aggiornamento del cluster prima di poter continuare con altre attività.LABELS: le etichette da associare al cluster.
Per saperne di più sul formato delle etichette, consulta Etichette.
Ricevi una risposta simile alla seguente:
Create request issued for: [CLUSTER_ID] Check operation [projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID] for status.Memorizza OPERATION_ID per monitorare
progress.-
PROJECT_ID: il tuo Google Cloud ID progetto -
LOCATION: la posizione del cluster -
CLUSTER_ID: l'ID del cluster -
CPU_COUNT: il numero di vCPU per il cluster -
MEMORY: la quantità di memoria per il cluster, in byte. Esempio:3221225472. -
SUBNET_ID: l'ID subnet della subnet a cui connettersi. Esempio:default.
REST
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
Metodo HTTP e URL:
POST https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters?clusterId=CLUSTER_ID
Corpo JSON della richiesta:
{
"capacityConfig": {
"vcpuCount": CPU_COUNT,
"memoryBytes": MEMORY
},
"gcpConfig": {
"accessConfig": {
"networkConfigs": [
{
"subnet": "projects/PROJECT_ID/regions/LOCATION/subnetworks/SUBNET_ID"
}
]
}
}
}
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{
"name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.managedkafka.v1.OperationMetadata",
"createTime": "CREATE_TIME",
"target": "projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID",
"verb": "create",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
Terraform
Puoi utilizzare una risorsa Terraform per creare un cluster.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go in Installare le librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Go di Managed Service per Apache Kafka.
Per eseguire l'autenticazione in Managed Service per Apache Kafka, configura le Credenziali predefinite dell'applicazione(ADC). Per saperne di più, vedi Configura ADC per un ambiente di sviluppo locale.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java in Installare le librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java di Managed Service per Apache Kafka.
Per eseguire l'autenticazione in Managed Service per Apache Kafka, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura ADC per un ambiente di sviluppo locale.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python in Installare le librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Python di Managed Service per Apache Kafka.
Per eseguire l'autenticazione in Managed Service per Apache Kafka, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura ADC per un ambiente di sviluppo locale.
Monitora l'operazione di creazione del cluster
Puoi eseguire il seguente comando solo se hai eseguito gcloud CLI per creare il cluster.
La creazione di un cluster richiede in genere 20-30 minuti. Per monitorare l'avanzamento della creazione del cluster, il comando
gcloud managed-kafka clusters createutilizza un'operazione a lunga esecuzione (LRO), che puoi monitorare utilizzando il seguente comando:gcloud managed-kafka operations describe OPERATION_ID \ --location=LOCATIONSostituisci quanto segue:
OPERATION_IDcon il valore dell'ID operazione della sezione precedente.LOCATIONcon il valore della località della sezione precedente.
Risoluzione dei problemi
Di seguito sono riportati alcuni errori che potresti riscontrare durante la creazione dei cluster.
Service agent service-${PROJECT_NUMBER}@gcp-sa-managedkafka.iam.gserviceaccount.com
has not been granted the required role cloudkms.cryptoKeyEncrypterDecrypter to
encrypt data using the KMS key.
Il service agent di Managed Service per Apache Kafka non dispone dell'autorizzazione necessaria per accedere alla chiave Cloud KMS. Consulta la documentazione sui ruoli richiesti per configurare CMEK.
Service does not have permission to retrieve subnet. Please grant
service-${PROJECT_NUMBER}@gcp-sa-managedkafka.iam.gserviceaccount.com the
managedkafka.serviceAgent role in the IAM policy of the project
${SUBNET_PROJECT} and ensure the Compute Engine API is enabled in project
${SUBNET_PROJECT}
Il service agent di Managed Service per Apache Kafka non dispone del ruolo necessario per configurare il networking nella rete VPC in cui vengono eseguiti i client Kafka. Per saperne di più, consulta Connettere un cluster a più progetti.