Caricamento in corso…
Nessun risultato trovato.

Google Cloud Skills Boost

Applica le tue competenze nella console Google Cloud

04

Architecting with Google Kubernetes Engine: Workloads - Italiano

Accedi a oltre 700 lab e corsi

Uso di secret e ConfigMap Google Kubernetes Engine

Lab 1 ora universal_currency_alt 5 crediti show_chart Introduttivi
info Questo lab potrebbe incorporare strumenti di AI a supporto del tuo apprendimento.
Accedi a oltre 700 lab e corsi

Panoramica

In questo lab, configurerai le informazioni di configurazione, sia criptate sia non criptate. Le informazioni di configurazione criptate sono memorizzate come secret. Le informazioni di configurazione non criptate sono memorizzate come oggetti ConfigMap.

Questo approccio evita l'hardcoding di tali informazioni in codebase. Le credenziali (come le chiavi API) appartenenti ai secret non devono mai spostarsi all'interno di repository di codice come GitHub (a meno che non siano criptate prima di entrare, ma anche in questo caso è meglio tenerle separate).

Obiettivi

In questo lab imparerai a:

  • Creare secret utilizzando il comando kubectl e i file manifest.
  • Creare oggetti ConfigMap utilizzando il comando kubectl e i file manifest.
  • Consumare secret nei container utilizzando variabili di ambiente o volumi montati.
  • Consumare oggetti ConfigMap nei container utilizzando variabili di ambiente o volumi montati.

Configurazione del lab

Accedi a Qwiklabs

Per ciascun lab, riceverai un nuovo progetto Google Cloud e un insieme di risorse per un periodo di tempo limitato senza alcun costo aggiuntivo.

  1. Accedi a Qwiklabs utilizzando una finestra di navigazione in incognito.

  2. Tieni presente la durata dell'accesso al lab (ad esempio, 1:15:00) e assicurati di finire entro quell'intervallo di tempo.
    Non è disponibile una funzionalità di pausa. Se necessario, puoi riavviare il lab ma dovrai ricominciare dall'inizio.

  3. Quando è tutto pronto, fai clic su Inizia lab.

  4. Annota le tue credenziali del lab (Nome utente e Password). Le userai per accedere a Google Cloud Console.

  5. Fai clic su Apri console Google.

  6. Fai clic su Utilizza un altro account e copia/incolla le credenziali per questo lab nei prompt.
    Se utilizzi altre credenziali, compariranno errori oppure ti verranno addebitati dei costi.

  7. Accetta i termini e salta la pagina di ripristino delle risorse.

Una volta completati i passaggi di accesso iniziali, viene visualizzata la dashboard del progetto.

Attiva Google Cloud Shell

Google Cloud Shell è una macchina virtuale in cui sono caricati strumenti per sviluppatori. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud.

Google Cloud Shell fornisce l'accesso da riga di comando alle risorse Google Cloud.

  1. Nella barra degli strumenti in alto a destra della console Cloud, fai clic sul pulsante Apri Cloud Shell.

  2. Fai clic su Continua.

Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Quando la connessione è attiva, l'autenticazione è già avvenuta e il progetto è impostato sul tuo PROJECT_ID. Ad esempio:

gcloud è lo strumento a riga di comando di Google Cloud. È preinstallato su Cloud Shell e supporta il completamento.

  • Puoi visualizzare il nome dell'account attivo con questo comando:
gcloud auth list

Output:

Credentialed accounts: - @.com (active)

Output di esempio:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Puoi elencare l'ID progetto con questo comando:
gcloud config list project

Output:

[core] project =

Output di esempio:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: la documentazione completa di gcloud è disponibile nella guida Panoramica dell'interfaccia a riga di comando gcloud .

Attività 1: utilizza i secret

In questa attività, dovrai autenticare i container con Google Cloud per accedere ai servizi Google Cloud. Configura un argomento e una sottoscrizione Cloud Pub/Sub, prova ad accedere all'argomento Cloud Pub/Sub da un container in esecuzione in GKE e controlla che la richiesta di accesso non vada a buon fine.

Per accedere correttamente all'argomento Pub/Sub, devi creare un account di servizio con le credenziali e passare tali credenziali tramite secret di Kubernetes.

Prepara un service account senza autorizzazioni

  1. Nella console Google Cloud, nel menu di navigazione (), fai clic su IAM e amministrazione > Service account.
  2. Fai clic su + Crea service account.
  3. Nella casella di testo Nome service account, inserisci no-permissions.
  4. Fai clic su Crea e continua.
  5. Fai clic su Continua e poi su Fine.
  6. Trova l'account di servizio no-permissions nell'elenco e copia l'indirizzo email associato a questo account in un file di testo per utilizzarlo in seguito.

Crea un cluster GKE

Quando crei questo cluster, devi specificare l'account di servizio creato in precedenza. Per mostrare la necessità di account di servizio con le autorizzazioni appropriate, tale account di servizio non dispone di autorizzazioni per altri servizi Google Cloud e pertanto non potrà connettersi all'applicazione di test Cloud Pub/Sub di cui eseguirai il deployment in un secondo momento. Puoi risolvere il problema più tardi nel lab.

  1. In Cloud Shell, digita il comando seguente per creare variabili di ambiente per il nome della zona Google Cloud e del cluster che verranno utilizzati per creare il cluster per questo lab:
export my_zone={{{ project_0.default_zone | ZONE }}} export my_cluster=standard-cluster-1
  1. Configura il completamento per lo strumento a riga di comando kubectl:
source <(kubectl completion bash)
  1. In Cloud Shell, digita il seguente comando per impostare la variabile di ambiente per il nome del service account, dove [MY-SERVICE-ACCOUNT-EMAIL] rappresenta l'indirizzo email del service account creato in precedenza:
export my_service_account=[MY-SERVICE-ACCOUNT-EMAIL]

Esempio:

export my_service_account=no-permissions@qwiklabs-gcp-4ee5983fdd675469.iam.gserviceaccount.com
  1. In Cloud Shell, digita questo comando per creare un cluster Kubernetes:
gcloud container clusters create $my_cluster \ --num-nodes 2 --zone $my_zone \ --service-account=$my_service_account Nota: devi attendere alcuni minuti per il completamento del deployment del cluster.
  1. Configura l'accesso al tuo cluster per kubectl:
gcloud container clusters get-credentials $my_cluster --zone $my_zone

Configura Cloud Pub/Sub ed esegui il deployment di un'applicazione per leggere dall'argomento

  1. In Cloud Shell, digita il seguente comando per impostare le variabili di ambiente per i componenti Pub/Sub:
export my_pubsub_topic=echo export my_pubsub_subscription=echo-read
  1. Per creare un argomento Cloud Pub/Sub denominato echo e una sottoscrizione denominata echo-read associata a tale argomento, esegui i seguenti comandi gcloud:
gcloud pubsub topics create $my_pubsub_topic gcloud pubsub subscriptions create $my_pubsub_subscription \ --topic=$my_pubsub_topic

Esegui il deployment di un'applicazione da leggere da argomenti Cloud Pub/Sub

Crea un deployment con un container in grado di leggere dagli argomenti di Cloud Pub/Sub. Poiché sono necessarie autorizzazioni specifiche per sottoscrizione e lettura, gli argomenti Cloud Pub/Sub che servono a questo container sono richiesti per connettersi correttamente a Cloud Pub/Sub.

Il file manifest di deployment chiamato pubsub.yaml viene fornito automaticamente.

apiVersion: apps/v1 kind: Deployment metadata: name: pubsub spec: selector: matchLabels: app: pubsub template: metadata: labels: app: pubsub spec: containers: - name: subscriber image: gcr.io/google-samples/pubsub-sample:v1
  1. In Cloud Shell, inserisci questo comando per clonare il repository nella sessione di Cloud Shell del lab:
git clone https://github.com/GoogleCloudPlatform/training-data-analyst
  1. Crea un soft link da utilizzare come scorciatoia alla directory di lavoro:
ln -s ~/training-data-analyst/courses/ak8s/v1.1 ~/ak8s
  1. Passa alla directory che contiene i file di esempio per questo lab:
cd ~/ak8s/Secrets/
  1. Esegui il deployment dell'applicazione:
kubectl apply -f pubsub.yaml
  1. Dopo aver completato il deployment dell'applicazione, invia una query ai pod tramite il comando seguente:
kubectl get pods -l app=pubsub

Questo comando filtra l'elenco dei pod, includendo solo quelli con un'etichetta corrispondente ad app: pubsub.

Output:

NAME READY STATUS RESTARTS AGE pubsub-74d4d96ddb-lqkt8 0/1 CrashLoopBackOff 0 6s Nota: è necessario attendere circa un minuto. L'applicazione viene avviata, ma non avrà esito positivo.
  1. Elenca di nuovo i pod:
kubectl get pods -l app=pubsub

Output:

NAME READY STATUS RESTARTS AGE pubsub-74d4d96ddb-lqkt8 0/1 Error 4 2m

Osserva lo stato del pod. Presenta un errore e si è riavviato diverse volte.

  1. Per controllare i log dal pod, esegui il comando seguente:
kubectl logs -l app=pubsub

Il messaggio di errore visualizzato alla fine del log indica che l'applicazione non dispone delle autorizzazioni per inviare query al servizio Cloud Pub/Sub.

StatusCode.PERMISSION_DENIED, User not authorized to perform this action.

Crea le credenziali del service account

Ora creerai un nuovo account di servizio e concederai l'accesso alla sottoscrizione Pub/Sub che l'applicazione di test sta tentando di utilizzare. Anziché cambiare il service account dei nodi del cluster GKE, genererai una chiave JSON per il service account, quindi potrai passare in modo sicuro la chiave JSON al pod tramite secret di Kubernetes.

  1. Nella console Google Cloud, nel menu di navigazione, fai clic su IAM e amministrazione > Service account.
  2. Fai clic su + Crea service account.
  3. Nella casella di testo Nome service account, inserisci pubsub-app e fai clic su Crea e continua.
  4. Nell'elenco a discesa Seleziona un ruolo, scegli Pub/Sub > Sottoscrittore Pub/Sub.
  5. Verifica che il ruolo sia presente nell'elenco e fai clic su Continua, quindi su Fine.
  6. Nella schermata della panoramica del service account, fai clic sui tre puntini sul lato destro del service account pubsub-app, quindi seleziona Gestisci chiavi.
  7. Nel menu a discesa, fai clic su Aggiungi chiave, quindi seleziona Crea nuova chiave.
  8. Seleziona JSON come tipo di chiave, quindi fai clic su Crea.
  9. Un file della chiave JSON contenente le credenziali dell'account di servizio verrà scaricato sul computer. Puoi vedere il file nella barra dei download nella parte inferiore dello schermo. Utilizzerai questo file della chiave per configurare l'applicazione di esempio per l'autenticazione nell'API Cloud Pub/Sub.
  10. Fai clic su Chiudi.
  11. Sul disco rigido, individua la chiave JSON che hai appena scaricato e rinomina il file in credentials.json.

Importa le credenziali come secret

  1. In Cloud Shell, fai clic sull'icona con tre puntini () nella barra degli strumenti di Cloud Shell per visualizzare altre opzioni.

  1. Fai clic su Carica e carica il file credentials.json dalla macchina locale alla VM Cloud Shell, quindi fai clic su Carica.
  2. In Cloud Shell, inserisci il seguente comando per confermare che il file è stato caricato:
ls ~/

Dovresti visualizzare il file delle credenziali caricato insieme alla directory dei file del lab che hai clonato in precedenza.

  1. Per salvare il file della chiave credentials.json in un secret di Kubernetes chiamato pubsub-key, esegui il seguente comando:
kubectl create secret generic pubsub-key \ --from-file=key.json=$HOME/credentials.json

Questo comando crea un secret denominato pubsub-key contenente un valore key.json che include i contenuti della chiave privata scaricata dalla console Google Cloud.

  1. Rimuovi il file credentials.json dal computer:
rm -rf ~/credentials.json

Configura l'applicazione con il secret

Ora aggiorna il deployment per includere le seguenti modifiche:

  • Aggiungi un volume alla specifica del pod. Questo volume contiene il secret.
  • Il volume del secret è montato nel container dell'applicazione.
  • La variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS è impostata in modo da puntare al file della chiave nel montaggio del volume del secret.

La variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS viene riconosciuta automaticamente dalle librerie client di Cloud, in questo caso il client Cloud Pub/Sub per Python.

Ti è stato fornito il file di deployment aggiornato, chiamato pubsub-secret.yaml.

apiVersion: apps/v1 kind: Deployment metadata: name: pubsub spec: selector: matchLabels: app: pubsub template: metadata: labels: app: pubsub spec: volumes: - name: google-cloud-key secret: secretName: pubsub-key containers: - name: subscriber image: gcr.io/google-samples/pubsub-sample:v1 volumeMounts: - name: google-cloud-key mountPath: /var/secrets/google env: - name: GOOGLE_APPLICATION_CREDENTIALS value: /var/secrets/google/key.json
  1. Esegui il deployment del file di configurazione pubsub-secret.yaml:
kubectl apply -f pubsub-secret.yaml
  1. Una volta eseguito il deployment, esegui il seguente comando per visualizzare lo stato del pod:
kubectl get pods -l app=pubsub

Lo stato del pod deve essere In esecuzione. La modifica dello stato potrebbe richiedere alcuni secondi per essere applicata.

Output:

NAME READY STATUS RESTARTS AGE pubsub-c4f48b868-xk27w 1/1 Running 0 35s

Testa la ricezione di messaggi Cloud Pub/Sub

  1. Ora che hai configurato l'applicazione, pubblica un messaggio nell'argomento Cloud Pub/Sub che hai creato in precedenza nel lab:
gcloud pubsub topics publish $my_pubsub_topic --message="Hello, world!"

Output (l'ID del messaggio sarà diverso):

messageIds: - '328977244395410'

Entro pochi secondi, il messaggio dovrebbe essere ritirato dall'applicazione e stampato nello stream di output.

  1. Per controllare i log dal pod di cui è stato eseguito il deployment, esegui il comando seguente:
kubectl logs -l app=pubsub

L'output dovrebbe essere simile all'esempio seguente.

Output:

Pulling messages from Pub/Sub subscription... [2018-12-17 22:01:06.860378] Received message: ID=328977244395410 Data=b'Hello, world!' [2018-12-17 22:01:06.860736] Processing: 328977244395410 [2018-12-17 22:01:09.863973] Processed: 328977244395410

Fai clic su Controlla i miei progressi per verificare l'obiettivo.

Utilizza i secret

Attività 2. Utilizza oggetti ConfigMap

Gli oggetti ConfigMap associano file di configurazione, argomenti della riga di comando, variabili di ambiente, numeri di porta e altri elementi di configurazione nei container dei pod e nei componenti di sistema al runtime.

Gli oggetti ConfigMap ti consentono di separare le configurazioni dai pod e dai componenti. Tuttavia, gli oggetti ConfigMap non sono criptati, pertanto sono inappropriati per le credenziali. Questa è la differenza tra secret e oggetti ConfigMap: i secret sono criptati e sono quindi più adatti a informazioni riservate o sensibili, come le credenziali.

Gli oggetti ConfigMap sono più adatti per informazioni di configurazione generali come i numeri di porta.

Utilizza il comando kubectl per creare oggetti ConfigMap

Puoi utilizzare kubectl per creare oggetti ConfigMap seguendo il pattern kubectl create configmap [NAME] [DATA] e aggiungendo un flag per il file (--from-file) o un valore letterale (--from-literal).

  1. Inizia con un semplice valore letterale nel seguente comando kubectl:
kubectl create configmap sample --from-literal=message=hello
  1. Per vedere come Kubernetes ha importato oggetti ConfigMap, esegui il comando seguente:
kubectl describe configmaps sample

L'output dovrebbe essere simile all'esempio seguente.

Output:

Name: sample Namespace: default Labels: <none> Annotations: <none> Data ==== message: ---- hello Events: <none>

Dopodiché creerai un oggetto ConfigMap da un file. Ti è stato fornito il file sample2.properties, che contiene alcuni dati di esempio:

message2=world foo=bar meaningOfLife=42
  1. Per creare l'oggetto ConfigMap da sample2.properties, esegui il comando seguente:
kubectl create configmap sample2 --from-file=sample2.properties
  1. Per vedere come Kubernetes ha importato oggetti ConfigMap, esegui il comando seguente:
kubectl describe configmaps sample2

L'output dovrebbe essere simile all'esempio seguente.

Output:

Name: sample2 Namespace: default Labels: <none> Annotations: <none> Data ==== sample2.properties: ---- message2=world foo=bar meaningOfLife=42 Events: <none>

Utilizza i file manifest per creare oggetti ConfigMap

Puoi anche utilizzare un file di configurazione YAML per creare oggetti ConfigMap. Il file config-map-3.yaml contiene la definizione di un oggetto ConfigMap chiamata sample3. Utilizzerai questo oggetto ConfigMap in un secondo momento per illustrare due diversi modi per esporre i dati all'interno di un container.

apiVersion: v1 data: airspeed: africanOrEuropean meme: testAllTheThings kind: ConfigMap metadata: name: sample3 namespace: default selfLink: /api/v1/namespaces/default/configmaps/sample3
  1. Crea l'oggetto ConfigMap dal file YAML:
kubectl apply -f config-map-3.yaml
  1. Per vedere come Kubernetes ha importato oggetti ConfigMap, esegui il comando seguente:
kubectl describe configmaps sample3

L'output dovrebbe essere simile all'esempio seguente.

Output:

Name: sample3 Namespace: default Labels: <none> Annotations: <none> Data ==== airspeed: ---- africanOrEuropean meme: ---- testAllTheThings Events: <none>

Ora hai a disposizione alcune informazioni di configurazione non secret, non criptate, correttamente separate dalla tua applicazione e disponibili per il cluster. Hai eseguito questa attività utilizzando oggetti ConfigMap in tre modi diversi per illustrare le varie opzioni, ma nella pratica scegli un solo metodo, molto probabilmente l'approccio al file di configurazione YAML. I file di configurazione forniscono un record dei valori che hai memorizzato per consentirti di ripetere facilmente la procedura in futuro.

Ora imparerai come accedere a queste informazioni dalla tua applicazione.

Utilizza le variabili di ambiente per consumare oggetti ConfigMap nei container

Per accedere agli oggetti ConfigMap dall'interno dei container utilizzando le variabili di ambiente, è necessario aggiornare la definizione del pod in modo da includere uno o più elementi configMapKeyRefs.

Il file pubsub-configmap.yaml è una versione aggiornata del deployment della demo di Cloud Pub/Sub che include la seguente impostazione env: aggiuntiva alla fine del file per importare variabili di ambiente dall'oggetto ConfigMap al container.

- name: INSIGHTS valueFrom: configMapKeyRef: name: sample3 key: meme
  1. Per applicare nuovamente il file di configurazione aggiornato, esegui il comando seguente:
kubectl apply -f pubsub-configmap.yaml

Ora la tua applicazione ha accesso a una variabile di ambiente chiamata INSIGHTS, che ha il valore testAllTheThings.

  1. Per verificare che la variabile di ambiente abbia il valore corretto, devi ottenere l'accesso della shell al pod, il che significa che ti serve il nome del pod. Per ottenere il nome del pod, esegui il comando seguente:
kubectl get pods

L'output dovrebbe essere simile all'esempio seguente.

Output:

NAME READY STATUS RESTARTS AGE pubsub-77df8f8c6-krfl2 1/1 Running 0 4m
  1. Per avviare la sessione shell, esegui il comando seguente, sostituendo il nome del pod con [MY-POD-NAME]:
kubectl exec -it [MY-POD-NAME] -- sh

Esempio:

kubectl exec -it pubsub-77df8f8c6-krfl2 -- sh
  1. Per stampare un elenco di variabili di ambiente, esegui il comando seguente:
printenv

INSIGHTS=testAllTheThings dovrebbe apparire nell'elenco.

  1. Per uscire dalla sessione shell del container, esegui il comando seguente:
exit

Utilizza i volumi montati per consumare oggetti ConfigMap nei container

Puoi completare un volume con i dati di oggetti ConfigMap invece di (o in aggiunta a) memorizzarli in una variabile di ambiente.

In questo deployment, l'oggetto ConfigMap denominato sample-3 che hai creato in precedenza in questa attività viene aggiunto anche come volume denominato config-3 nelle specifiche del pod. Il volume config-3 viene quindi montato all'interno del container sul percorso /etc/config. Viene configurato anche il metodo originale che utilizza le variabili di ambiente per importare oggetti ConfigMap.

Ti è stato fornito il file di deployment aggiornato, chiamato pubsub-configmap2.yaml.

apiVersion: apps/v1 kind: Deployment metadata: name: pubsub spec: selector: matchLabels: app: pubsub template: metadata: labels: app: pubsub spec: volumes: - name: google-cloud-key secret: secretName: pubsub-key - name: config-3 configMap: name: sample3 containers: - name: subscriber image: gcr.io/google-samples/pubsub-sample:v1 volumeMounts: - name: google-cloud-key mountPath: /var/secrets/google - name: config-3 mountPath: /etc/config env: - name: GOOGLE_APPLICATION_CREDENTIALS value: /var/secrets/google/key.json - name: INSIGHTS valueFrom: configMapKeyRef: name: sample3 key: meme
  1. Applica di nuovo il file di configurazione aggiornato:
kubectl apply -f pubsub-configmap2.yaml
  1. Riconnettiti alla sessione shell del container per verificare se il valore nell'oggetto ConfigMap è accessibile. I nomi dei pod sono cambiati. Per ottenere il nome del pod, esegui il comando seguente:
kubectl get pods

L'output dovrebbe essere simile all'esempio seguente.

Output:

NAME READY STATUS RESTARTS AGE pubsub-747cf8c545-ngsrf 1/1 Running 0 30s pubsub-df6bc7b87-vb8cz 1/1 Terminating 0 4m
  1. Per avviare la sessione shell, esegui il comando seguente, sostituendo il nome del pod con [MY-POD-NAME]:
kubectl exec -it [MY-POD-NAME] -- sh

Esempio:

kubectl exec -it pubsub-747cf8c545-ngsrf -- sh
  1. Vai alla cartella appropriata:
cd /etc/config
  1. Elenca i file nella cartella:

Devono essere elencati i nomi file come chiavi da sample3.

ls

Output:

airspeed meme
  1. Per visualizzare i contenuti di uno dei file, esegui il comando seguente:
cat airspeed

Output:

africanOrEuropean# Nota: il valore airspeed non includeva un ritorno a capo, pertanto il prompt dei comandi (il simbolo \#) si trova alla fine del valore restituito.
  1. Per uscire dalla shell del container, esegui il comando seguente:
exit

Fai clic su Controlla i miei progressi per verificare l'obiettivo.

Utilizza oggetti ConfigMap

Termina il lab

Una volta completato il lab, fai clic su Termina lab. Google Cloud Skills Boost rimuove le risorse che hai utilizzato ed esegue la pulizia dell'account.

Avrai la possibilità di inserire una valutazione in merito alla tua esperienza. Seleziona il numero di stelle applicabile, inserisci un commento, quindi fai clic su Invia.

Il numero di stelle corrisponde alle seguenti valutazioni:

  • 1 stella = molto insoddisfatto
  • 2 stelle = insoddisfatto
  • 3 stelle = esperienza neutra
  • 4 stelle = soddisfatto
  • 5 stelle = molto soddisfatto

Se non vuoi lasciare un feedback, chiudi la finestra di dialogo.

Per feedback, suggerimenti o correzioni, utilizza la scheda Assistenza.

Copyright 2020 Google LLC Tutti i diritti riservati. Google e il logo Google sono marchi di Google LLC. Tutti gli altri nomi di società e prodotti sono marchi delle rispettive società a cui sono associati.

Indietro Avanti

Prima di iniziare

  1. I lab creano un progetto e risorse Google Cloud per un periodo di tempo prestabilito
  2. I lab hanno un limite di tempo e non possono essere messi in pausa. Se termini il lab, dovrai ricominciare dall'inizio.
  3. In alto a sinistra dello schermo, fai clic su Inizia il lab per iniziare

Questi contenuti non sono al momento disponibili

Ti invieremo una notifica via email quando sarà disponibile

Bene.

Ti contatteremo via email non appena sarà disponibile

Un lab alla volta

Conferma per terminare tutti i lab esistenti e iniziare questo

Utilizza la navigazione privata per eseguire il lab

Utilizza una finestra del browser in incognito o privata per eseguire questo lab. In questo modo eviterai eventuali conflitti tra il tuo account personale e l'account Studente, che potrebbero causare addebiti aggiuntivi sul tuo account personale.
Anteprima