Preparare un cluster Windows per il deployment
Questa pagina descrive come preparare il cluster Windows per il deployment.
Prima di iniziare
- Completa la migrazione e genera gli artefatti risultanti.
- Crea il cluster in cui vuoi eseguire il deployment del carico di lavoro. Per ulteriori informazioni, consulta la sezione Creare un cluster Windows
- Configura
kubectl
e connettiti al cluster.
Scegli e configura il tuo registry Docker
Nell'ambito del deployment, crei e carichi l'immagine Docker del tuo container in un registry Docker.
Per il registry Docker puoi scegliere di utilizzare:
Artifact Registry
Qualsiasi registry Docker che supporta l'autenticazione di base
La soluzione consigliata è utilizzare Artifact Registry nello stesso progetto del cluster di deployment. GKE può accedere al registry per impostazione predefinita. Per ulteriori informazioni, consulta i requisiti per l'integrazione con GKE.
Se vuoi utilizzare un registro Docker privato, scopri come configurarlo.
Configura i workload di cui è stata eseguita la migrazione in modo che utilizzino gMSA
I carichi di lavoro delle applicazioni Windows IIS sono spesso uniti ad Active Directory (AD) e operano utilizzando le identità di dominio. Durante la migrazione di queste VM ai container, i container stessi non sono uniti al dominio, ma i nodi del cluster Kubernetes di cui sono host possono essere uniti al dominio.
Quando esegui il deployment dei contenitori di cui è stata eseguita la migrazione in un cluster, puoi utilizzare un account servizio gestito di gruppo (gMSA). Utilizza gMSA per eseguire il contenitore all'interno di un'identità dell'account di servizio specifico. Collega un gMSA nel cluster Kubernetes come parte della configurazione del pod anziché come configurazione di identità statica all'interno dell'immagine del contenitore.
Migrate to Containers ti aiuta nella procedura di trasformazione dei carichi di lavoro. Migrate to Containers rileva automaticamente la configurazione dei pool di applicazioni IIS e aggiunge consigli al piano di migrazione generato. Puoi quindi valutare questi consigli e modificarli in base al tuo ambiente e ai tuoi requisiti specifici.
Se Migrate to Containers determina che la configurazione di un pool di applicazioni non richiede un account gMSA, mantiene la configurazione del pool di applicazioni originale. Ad esempio, quando utilizza un tipo di account integrato come
ApplicationPoolIdentity
, NetworkService
, LocalSystem
o LocalService
.
Per supportare gMSA in un contenitore Windows sottoposto a migrazione, devi:
Modifica il piano di migrazione per impostare le proprietà necessarie per configurare il contenitore sottoposto a migrazione in modo che utilizzi un gMSA.
Configura il cluster di destinazione che ospita il contenitore di cui è stato eseguito il deployment.
Configura un cluster di destinazione per supportare gMSA
Collega un gMSA nel cluster Kubernetes come parte della configurazione del pod, piuttosto che come configurazione di identità statica all'interno dell'immagine container.
Per configurare un cluster che ospita il contenitore Windows sottoposto a migrazione per supportare gMSA, devi disporre di:
Per ulteriori informazioni, consulta le seguenti risorse:
- Crea gMSA per i container Windows.
- Crea un account di servizio gestito di gruppo.
- Utilizzo di gMSA nella documentazione di Google Cloud .
- Configurare l'app per l'utilizzo di un account gMSA nella documentazione di Microsoft.
Esegui il deployment di un contenitore quando archivi i certificati SSL come secret di Kubernetes
Ti consigliamo di utilizzare Cloud Load Balancing, Ingress o Cloud Service Mesh come frontend HTTPS per proteggere l'accesso esterno al tuo container di cui è stato eseguito il deployment. Questa opzione ti consente di proteggere le comunicazioni esterne senza includere certificati all'interno del cluster. Per saperne di più, consulta la sezione Personalizzare un piano di migrazione.
Puoi anche archiviare i certificati Secure Sockets Layer (SSL) come secret Kubernetes e montarli in fase di esecuzione nel contenitore.
Per utilizzare i secret di Kubernetes:
Crea un file PFX con il certificato e la password.
Crea un file YAML di configurazione che definisce l'accesso al sito:
sites: - sitename: "sitename" sslport: 443 pfxpath: c:\sslconfig\pfx password: "password" thumbprint: "3e858d0551fc0536f52d411dad92b680a4fad4da"
Dove:
sitename
specifica il nome del sito configurato per l'utilizzo di SSL. La proprietàsites
può contenere più vocisitename
.sslport
specifica la porta da ascoltare per le connessioni SSL (in genere 443).pfxpath
specifica il percorso del file PFX. Configuralo nell'ambito delvolumeMounts
del deployment del pod.password
specifica la password per il file PFX.thumbprint
specifica l'impronta SHA-1 del file PFX che può essere recuperata utilizzando il comando PowerShell:Get-PfxCertificate -FilePath "path to pfx"
In alternativa, visualizzalo in Gestore dei certificati di Windows.
Crea il secret Kubernetes:
kubectl create secret generic secret-name --from-file=pfx=path-to-pfx --from-file=config=path-to-config
Crea il volume e il relativo montaggio durante il deployment dell'immagine:
apiVersion: v1 kind: Pod metadata: name: iis-pod labels: app: iis-server-simple spec: nodeSelector: kubernetes.io/os: windows containers: - name: iis-server image: your-image-url volumeMounts: - name: ssl-secret mountPath: c:\sslconfig env: - name: M4A_CERT_YAML value: c:\sslconfig\config volumes: - name: ssl-secret secret: secretName: secret-name
Dove:
mountPath
è lo stesso percorso specificato dapfxpath
nel file di configurazione creato nel passaggio 2.M4A_CERT_YAML
è una variabile di ambiente impostata sul percorso completo del file YAML di configurazione che hai creato nel passaggio 2.secret-name
è il nome del secret creato nel passaggio 3.
Configura SSL
Ti consigliamo di non memorizzare le chiavi private dei certificati SSL all'interno di un'immagine contenitore, in quanto sono accessibili a chiunque le legga. Migrate to Containers offre diversi modi per gestire SSL per Windows.
Utilizza un certificato autofirmato generato automaticamente
Per impostazione predefinita, a un contenitore Windows con un'associazione HTTPS viene assegnato un certificato autofirmato generato automaticamente all'inizializzazione del contenitore Docker. Questa configurazione ti consente di testare il tuo carico di lavoro sottoposto a migrazione, ma non può essere utilizzata in un ambiente di produzione. Il certificato è autofirmato e rigenerato ogni volta che viene eseguito il contenitore.
Consigliato: utilizza Cloud Load Balancing, Ingress o Cloud Service Mesh
Puoi personalizzare le associazioni nel piano di migrazione in modo che utilizzino HTTP. Quindi, utilizza Cloud Load Balancing, Ingress o Cloud Service Mesh come frontend HTTPS per proteggere l'accesso esterno. Questa opzione ti consente di proteggere la comunicazione esterna senza includere alcun certificato all'interno del cluster.
Per personalizzare il vincolo, modifica la definizione di
site
nel piano di migrazione che rappresenta la migrazione per impostareprotocol
suhttp
:sites: site: - applications: - path: / virtualdirectories: - path: / physicalpath: '%SystemDrive%\inetpub\wwwroot' bindings: - port: 8080 protocol: http name: Default Web Site
Puoi quindi inoltrare le richieste dall'interfaccia frontend HTTPS al percorso e alla porta HTTP del carico di lavoro Windows.
Memorizza i certificati SSL come secret Kubernetes
Ti consigliamo di utilizzare Cloud Load Balancing, Ingress o Cloud Service Mesh come frontend HTTPS per proteggere l'accesso esterno. Tuttavia, puoi anche memorizzare i certificati SSL come secret Kubernetes e montarli in fase di esecuzione nel contenitore.
Per utilizzare i certificati SSL archiviati come secret di Kubernetes, devi modificare l'immagine di deployment del contenitore. Per ulteriori informazioni, consulta Eseguire il deployment di un contenitore quando si archiviano i certificati SSL come secret di Kubernetes.
Configurare il logging in Cloud Logging
Migrate to Containers utilizza lo strumento LogMonitor per estrarre i log da un container Windows e inoltrarli al tuo cluster GKE. Questi log vengono poi inoltrati automaticamente a Cloud Logging, che fornisce una suite di strumenti per monitorare i contenitori.
Per impostazione predefinita, Migrate to Containers attiva la registrazione di IIS per monitorare i log di IIS e inoltra anche i log degli eventi di sistema o dell'applicazione a Cloud Logging.
Configurazione logging
L'espansione del file artifacts.zip
generato crea diverse directory, tra cui la directory m4a
. La directory contiene una cartella per ogni immagine.
Nella directory m4a
è incluso il file LogMonitorConfig.json
che puoi modificare per controllare il logging.
Per saperne di più sulla modifica di LogMonitorConfig.json
, consulta
Creare un file di configurazione.
Impostare gli ACL
Alcune applicazioni IIS richiedono di impostare autorizzazioni specifiche per gli elenchi di controllo dell'accesso dell'accesso (ACL) su file e cartelle affinché le applicazioni funzionino correttamente. Migrate to Containers esegue automaticamente la scansione di tutte le applicazioni IIS migrate e aggiunge eventuali autorizzazioni specifiche definite nella VM di origine che si applicano agli account IIS (l'account IUSR
e il gruppo IIS_IUSRS
) e le applica ai file e alle directory copiati nell'immagine del contenitore generata.
Poiché le immagini container di Windows non supportano l'impostazione delle ACL nell'ambito del comando COPY
di Docker, le ACL vengono impostate in uno script denominato set_acls.bat
.
Migrate to Containers crea automaticamente set_acls.bat
nella directory dell'immagine generata per la tua applicazione Windows specifica.
Migrate to Containers chiama quindi set_acls.bat
quando esegui il comando
docker build
.
Modifica set_acls.bat
per aggiungere o rimuovere autorizzazioni personalizzate oppure modifica le autorizzazioni
che non sono correlate a utenti IIS specifici e che pertanto non sono state rilevate da
Migrate to Containers.
Lo script utilizza lo strumento integrato di Windows icacls per impostare le autorizzazioni.
Informazioni sulla cache assembly globale di .NET
Migrate to Containers esegue la scansione della cache assembly globale .NET (GAC) dell'immagine di origine per le risorse .NET installate sulla macchina di origine e non disponibili nelle immagini ufficiali. Qualsiasi DLL rilevata viene copiata nel contesto Docker e installata nell'ambito della creazione dell'immagine di destinazione da uno script di utilità install_gac.ps1
.
Tutti gli assembly .NET vengono copiati nel contesto Docker nella directory m4a\gac
. Per rimuovere gli assembly dall'immagine, eliminali dalla directory m4a\gac
.
Registrazione della DLL dell'oggetto COM
Le DLL che espongono oggetti COM vengono analizzate e registrate automaticamente. Durante la fase di estrazione, i file copiati vengono analizzati per rilevare le DLL registrate come oggetti COM, che vengono poi registrate nel contenitore.
Questo processo avviene senza input utente. Tuttavia, puoi influire su questo processo aggiungendo altre DLL da copiare. Se necessario, queste DLL vengono controllate e registrate a loro volta.