Esegui il deployment di Redis su GKE utilizzando Redis Enterprise

La guida mostra come eseguire il deployment di Redis Enterprise nei cluster Google Kubernetes Engine (GKE).

Redis è un database NoSQL in memoria open source utilizzato principalmente per la memorizzazione nella cache. Dispone di replica integrata, scripting Lua, rimozione LRU, transazioni, persistenza su disco e alta affidabilità.

Redis Enterprise è una soluzione di livello aziendale che estende l'open source Redis con una gestione semplificata, tra cui la distribuzione dei dati con replica geografica, la scalabilità lineare del throughput delle operazioni, il tiering dei dati, funzionalità di sicurezza avanzate e altro ancora.

Redis Enterprise ha prezzi diversi per ogni opzione di deployment, tra cui: Software, Cloud o ibrido e multicloud.

Questa guida è destinata ad amministratori di piattaforme, architetti cloud e professionisti delle operazioni interessati al deployment di Redis Enterprise su Google Kubernetes Engine (GKE).

Obiettivi

  • Pianifica ed esegui il deployment dell'infrastruttura GKE per Redis
  • Esegui il deployment dell'operatore Redis Enterprise
  • Esegui il deployment di un cluster Redis Enterprise
  • Crea un database Redis Enterprise
  • Dimostrare l'autenticazione del database

Vantaggi

Redis Enterprise offre i seguenti vantaggi:

  • Un modo nativo di Kubernetes per gestire il ciclo di vita del cluster Redis Enterprise (REC) e dei database Redis Enterprise (REDB)
  • Utilizzo delle risorse mediante la collocazione di più database Redis all'interno di un singolo pod Kubernetes
  • Riduzione dell'overhead operativo grazie alla gestione delle attività di manutenzione di routine, come patch e upgrade
  • Supporto delle immagini software Redis da registri container privati, come Artifact Registry, per migliorare la sicurezza e la disponibilità dei container
  • Supporto di Google Cloud Managed Service per Prometheus per il monitoraggio e l'osservabilità del database
  • Funzionalità di sicurezza avanzate come crittografia, controlli dell'accesso e integrazione con il controllo dell'accesso basato sui ruoli (RBAC) di Kubernetes
  • Metodi di autenticazione avanzati, inclusi LDAP e gestori di credenziali di terze parti come Vault
  • Possibilità di configurare backup pianificati

Architettura di deployment

Redis Enterprise gestisce le seguenti risorse Kubernetes:

  • Il cluster Enterprise e la relativa configurazione in un StatefulSet. Il cluster è costituito da nodi Redis (pod) con pacchetti Redis installati. Questi nodi hanno processi in esecuzione per garantire che il nodo faccia parte di un cluster. Ogni nodo fornisce un container per eseguire più istanze di database (shard). Sebbene le best practice di Kubernetes indichino che un pod deve rappresentare un'applicazione con un container, Redis Enterprise esegue il deployment di più database Redis in un singolo container. Questo approccio offre un migliore utilizzo delle risorse, prestazioni e velocità effettiva della rete. Ogni contenitore dispone anche di un proxy a latenza zero per instradare e gestire il traffico verso processi di database Redis specifici all'interno di un contenitore.
  • La risorsa personalizzata RedisEnterpriseDatabase (REDB) che rappresenta le istanze di database Redis create all'interno del REC
  • Servizi Kubernetes che gestiscono istanze REDB come endpoint di database
  • Un pod controller chiamato Service Rigger che crea ed elimina gli endpoint del database quando un database viene creato o eliminato

In questo tutorial, crei un deployment uno-a-molti eseguendo il deployment di un REC in uno spazio dei nomi dedicato e utilizzando spazi dei nomi separati per i deployment delle applicazioni per un migliore isolamento.

Il seguente diagramma descrive i componenti di Redis Enterprise e il modo in cui sono interconnessi:

Il diagramma mostra un esempio di architettura Redis Enterprise.
Figura 1: un esempio di architettura Redis Enterprise.

In questo tutorial, configurerai il cluster Redis Enterprise in modo che sia ad alta disponibilità. Per fare ciò, il REC richiede un numero dispari di nodi e un minimo di tre nodi. Imposti anche regole di affinità, anti-affinità e incompatibilità dei nodi che garantiscono che ogni nodo Redis venga inserito in un nodo Kubernetes diverso e che i nodi Redis siano distribuiti uniformemente nel cluster Kubernetes.

L'utilizzo di più nodi e zone è fondamentale per ottenere un cluster GKE ad alta disponibilità per i seguenti motivi:

  • Tolleranza di errore: più nodi distribuiscono il carico di lavoro nel cluster, garantendo che, se un nodo non funziona, gli altri nodi possano assumere il controllo delle attività, evitando tempi di inattività e interruzioni del servizio.
  • Scalabilità: la presenza di più nodi consente lo scaling orizzontale aggiungendo o rimuovendo nodi in base alle necessità, garantendo un'allocazione ottimale delle risorse e soddisfacendo le maggiori richieste di traffico o workload.
  • Alta disponibilità: l'utilizzo di più zone all'interno di una regione garantisce la ridondanza e riduce al minimo il rischio di un singolo punto di errore. Se si verifica un'interruzione del servizio in un'intera zona di disponibilità, il cluster può continuare a essere eseguito in altre zone, mantenendo la disponibilità del servizio.
  • Ridondanza geografica: distribuendo i nodi tra le regioni, i dati e i servizi del cluster vengono distribuiti geograficamente, garantendo la resilienza a calamità naturali, interruzioni di corrente o altri problemi locali che potrebbero influire su una singola zona.
  • Aggiornamenti e manutenzione in sequenza: utilizzando più nodi, puoi eseguire aggiornamenti e manutenzione in sequenza sui singoli nodi senza influire sulla disponibilità complessiva del cluster. In questo modo il servizio è continuo e puoi eseguire gli aggiornamenti necessari e applicare le patch senza problemi.
  • Accordi sul livello del servizio (SLA): Google Cloud forniscono SLA per i deployment multizona, garantendo un livello minimo di uptime e disponibilità.

Costi

In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi.

I nuovi utenti di Google Cloud potrebbero avere diritto a una prova senza costi.

Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per saperne di più, consulta Esegui la pulizia.

Prima di iniziare

  1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  2. Installa Google Cloud CLI.

  3. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  4. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  5. Crea o seleziona un Google Cloud progetto.

    Ruoli richiesti per selezionare o creare un progetto

    • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
    • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l'autorizzazione resourcemanager.projects.create. Scopri come concedere i ruoli.
    • Creare un progetto Google Cloud :

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il progetto Google Cloud che stai creando.

    • Seleziona il progetto Google Cloud che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del progetto Google Cloud .

  6. Verifica che la fatturazione sia abilitata per il tuo progetto Google Cloud .

  7. Abilita le API Compute Engine, IAM, GKE e Resource Manager:

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin), che include l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

    gcloud services enable compute.googleapis.com iam.googleapis.com container.googleapis.com cloudresourcemanager.googleapis.com
  8. Installa Google Cloud CLI.

  9. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  10. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  11. Crea o seleziona un Google Cloud progetto.

    Ruoli richiesti per selezionare o creare un progetto

    • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
    • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l'autorizzazione resourcemanager.projects.create. Scopri come concedere i ruoli.
    • Creare un progetto Google Cloud :

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il progetto Google Cloud che stai creando.

    • Seleziona il progetto Google Cloud che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del progetto Google Cloud .

  12. Verifica che la fatturazione sia abilitata per il tuo progetto Google Cloud .

  13. Abilita le API Compute Engine, IAM, GKE e Resource Manager:

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin), che include l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

    gcloud services enable compute.googleapis.com iam.googleapis.com container.googleapis.com cloudresourcemanager.googleapis.com
  14. Concedi ruoli al tuo account utente. Esegui il seguente comando una volta per ciascuno dei seguenti ruoli IAM: roles/compute.securityAdmin, roles/compute.viewer, roles/container.clusterAdmin, roles/container.admin, roles/iam.serviceAccountAdmin, roles/iam.serviceAccountUser

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto.
    • USER_IDENTIFIER: l'identificatore del tuo account utente . Ad esempio: myemail@example.com.
    • ROLE: il ruolo IAM che concedi al tuo account utente.

Configura l'ambiente

In questo tutorial utilizzerai Cloud Shell per gestire le risorse ospitate su Google Cloud. Cloud Shell include il software necessario per questo tutorial, tra cui kubectl, la gcloud CLI e Terraform.

Per configurare l'ambiente con Cloud Shell:

  1. Avvia una sessione di Cloud Shell dalla console Google Cloud facendo clic su Icona di attivazione di Cloud Shell Attiva Cloud Shell nella consoleGoogle Cloud . Viene avviata una sessione nel riquadro inferiore della console Google Cloud .

  2. Imposta le variabili di ambiente:

    export PROJECT_ID=PROJECT_ID
    export KUBERNETES_CLUSTER_PREFIX=redis
    export REGION=us-central1
    

    Sostituisci PROJECT_ID: il tuo Google Cloud con il tuo ID progetto.

  3. Clona il repository GitHub:

    git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples
    
  4. Passa alla directory di lavoro:

    cd kubernetes-engine-samples/databases/redis-enterprise-operator
    

Crea l'infrastruttura del cluster

In questa sezione esegui uno script Terraform per creare un cluster GKE e un VPC privati, a disponibilità elevata e regionali.

Il seguente diagramma mostra un cluster GKE Standard regionale privato di cui è stato eseguito il deployment in tre zone diverse:

Per eseguire il deployment di questa infrastruttura, esegui i seguenti comandi da Cloud Shell:

  cd terraform/gke-standard
  export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token)
  terraform init
  terraform apply -var project_id=${PROJECT_ID}   \
    -var region=${REGION}  \
    -var cluster_prefix=${KUBERNETES_CLUSTER_PREFIX}

Quando richiesto, digita yes. Il completamento di questo comando e la visualizzazione dello stato pronto del cluster potrebbero richiedere diversi minuti.

Terraform crea le seguenti risorse:

  • Una rete VPC e una subnet privata per i nodi Kubernetes
  • Un router per accedere a internet tramite NAT
  • Un cluster GKE privato nella regione us-central1
  • Un pool di nodi con scalabilità automatica abilitata (da uno a due nodi per zona, minimo un nodo per zona)

L'output è simile al seguente:

...
Apply complete! Resources: 14 added, 0 changed, 0 destroyed.
...

Connettiti al cluster

Utilizzando Cloud Shell, configura kubectl per comunicare con il cluster:

gcloud container clusters get-credentials ${KUBERNETES_CLUSTER_PREFIX}-cluster --location ${REGION}

Esegui il deployment dell'operatore Redis Enterprise nel tuo cluster

In questa sezione, esegui il deployment dell'operatore Redis Enterprise nel tuo cluster Kubernetes.

  1. Crea spazi dei nomi per il REC e le relative applicazioni:

    kubectl create namespace rec-ns
    kubectl create namespace application
    
  2. Etichetta gli spazi dei nomi:

    kubectl label namespace rec-ns connection=redis
    kubectl label namespace application connection=redis
    
  3. Scarica l'ultima versione del bundle Redis Enterprise Operator:

    VERSION=`curl --silent https://api.github.com/repos/RedisLabs/redis-enterprise-k8s-docs/releases/latest | grep tag_name | awk -F'"' '{print $4}'`
    
  4. Installa l'operatore Redis Enterprise:

    kubectl apply -n rec-ns -f https://raw.githubusercontent.com/RedisLabs/redis-enterprise-k8s-docs/$VERSION/bundle.yaml
    

    L'output è simile al seguente:

    role.rbac.authorization.k8s.io/redis-enterprise-operator created
    rolebinding.rbac.authorization.k8s.io/redis-enterprise-operator created
    serviceaccount/redis-enterprise-operator created
    service/admission created
    customresourcedefinition.apiextensions.k8s.io/redisenterpriseclusters.app.redislabs.com created
    customresourcedefinition.apiextensions.k8s.io/redisenterprisedatabases.app.redislabs.com created
    customresourcedefinition.apiextensions.k8s.io/redisenterpriseremoteclusters.app.redislabs.com created
    customresourcedefinition.apiextensions.k8s.io/redisenterpriseactiveactivedatabases.app.redislabs.com created
    deployment.apps/redis-enterprise-operator created
    

Esegui il deployment del cluster Redis Enterprise

  1. Applica il manifest al cluster:

    kubectl apply -n rec-ns -f manifests/01-basic-cluster/rec.yaml
    

    Il completamento di questo comando potrebbe richiedere diversi minuti.

  2. Controlla lo stato del deployment di REC:

    kubectl get rec -n rec-ns
    

    L'output è simile al seguente:

    NAME      NODES   VERSION    STATE     SPEC STATUS   LICENSE STATE   SHARDS LIMIT   LICENSE EXPIRATION DATE   AGE
    gke-rec   3       7.2.4-52   Running   Valid         Valid           4              2023-09-29T20:15:32Z      4m7s
    

    Il cluster è pronto quando STATE è RUNNING.

(Facoltativo) Configura il controller di ammissione

Se vuoi, puoi configurare l'infrastruttura per la convalida del database durante il deployment.

  1. Configura il controller di ammissione e controlla se il secret TLS di ammissione è presente:

    kubectl get secret admission-tls -n rec-ns
    
  2. Ottenere il certificato:

    export CERT=$(kubectl get secret admission-tls -n rec-ns -o jsonpath='{.data.cert}')
    
  3. Copia il certificato nel file webhook.yaml:

    sed -i -e 's/CRT/'$CERT'/g' manifests/01-basic-cluster/webhook.yaml
    
  4. Esegui il deployment del webhook di convalida:

    sed -i -e 's/CRT/'$CERT'/g' manifests/01-basic-cluster/webhook.yaml
    

    Il controller di ammissione convalida la sintassi del database negli spazi dei nomi etichettati.

  5. Verifica il controller di ammissione creando un database non funzionante:

    kubectl apply -n rec-ns -f - << EOF
    apiVersion: app.redislabs.com/v1alpha1
    kind: RedisEnterpriseDatabase
    metadata:
      name: redis-enterprise-database
    spec:
      evictionPolicy: illegal
    EOF
    

    L'output è simile al seguente:

    Error from server: error when creating "STDIN": admission webhook "redisenterprise.admission.redislabs" denied the request: 'illegal' is an invalid value for 'eviction_policy'. Possible values are ['volatile-lru', 'volatile-ttl', 'volatile-random', 'allkeys-lru', 'allkeys-random', 'noeviction', 'volatile-lfu', 'allkeys-lfu']
    

Crea spazi dei nomi

Per impostazione predefinita, Redis Enterprise Operator non dispone di privilegi per eseguire azioni al di fuori del proprio spazio dei nomi. Per consentire all'operatore Redis Enterprise di creare endpoint REDB e di database in altri spazi dei nomi, devi configurare RBAC.

  1. Applica il ruolo e l'associazione di ruoli corrispondenti nello spazio dei nomi dell'applicazione:

    kubectl apply -f manifests/01-basic-cluster/role.yaml -n application
    kubectl apply -f manifests/01-basic-cluster/role-binding.yaml -n application
    
  2. Crea il ruolo cluster e l'associazione di ruolo cluster nello spazio dei nomi rec-ns:

    kubectl apply -n rec-ns -f manifests/01-basic-cluster/cluster_role.yaml
    kubectl apply -n rec-ns -f manifests/01-basic-cluster/cluster_role_binding.yaml
    
  3. Modifica il ConfigMap REC per aggiungere il controllo sullo spazio dei nomi dell'applicazione:

    kubectl patch ConfigMap/operator-environment-config --type merge -p '{"data": {"REDB_NAMESPACES_LABEL": "connection=redis"}}' -n rec-ns
    

    Viene applicata una patch a ogni spazio dei nomi etichettato come ConfigMap.

  4. Controlla lo stato delle risorse nella tua infrastruttura Redis nello spazio dei nomi rec-ns:

    kubectl get pod,deploy,svc,rec,statefulset,cm,secrets -n rec-ns
    

    L'output è simile al seguente:

    NAME                                             READY   STATUS    RESTARTS        AGE
    pod/gke-rec-0                                    2/2     Running   0               172m
    pod/gke-rec-1                                    2/2     Running   0               171m
    pod/gke-rec-2                                    2/2     Running   0               168m
    pod/gke-rec-services-rigger-5f885f59dc-gc79g     1/1     Running   0               172m
    pod/redis-enterprise-operator-6668ccd8dc-kx29z   2/2     Running   2 (5m58s ago)   5h
    
    NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/gke-rec-services-rigger     1/1     1            1           172m
    deployment.apps/redis-enterprise-operator   1/1     1            1           5h
    
    NAME                   TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)             AGE
    service/admission      ClusterIP   10.52.11.13   <none>        443/TCP             5h
    service/gke-rec        ClusterIP   10.52.5.44    <none>        9443/TCP,8001/TCP   172m
    service/gke-rec-prom   ClusterIP   None          <none>        8070/TCP            172m
    service/gke-rec-ui     ClusterIP   10.52.3.29    <none>        8443/TCP            172m
    
    NAME                                               NODES   VERSION    STATE     SPEC STATUS   LICENSE STATE   SHARDS LIMIT   LICENSE EXPIRATION DATE   AGE
    redisenterprisecluster.app.redislabs.com/gke-rec   3       7.2.4-52   Running   Valid         Valid           4              2023-10-05T11:07:20Z      172m
    
    NAME                       READY   AGE
    statefulset.apps/gke-rec   3/3     172m
    
    NAME                                    DATA   AGE
    configmap/gke-rec-bulletin-board        1      172m
    configmap/gke-rec-health-check          5      172m
    configmap/kube-root-ca.crt              1      5h2m
    configmap/operator-environment-config   1      5h
    
    NAME                   TYPE     DATA   AGE
    secret/admission-tls   Opaque   2      5h
    secret/gke-rec         Opaque   2      172m
    

Esegui il deployment dei database Redis Enterprise

  1. Crea database Redis Enterprise negli spazi dei nomi dell'applicazione:

    kubectl apply -f manifests/01-basic-cluster/a-rdb.yaml -n application
    
  2. Controlla lo stato di REDB:

    kubectl get redb --all-namespaces
    

    L'output è simile al seguente:

    NAMESPACE       NAME       VERSION   PORT    CLUSTER   SHARDS   STATUS   SPEC STATUS   AGE
    application   app-db   7.2.0     12999   gke-rec   1        active   Valid         15s
    
  3. Verifica che i servizi per ogni REDB siano in esecuzione:

    kubectl get svc --all-namespaces
    

    L'output è simile al seguente:

    NAMESPACE      NAME      TYPE          CLUSTER-IP   EXTERNAL-IP                           PORT(S)    AGE
    application  app-db  ExternalName  <none>       redis-12999.rec-ns.svc.cluster.local  12999/TCP  72m
    
  4. Verifica che il secret sia stato creato:

    kubectl get secrets -n application
    

    L'output è simile al seguente:

    NAME            TYPE     DATA   AGE
    redb-app-db   Opaque   3      96m
    

Autenticarsi utilizzando le password

Puoi connetterti a REDB utilizzando un pod con redis-cli nello spazio dei nomi dell'applicazione. Il pod client utilizza i secret disponibili nello spazio dei nomi dell'applicazione (REDB) per stabilire una connessione.

I database creati con la risorsa personalizzata REDB supportano solo l'autenticazione con password senza ACL.

  1. Crea il pod client:

    kubectl apply -n application -f manifests/03-auth/client_pod.yaml
    
  2. Connettiti al pod client:

    kubectl exec -n application -i -t redis-client -c redis-client -- /bin/sh
    
  3. Connettiti al database:

    redis-cli -h $SERVICE -p $PORT --pass $PASS
    
  4. Crea una chiave:

    SET mykey "Hello World"
    

    L'output è simile al seguente:

    OK
    
  5. Recupera la chiave:

    GET mykey
    

    L'output è simile al seguente:

    "Hello World"
    
  6. Esci dalla shell del pod

    exit
    

Scopri come Prometheus raccoglie le metriche per il tuo cluster Redis

Il seguente diagramma mostra come funziona la raccolta delle metriche Prometheus:

Nel diagramma, un cluster GKE privato contiene:

  • Un pod Redis che raccoglie metriche sul percorso / e sulla porta 8070
  • Raccoglitori basati su Prometheus che elaborano le metriche del pod Redis
  • Una risorsa PodMonitoring che invia metriche a Cloud Monitoring

L'operatore Redis Enterprise espone le metriche del cluster nel formato Prometheus.

  1. Crea il deployment metrics-proxy:

    kubectl apply -n rec-ns -f manifests/02-prometheus-metrics/metrics-proxy.yaml
    

    Poiché l'operatore fornisce solo un endpoint HTTPS con il certificato autofirmato e la risorsa PodMonitoring non supporta la disattivazione della verifica del certificato TLS, utilizzi il pod metrics-proxy come proxy inverso per questo endpoint per esporre le metriche sulla porta HTTP.

  2. Crea la risorsa PodMonitoring per estrarre le metriche in base a labelSelector:

    kubectl apply -n rec-ns -f manifests/02-prometheus-metrics/pod-monitoring.yaml
    
  3. Nella console Google Cloud , vai alla pagina Dashboard dei cluster GKE.

    Vai alla dashboard dei cluster GKE

    La dashboard mostra il tasso di importazione delle metriche diverse da zero.

Creare una dashboard

Puoi visualizzare le metriche creando una dashboard.

  1. Crea la dashboard:

    gcloud --project "${PROJECT_ID}" monitoring dashboards create --config-from-file monitoring/dashboard.json
    

    L'output è simile al seguente:

    Created [f4efbe4e-2605-46b4-9910-54b13d29b3be].
    
  2. Nella console Google Cloud , vai alla pagina Dashboard.

    Accedi a Dashboard

  3. Apri la dashboard del cluster Redis Enterprise. Potrebbero essere necessari diversi minuti prima che la dashboard venga sottoposta al provisioning automatico.

Verificare le metriche esportate

Per verificare le metriche, crea un nuovo database ed esamina le metriche.

  1. Apri la dashboard del cluster Redis Enterprise.

  2. Crea un database Redis aggiuntivo:

    kubectl apply -n rec-ns -f manifests/02-prometheus-metrics/c-rdb.yaml
    

    Il Conteggio database nella dashboard dovrebbe essere aggiornato.

  3. Crea un pod client per connetterti al nuovo database:

    kubectl apply -n rec-ns -f manifests/02-prometheus-metrics/client_pod.yaml
    
  4. Connettiti al pod client e prepara le variabili:

    kubectl exec -it redis-client-c -n rec-ns -- /bin/bash
    
  5. Utilizza lo strumento redis-cli per creare nuove chiavi:

    for i in {1..50}; do \
      redis-cli -h $SERVICE -p $PORT -a $PASS \
      --no-auth-warning SET mykey-$i "myvalue-$i"; \
    done
    
  6. Aggiorna la pagina e osserva che i grafici sono stati aggiornati per mostrare lo stato effettivo del database.

  7. Esci dalla shell del pod

    exit
    

Esegui la pulizia

Elimina il progetto

    Elimina un progetto Google Cloud :

    gcloud projects delete PROJECT_ID

Elimina singole risorse

  1. Imposta le variabili di ambiente.

    export PROJECT_ID=${PROJECT_ID}
    export KUBERNETES_CLUSTER_PREFIX=redis
    export REGION=us-central1
    
  2. Esegui il comando terraform destroy:

    export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token)
    cd terraform/gke-standard
    terraform destroy -var project_id=${PROJECT_ID}   \
      -var region=${REGION}  \
      -var cluster_prefix=${KUBERNETES_CLUSTER_PREFIX}
    

    Quando richiesto, digita yes.

  3. Trova tutti i dischi scollegati:

    export disk_list=$(gcloud compute disks list --filter="-users:* AND labels.name=${KUBERNETES_CLUSTER_PREFIX}-cluster" --format "value[separator=|](name,zone)")
    
  4. Elimina i dischi:

    for i in $disk_list; do
      disk_name=$(echo $i| cut -d'|' -f1)
      disk_zone=$(echo $i| cut -d'|' -f2|sed 's|.*/||')
      echo "Deleting $disk_name"
      gcloud compute disks delete $disk_name --zone $disk_zone --quiet
    done
    
  5. Elimina il repository GitHub:

    rm -r ~/kubernetes-engine-samples/
    

Passaggi successivi

  • Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Consulta il nostro Cloud Architecture Center.