Puoi configurare un'istanza di macchina virtuale (VM) o un modello di istanza per eseguire il deployment e avviare un container Docker. Compute Engine fornisce un'immagine Container-Optimized OS (COS) aggiornata con Docker installato e avvia il container all'avvio della VM.
Prima di iniziare
- Se non hai familiarità con i container, consulta Cosa sono i container e i loro vantaggi.
- Se non hai dimestichezza con Docker, leggi la documentazione di Docker.
- Scopri di più su Container-Optimized OS.
- Scopri di più sui gruppi di istanze gestite.
-
Se non l'hai già fatto, configura l'autenticazione.
L'autenticazione è il processo mediante il quale viene verificata l'identità dell'utente per ottenere l'accesso ai servizi e alle API Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi eseguire l'autenticazione in Compute Engine come segue.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
- Set a default region and zone.
- Gestisci le VM che eseguono container come faresti con qualsiasi altra VM per la configurazione e la gestione dell'infrastruttura di Compute Engine.
- Crea servizi scalabili utilizzando gruppi di istanze gestite che eseguono container, che offrono funzionalità come scalabilità automatica, riparazione automatica, aggiornamenti in sequenza, deployment multizona e bilanciamento del carico.
- Utilizza processi e strumenti familiari come Google Cloud CLI o l'API Compute Engine per gestire le tue VM con container.
- Eseguire un numero elevato di microservizi
- Velocizza i tempi di avvio del container
- Sfrutta l'orchestrazione automatica di Kubernetes, inclusi upgrade automatici, riparazione automatica dei nodi e scalabilità automatica
- Il deployment del software sull'avvio delle VM viene eseguito utilizzando uno script di avvio o cloud-init.
- Creazione di un'immagine disco di avvio personalizzata con software preinstallato.
- Raggruppa la tua app e le librerie richieste in un'immagine Docker e pubblichi l'immagine in Artifact Registry o in un registro di terze parti come Docker Hub.
- Devi specificare il nome di un'immagine Docker e la configurazione
docker run
quando crei un'istanza VM o un modello di istanza per un MIG. - Compute Engine crea un'istanza VM che utilizza un'immagine Container-Optimized OS fornita da Google. Questa immagine include un runtime Docker e un software aggiuntivo responsabile dell'avvio del container.
- Compute Engine archivia le impostazioni del container in metadati dell'istanza sotto la chiave dei metadati
gce-container-declaration
. - All'avvio della VM, l'immagine Container-Optimized OS utilizza la configurazione del comando
docker run
archiviata nei metadati dell'istanza, estrae l'immagine container dal repository e avvia il container. - Puoi eseguire il deployment di un solo container per ogni istanza VM. Valuta Google Kubernetes Engine se devi eseguire il deployment di più container per istanza VM.
Puoi eseguire il deployment dei container solo da un repository pubblico o da un repository privato Artifact Registry o Container Registry a cui puoi accedere. Non sono supportati altri repository privati.
Per informazioni sulle autorizzazioni del registro privato, consulta la documentazione sul controllo dell'accesso per Artifact Registry o Container Registry.
Non puoi mappare le porte di un'istanza VM alle porte del container (opzione
-p
di Docker). Per abilitare l'accesso ai container, consulta Pubblicazione delle porte dei container.Puoi utilizzare solo le immagini Container-Optimized OS con questo metodo di deployment.
Puoi utilizzare questa funzionalità solo tramite la console Google Cloud o Google Cloud CLI, non l'API.
- Carica la tua immagine Docker in Artifact Registry.
- Utilizza qualsiasi immagine container disponibile pubblicamente da Docker Hub o da altri registri.
Vai alla pagina Crea un'istanza.
Specifica i dettagli della VM.
Nella sezione Contenitore, fai clic su Esegui il deployment del contenitore.
Nella pagina Configura container, specifica un nome per l'immagine container e configura le opzioni per eseguire il container in base alle tue esigenze. Ad esempio, puoi specificare
gcr.io/cloud-marketplace/google/nginx1:latest
per l'immagine container.Continua con il processo di creazione della VM.
- Aggiorna la dichiarazione del container sull'istanza. Compute Engine archivia la dichiarazione del container aggiornata nei metadati dell'istanza nella chiave dei metadati
gce-container-declaration
. - Arresta e riavvia l'istanza per attivare la configurazione aggiornata, se l'istanza è in esecuzione. Se l'istanza viene arrestata, aggiorna la dichiarazione del container e mantiene l'istanza arrestata. L'istanza VM scarica la nuova immagine e avvia il container all'avvio della VM.
Vai alla pagina Istanze VM.
Fai clic sul nome della VM da aggiornare.
Nella pagina dei dettagli dell'istanza, fai clic su Modifica.
Specifica la nuova immagine container e aggiorna le opzioni per eseguire il container in base alle necessità.
Per salvare le modifiche, fai clic su Salva e riavvia. Compute Engine salva le modifiche e riavvia l'istanza automaticamente per eseguire l'aggiornamento. Dopo il riavvio, la VM scarica la nuova immagine e avvia il container con la configurazione aggiornata.
Creare un modello di istanza basato su un'immagine Docker.
Crea un MIG dal nuovo modello di istanza.
Vai alla pagina Modelli di istanza.
Per creare un modello di istanza, fai clic su Crea modello istanza.
In Contenitore, seleziona Esegui il deployment dell'immagine container.
In Immagine container, specifica il nome dell'immagine Docker e configura le opzioni per eseguire il container, se lo desideri. Ad esempio, puoi specificare
gcr.io/cloud-marketplace/google/nginx1:15
per l'immagine container.Fai clic su Crea.
- Preparare una nuova immagine Docker per il deployment.
- Creare un modello di istanza basato sulla nuova immagine Docker esattamente come crei un modello basato su container.
- Aggiorna un gruppo di istanze gestite al nuovo modello di istanza utilizzando il programma di aggiornamento dei gruppi di istanze gestite.
- Crea un modello di istanza basato sulla versione corrente della tua immagine Docker, nello stesso modo in cui crei un modello basato su container per un nuovo gruppo di istanze gestite. Per impostazione predefinita, viene utilizzata l'ultima versione supportata di un'immagine di Container-Optimized OS.
- Aggiorna un gruppo di istanze gestite con il nuovo modello di istanza utilizzando il programma di aggiornamento dei gruppi di istanze gestite.
VM_NAME
: il nome dell'istanza VMCONTAINER_NAME
: il nome del containerLog degli agenti di avvio, noti anche come log konlet. L'agente di avvio analizza la configurazione del container ed esegue le attività per avviare il container su un'istanza VM di Compute Engine.
I log eventi di Docker segnalano gli eventi del container, inclusi gli eventi di avvio e arresto del container.
I log del container includono i
STDOUT
delle app eseguite nel container.Vai alla pagina Istanze VM.
Seleziona l'istanza VM per la quale vuoi visualizzare i log dell'agente di avvio.
In Log, fai clic su Porta seriale 1 (console) per visualizzare i log della console seriale.
- Connettiti all'istanza con un container mediante SSH.
Esegui il comando
sudo journalctl
per visualizzare i log di avvio della VM e di avvio del container. Utilizza il seguente comando per filtrare i log dell'agente di avvio del container (konlet
).sudo journalctl -u konlet*
Vai alla pagina Istanze VM.
Seleziona l'istanza VM per la quale vuoi visualizzare i log dell'agente di avvio.
In Log, fai clic su Cloud Logging per visualizzare i log di Cloud Logging.
Inserisci un filtro di ricerca per recuperare i log dell'agente di avvio.
resource.type="gce_instance" logName="projects/PROJECT_ID/logs/cos_system" jsonPayload.SYSLOG_IDENTIFIER="konlet-startup" jsonPayload._HOSTNAME="VM_NAME"
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto che contiene l'istanzaVM_NAME
: il nome dell'istanza per cui vuoi ottenere i log
PROJECT_ID
: l'ID progetto che contiene l'istanzaVM_NAME
: il nome dell'istanza per cui vuoi ottenere i log- Connettiti all'istanza con un container mediante SSH.
Esegui il comando
sudo journalctl
con il seguente filtro per visualizzare i log eventi di Docker.sudo journalctl -u docker-events-collector
Vai alla pagina Istanze VM.
Seleziona l'istanza VM per la quale vuoi visualizzare i log dell'agente di avvio.
In Log, fai clic su Cloud Logging per visualizzare i log di Cloud Logging.
Inserisci il seguente filtro di ricerca per recuperare i log eventi Docker.
resource.type="gce_instance" logName="projects/PROJECT_ID/logs/cos_system" jsonPayload._HOSTNAME="VM_NAME" jsonPayload.SYSLOG_IDENTIFIER="docker"
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto che contiene l'istanzaVM_NAME
: il nome dell'istanza per cui vuoi ottenere i log
PROJECT_ID
: l'ID progetto che contiene l'istanzaVM_NAME
: il nome dell'istanza per cui vuoi ottenere i logVai alla pagina Istanze VM.
Seleziona l'istanza VM per la quale vuoi visualizzare i log dell'agente di avvio.
In Log, fai clic su Cloud Logging per visualizzare i log di Cloud Logging.
La pagina di Cloud Logging viene caricata con un filtro di ricerca predefinito. Copia il valore di
resource.labels.instance_id
. Lo utilizzerai più tardi.Aggiorna il filtro di ricerca per recuperare i log dei container.
resource.type="gce_instance" logName="projects/PROJECT_ID/logs/cos_containers" resource.labels.instance_id="INSTANCE_ID"
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto che contiene l'istanzaINSTANCE_ID
: l'ID dell'istanza per cui vuoi ottenere i log
Stabilisci l'ID dell'istanza per cui vuoi ottenere i log:
gcloud compute instances describe VM_NAME \ --zone ZONE \ --format="value(id)"
Sostituisci quanto segue:
VM_NAME
: il nome dell'istanza per la quale vuoi recuperare i logZONE
: la zona in cui si trova l'istanza
Utilizza il comando e il filtro seguenti per visualizzare i log dei container dell'istanza.
gcloud logging read "resource.type=gce_instance AND \ logName=projects/PROJECT_ID/logs/cos_containers AND \ resource.labels.instance_id=INSTANCE_ID"
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto che contiene l'istanza.INSTANCE_ID
: l'ID dell'istanza.
Ad esempio, utilizza questo comando per visualizzare gli ultimi 10 log dei container in Cloud Logging per un'istanza VM che esegue COS 70, esistente in
my-project
e che ha un ID istanza555123456789012345
.gcloud logging read "resource.type=gce_instance AND \ logName=projects/my-project/logs/cos_containers AND \ resource.labels.instance_id=555123456789012345" \ --limit 10
- Specifica un criterio di riavvio del container.
- Esegui l'override del container
ENTRYPOINT
(comando predefinito da eseguire all'avvio del container). - Passa argomenti al comando
ENTRYPOINT
del container. - Esegui un container in una modalità con privilegi.
- Monta una directory host o
tmpfs
come volume di dati all'interno del container. - Imposta le variabili di ambiente.
- Alloca un buffer per
STDIN
nel runtime del container. - Alloca uno pseudo-TTY.
- Scopri di più su come configurare le opzioni per eseguire il container.
- Scopri di più sui gruppi di istanze gestite.
- Scopri di più su Container-Optimized OS.
Scelta di eseguire il deployment dei container su VM e MIG
Eseguendo il deployment di container su Compute Engine, puoi semplificare il deployment delle app e controllare l'infrastruttura delle VM.
In alternativa, puoi eseguire il deployment in Google Kubernetes Engine per:
L'esecuzione di ogni microservizio su una macchina virtuale (VM) separata su Compute Engine potrebbe far sì che l'overhead del sistema operativo diventi una parte significativa dei tuoi costi. Google Kubernetes Engine ti consente di eseguire il deployment di più container e gruppi di container per ogni istanza VM, in modo da allocare le risorse VM host in modo più efficiente ai microservizi con un ingombro ridotto.
Come funziona il deployment dei container su Compute Engine
I metodi più comuni per eseguire il deployment di software in un'istanza VM di Compute Engine includono:
Entrambi i metodi precedenti combinano le attività di configurazione dell'app e dell'ambiente del sistema operativo. In qualità di sviluppatore, devi monitorare e risolvere con attenzione le dipendenze di runtime. Ad esempio, se due app in esecuzione su una VM utilizzano versioni diverse della stessa libreria, devi installare entrambe le versioni e indirizzarle tramite le variabili di sistema.
In alternativa, puoi eseguire il deployment del software in un container su un'istanza VM o su un gruppo di istanze gestite. Un container include il software dell'applicazione e le librerie richieste ed è isolato dalle app e dalle librerie del sistema operativo. Un container può essere spostato facilmente tra gli ambienti di deployment senza dover gestire versioni in conflitto delle librerie nel container e nel sistema operativo.
Il processo seguente descrive come eseguire il deployment di un container su Compute Engine:
Compute Engine esegue le attività seguenti dopo che invii una richiesta di creazione di un'istanza VM:
Limitazioni
Preparazione di un container per il deployment
Scegli uno dei seguenti approcci per rendere l'immagine container accessibile a Compute Engine:
Deployment di un container su una nuova istanza VM
Puoi eseguire il deployment di un container su una nuova istanza VM utilizzando la console Google Cloud o Google Cloud CLI.
Console
L'esempio seguente esegue il deployment di un container da un'immagine Nginx Docker fornita da Google,
https://gcr.io/cloud-marketplace/google/nginx1:latest
, a un'istanza VM. Per utilizzare un'immagine Docker diversa, specifica l'immagine che preferisci negli esempi riportati di seguito.gcloud
Usa il comando
gcloud compute instances create-with-container
:gcloud compute instances create-with-container VM_NAME \ --container-image DOCKER_IMAGE
Ad esempio, il comando seguente crea una nuova istanza VM denominata
nginx-vm
, che avvia ed esegue l'immagine Dockergcr.io/cloud-marketplace/google/nginx1:latest
.gcloud compute instances create-with-container nginx-vm \ --container-image gcr.io/cloud-marketplace/google/nginx1:latest
Scopri di più sul comando
gcloud compute instances create-with-container
.Devi sempre specificare un nome completo dell'immagine Docker quando utilizzi un'immagine pubblica da Docker Hub. Ad esempio, specifica il seguente nome per eseguire il deployment di un'immagine container Apache:
docker.io/httpd:2.4
Aggiornamento di un container su un'istanza VM
Puoi aggiornare un'immagine Docker e le opzioni di configurazione per eseguire il container su un'istanza VM utilizzando la console Google Cloud o Google Cloud CLI.
Quando aggiorni una VM che esegue un container, Compute Engine esegue due passaggi:
Console
gcloud
Aggiorna la dichiarazione del container utilizzando il comando
gcloud compute instances update-container
. Ad esempio:gcloud compute instances update-container nginx-vm \ --container-image gcr.io/cloud-marketplace/google/nginx1:latest
Questo comando imposta l'immagine container su
gcr.io/cloud-marketplace/google/nginx1:latest
e riavvia l'istanza per attivare le modifiche. Puoi anche aggiornare qualsiasi proprietà descritta in Configurare le opzioni per l'esecuzione del container aggiungendo i flag corrispondenti.Dopo il riavvio, l'istanza scarica la nuova immagine container e avvia il container con la nuova configurazione.
Deployment di un container su un gruppo di istanze gestite
Puoi eseguire il deployment di un container in un nuovo gruppo di istanze gestite utilizzando la console Google Cloud o Google Cloud CLI seguendo questi passaggi:
Console
L'esempio seguente crea un modello di istanza che esegue il deployment di un container da un'immagine Docker Nginx (
gcr.io/cloud-marketplace/google/nginx1:15
) fornita da Google a un gruppo di istanze gestite. Per utilizzare altre immagini Docker, specifica l'immagine che preferisci anzichégcr.io/cloud-marketplace/google/nginx1:15
nell'esempio seguente.Quindi, crea un gruppo di istanze gestite che utilizzi il nuovo modello di istanza.
gcloud
Crea un modello di istanza per l'esecuzione di immagini Docker utilizzando il comando
gcloud compute instance-templates create-with-container
:gcloud compute instance-templates create-with-container TEMPLATE_NAME \ --container-image DOCKER_IMAGE
Puoi anche configurare le opzioni per eseguire il container, se vuoi.
Ad esempio, il comando seguente crea un nuovo modello di istanza con nome
nginx-template
, che include informazioni sull'immagine Docker. Un'istanza VM creata da questo modello viene avviata ed esegue l'immagine Dockergcr.io/cloud-marketplace/google/nginx1:15
all'avvio della VM.gcloud compute instance-templates create-with-container nginx-template \ --container-image gcr.io/cloud-marketplace/google/nginx1:15
Quindi, crea un gruppo di istanze gestite utilizzando il nuovo modello di istanza.
Ora che hai un modello di istanza, puoi creare un gruppo di istanze gestite che lo utilizzi. Ad esempio, per creare un MIG utilizzando gcloud CLI e il
nginx-template
che hai appena creato, esegui questo comando:gcloud compute instance-groups managed create example-group \ --base-instance-name nginx-vm \ --size 3 \ --template nginx-template
Aggiornamento di un gruppo di istanze gestite che esegue un container
Puoi aggiornare un gruppo di istanze gestite per eseguire il deployment di una nuova versione di un'immagine Docker o di una nuova versione dell'immagine di Container-Optimized OS.
Aggiornamento di un gruppo di istanze gestite a una nuova versione di un'immagine container
Puoi eseguire il deployment di una nuova versione di un'immagine Docker in un gruppo di istanze gestite utilizzando il programma di aggiornamento dei gruppi di istanze gestite, in tre passaggi:
Aggiornamento di un gruppo di istanze gestite a una nuova versione dell'immagine Container-Optimized OS
Google aggiorna le immagini Container-Optimized OS regolarmente e potresti voler applicare questi aggiornamenti ai gruppi di istanze gestite in container senza modificare l'immagine Docker. Puoi aggiornare un gruppo di istanze gestite a una nuova versione di un'immagine di Container-Optimized OS utilizzando la console Google Cloud o Google Cloud CLI in due passaggi:
Connessione a un container tramite SSH
Puoi connetterti a un container su una VM utilizzando SSH. Utilizza gcloud CLI per eseguire
gcloud compute ssh
con il flag--container
:gcloud compute ssh VM_NAME --container CONTAINER_NAME
Sostituisci quanto segue:
Scopri di più sul comando
gcloud compute ssh
e sui suoi argomenti.Monitoraggio dei container su Compute Engine
Per monitorare le istanze che eseguono un'immagine di Container-Optimized OS, utilizza l'agente Node Problem Detector, che comunica con Cloud Monitoring e genera report sulle metriche relative all'integrità. L'agente è integrato nelle immagini Container-Optimized OS a partire da Milestone 77.
Per abilitare l'agente, nei container che utilizzano immagini con Milestone 88 o versioni successive, modifica la sezione dei metadati personalizzati e imposta
google-monitoring-enabled
sutrue
.Per scoprire altri modi per attivare il rilevatore di problemi dei nodi, consulta Abilitazione del monitoraggio di integrità.
L'agente Node Problem Detector supporta le metriche nell'elenco delle metriche che iniziano con
guest/
.Per interagire con le metriche raccolte dall'agente, visita Metrics Explorer.
Visualizzazione dei log
Puoi visualizzare tre tipi di log relativi ai container:
Visualizzazione dei log dell'agente di avvio
I log degli agenti di avvio sono disponibili nella console seriale, tramite il servizio di sistema
journald
incluso nell'immagine del sistema operativo e tramite Cloud Logging.Visualizzazione dei log dell'agente di avvio nella console seriale
Console
gcloud
Utilizza il comando
get-serial-port-output
per visualizzare i log sulla porta seriale dell'istanza.gcloud compute instances get-serial-port-output VM_NAME
Sostituisci
VM_NAME
con il nome dell'istanza VM.Ad esempio, utilizza il seguente comando per visualizzare l'output della porta seriale di un'istanza VM denominata
nginx-vm
:gcloud compute instances get-serial-port-output nginx-vm
Visualizzazione dei log dell'agente di avvio in
journald
Visualizzazione dei log dell'agente di avvio in Logging
Console
gcloud
Utilizza il comando
gcloud logging read
con un filtro appropriato per visualizzare i log dell'agente di avvio del container.gcloud logging read "resource.type=gce_instance AND \ logName=projects/PROJECT_ID/logs/cos_system AND \ jsonPayload.SYSLOG_IDENTIFIER=konlet-startup AND \ jsonPayload._HOSTNAME=VM_NAME"
Sostituisci quanto segue:
Ad esempio, utilizza questo comando per visualizzare gli ultimi 10 log dell'agente di avvio in Logging per un'istanza VM denominata
nginx-vm
che esegue COS 70 ed esiste inmy-project
.gcloud logging read "resource.type=gce_instance AND \ logName=projects/my-project/logs/cos_system AND \ jsonPayload.SYSLOG_IDENTIFIER=konlet-startup AND \ jsonPayload._HOSTNAME=nginx-vm" \ --limit 10
visualizza i log eventi Docker
Puoi visualizzare i log eventi Docker in
journald
e in Cloud Logging.Visualizzazione dei log eventi Docker in
journald
visualizza i log eventi Docker in Logging
Console
gcloud
Utilizza il comando
gcloud logging read
con un filtro appropriato per visualizzare i log eventi di Docker.gcloud logging read "resource.type=gce_instance AND \ logName=projects/PROJECT_ID/logs/cos_system AND \ jsonPayload._HOSTNAME=VM_NAME AND \ jsonPayload.SYSLOG_IDENTIFIER=docker"
Sostituisci quanto segue:
Ad esempio, utilizza il comando seguente per visualizzare gli ultimi 10 log di eventi Docker in Logging per un'istanza VM denominata
nginx-vm
che esegue COS 70 ed esiste inmy-project
.gcloud logging read "resource.type=gce_instance AND \ logName=projects/my-project/logs/cos_system AND \ jsonPayload._HOSTNAME=nginx-vm AND \ jsonPayload.SYSLOG_IDENTIFIER=docker" \ --limit 10
Visualizzazione dei log dei container
Console
gcloud
Utilizza il comando
gcloud logging read
per visualizzare i log dei container.Specificare le immagini o le famiglie di immagini ottimizzate per i container
Le istanze VM containerizzate o i modelli di istanza vengono creati in modo da utilizzare per impostazione predefinita l'immagine ottimizzata per il container più recente supportata. L'immagine appartiene al progetto
cos-cloud
.Puoi sostituire questa impostazione predefinita con un'altra immagine del progetto
cos-cloud
. Per informazioni sulle famiglie di immagini disponibili e sui relativi attributi, consulta Scelta della versione corretta di Container-Optimized OS.Ad esempio, dopo aver capito quale immagine vuoi utilizzare, in gcloud CLI, fornisci il flag
--image
per eseguire l'override dell'immagine predefinita per i container ottimizzata o il flag--image-family
per scegliere l'immagine più recente dalla famiglia specificata al momento della creazione della VM.L'esempio seguente crea un'istanza VM containerizzata che utilizza l'immagine più recente della famiglia di immagini
cos-dev
:gcloud compute instances create-with-container nginx-vm \ --image-family cos-dev \ --image-project cos-cloud \ --container-image gcr.io/cloud-marketplace/google/nginx1:1.15
Configurazione delle regole del firewall
Le VM containerizzate avviano container la cui rete è impostata sulla modalità host. Un container condivide lo stack di rete dell'host e tutte le interfacce dell'host sono disponibili per il container.
Per impostazione predefinita, le regole firewall di Google Cloud bloccano tutte le connessioni in entrata a un'istanza VM e consentono tutte le connessioni in uscita da un'istanza VM.
Crea regole firewall per consentire le connessioni in entrata all'istanza e quindi al container.
Configurazione delle opzioni per l'esecuzione di un container
Puoi configurare le seguenti opzioni per eseguire il container:
Scopri di più sulla configurazione delle opzioni per l'esecuzione del container.
Passaggi successivi
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2024-07-12 UTC.
[{ "type": "thumb-down", "id": "hardToUnderstand", "label":"Hard to understand" },{ "type": "thumb-down", "id": "incorrectInformationOrSampleCode", "label":"Incorrect information or sample code" },{ "type": "thumb-down", "id": "missingTheInformationSamplesINeed", "label":"Missing the information/samples I need" },{ "type": "thumb-down", "id": "translationIssue", "label":"Problema di traduzione" },{ "type": "thumb-down", "id": "otherDown", "label":"Altra" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Facile da capire" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Il problema è stato risolto" },{ "type": "thumb-up", "id": "otherUp", "label":"Altra" }] -