Prepara un cluster Linux per il deployment
Questa pagina descrive come preparare il cluster di destinazione per il deployment.
Prima di iniziare
Questo documento presuppone che tu abbia già completato la migrazione e che tu abbia generati dagli artefatti risultanti.
Assicurati che il cluster di destinazione abbia accesso in lettura al Docker Registry
Nell'ambito dell'esecuzione di una migrazione, Migrazione a contenitori carica le immagini Docker che rappresentano una VM di cui è stata eseguita la migrazione in un registry Docker. Queste immagini Docker rappresentano i file e le directory della VM di migrazione.
Per il Docker Registry puoi scegliere di utilizzare:
Qualsiasi registro Docker che supporti l'autenticazione di base
Per ulteriori informazioni, consulta Definizione dei repository di dati.
Esegui il deployment di un carico di lavoro su un progetto Google Cloud diverso da quello utilizzato per la migrazione
Spesso nel tuo ambiente sono presenti più progetti Google Cloud. Se eseguire una migrazione in un progetto Google Cloud, ma poi eseguire il deployment di un carico di lavoro migrato in un cluster in un progetto diverso, devi assicurarti di che abbiano le autorizzazioni configurate correttamente.
Ad esempio, esegui la migrazione nel progetto A. In questo caso, l'oggetto il carico di lavoro viene copiato in un bucket Container Registry progetto A. Ad esempio:
gcr.io/project-a/image_name:image_tag
Poi vuoi eseguire il deployment del carico di lavoro in un cluster nel progetto B. In caso contrario e configurare le autorizzazioni correttamente per cui il pod del carico di lavoro non riesce a eseguire perché il cluster nel progetto B non ha accesso al pull delle immagini al progetto A. Poi vedrai un evento sul pod contenente un messaggio nel formato:
Failed to pull image "gcr.io/project-a/image_name:image_tag... pull access denied... repository does not exist or may acquire 'docker login'...
Tutti i progetti che hanno abilitato l'API Compute Engine dispongono di un'istanza Compute Engine account di servizio predefinito, che include seguente indirizzo email:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Dove PROJECT_NUMBER è il numero del progetto B.
Per aggirare il problema, assicurati che il servizio predefinito Compute Engine
l'account del progetto B dispone delle autorizzazioni necessarie per accedere
Bucket Container Registry. Ad esempio, puoi utilizzare
seguente comando gcloud storage
per abilitare l'accesso:
gcloud storage buckets add-iam-policy-binding gs://artifacts.project-a.appspot.com --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com --role=roles/storage.objectViewer
Esegui il deployment in un cluster di destinazione utilizzando Container Registry come registry Docker
Per assicurarti che un cluster di destinazione abbia accesso a Container Registry, Creare un secret Kubernetes contenente le credenziali necessarie per accedere. Container Registry:
Crea un account di servizio per eseguire il deployment di una migrazione come descritto in Creazione di un account di servizio per accedere a Container Registry e Cloud Storage.
In questo processo devi scaricare un file chiave JSON denominato
m4a-install.json
.Crea un secret Kubernetes contenente le credenziali necessarie per accedere Container Registry:
kubectl create secret docker-registry gcr-json-key \ --docker-server=gcr.io --docker-username=_json_key --docker-password="$(cat ~/m4a-install.json.json)" \ --docker-email=account@project.iam.gserviceaccount.com
dove:
docker-registry
specifica il nome del secret Kubernetes,gcr-json-key in questo esempio.docker-server=gcr.io
specifica Container Registry come server.docker-username=_json_key
specifica che il nome utente è contenuto in il file della chiave JSON.docker-password
specifica di utilizzare una password del file di chiavi JSON.docker-email
specifica l'indirizzo email dell'account di servizio.
Imposta il secret di Kubernetes in uno dei seguenti modi:
Modifica del valore predefinito
imagePullSecrets
:kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "gcr-json-key"}]}'
Modifica del file
deployment_spec.yaml
per aggiungere il valoreimagePullSecrets
alla definizionespec.template.spec
. Quando utilizzi WebSphere tradizionale, il file YAML del deployment è denominatotwas_deployment_spec.yaml
,liberty_deployment_spec.yaml
oopenliberty_deployment_spec.yaml
, a seconda del target.spec: containers: - image: gcr.io/PROJECT_ID/mycontainer-instance:v1.0.0 name: mycontainer-instance ... volumes: - hostPath: path: /sys/fs/cgroup type: Directory name: cgroups imagePullSecrets: - name: gcr-json-key
Sostituisci PROJECT_ID con l'ID progetto.
Esegui il deployment del secret del carico di lavoro, se esiste
secrets.yaml
. Esiste un file secrets per i carichi di lavoro basati su Tomcat e per i carichi di lavoro tradizionali basati su WebSphere con Liberty. Il file Liberty è denominatoliberty-secrets.yaml
.kubectl apply -f secrets.yaml
Esegui il deployment in un cluster di destinazione utilizzando un registry Docker con autenticazione di base
Se utilizzi un Docker Registry per l'archiviazione delle immagini di migrazione, deve supportare l'autenticazione di base mediante nome utente e password. Poiché esistono molti modi per configurare una connessione di sola lettura registry, devi utilizzare il metodo appropriato per la piattaforma del tuo cluster e Docker Registry.
Passaggi successivi
- Scopri come creare ed eseguire il deployment di carichi di lavoro basati su Linux.
- Scopri come personalizzare gli artefatti di migrazione per i carichi di lavoro basati su Windows.
- Scopri come creare ed eseguire il deployment di carichi di lavoro basati su Windows.
- Scopri come esaminare i file generati per il deployment di un container di sistema Linux.