Puoi abilitare qualsiasi istanza di macchina virtuale (VM) in modo che sia raggiungibile dalla rete esterna o da un'altra organizzazione, operazione nota come ingresso VM. Un carico di lavoro VM in un progetto dell'organizzazione può raggiungere la rete esterna o la VM corrente esposta ai servizi in altre organizzazioni, noto come uscita VM.
Puoi utilizzare VirtualMachineExternalAccess
(VMEA) per controllare insieme l'ingresso e l'uscita delle VM. Puoi trovare gli indirizzi IP in entrata e in uscita che hai abilitato per un'istanza VM nell'API VMM air-gap di Google Distributed Cloud (GDC) o tramite la console GDC.
Prima di iniziare
Per utilizzare i comandi dell'interfaccia a riga di comando (CLI) gdcloud
, assicurati di aver scaricato, installato e configurato la CLI gdcloud
.
Tutti i comandi per Distributed Cloud utilizzano la CLI gdcloud
o
kubectl
e richiedono un ambiente del sistema operativo.
Recupera il percorso del file kubeconfig
Per eseguire comandi sul server API Management, assicurati di disporre delle seguenti risorse:
Accedi e genera il file kubeconfig per il server API Management se non ne hai uno.
Utilizza il percorso del file kubeconfig del server API Management per sostituire
MANAGEMENT_API_SERVER
in queste istruzioni.
Richiedere autorizzazioni e accesso
Per eseguire le attività elencate in questa pagina, devi disporre del ruolo Amministratore
macchina virtuale progetto. Segui i passaggi per
verificare
di disporre del ruolo Amministratore VirtualMachine progetto (project-vm-admin
) nello spazio dei nomi
del progetto in cui si trova la VM.
Per le operazioni sulle VM che utilizzano la console GDC o gcloud CLI,
chiedi all'amministratore IAM del progetto di assegnarti sia il ruolo
Project VirtualMachine Admin sia il ruolo Project Viewer (project-viewer
).
Configura l'accesso esterno alla VM
VirtualMachineExternalAccess
(VMEA) controlla l'ingresso e l'uscita delle VM.
VMEA non può controllare separatamente l'ingresso e l'uscita delle VM. L'ingresso e l'uscita
di una VM devono essere abilitati o disabilitati contemporaneamente.
Puoi configurare e controllare VMEA dall'interfaccia utente o dall'API Distributed Cloud VMM. Una VM può avere un solo VMEA. Se una VM non ha un VMEA, sia l'ingresso che l'uscita sono disattivati per impostazione predefinita.
Attiva l'accesso esterno
Per abilitare una VM con accesso esterno per il trasferimento dei dati in entrata e in uscita, puoi configurare VMEA dalla console GDC o dall'API Virtual Machine Manager di Distributed Cloud.
Per impostazione predefinita, il traffico di rete intraprogetto è consentito e puoi accedere direttamente alla tua VM all'interno del progetto. Una policy di rete blocca tutto il traffico in entrata alla VM dall'esterno del progetto. Devi creare manualmente un nuovo criterio di rete per consentire all'indirizzo IP di origine di accedere alla VM tramite il trasferimento dei dati in entrata. Questa policy di rete può essere una policy di rete per il traffico tra progetti o una policy di rete per il traffico tra organizzazioni. La posizione dipende da dove vuoi accedere alla VM.
Puoi attivare e disattivare l'accesso esterno di una VM specificando true
o
false
nel campo enabled
della specifica VMEA. Per l'ingresso VM, puoi
configurare il trasferimento dei dati nelle porte specificando il nome, il protocollo e il numero di porta
per ogni porta che vuoi aggiungere nel campo ports
della specifica VMEA.
Per abilitare l'accesso esterno di una VM creando un nuovo VMEA, completa i seguenti passaggi:
Console
- Durante la procedura di creazione della VM utilizzando la console, vai alla pagina Dettagli di rete dalla pagina Crea istanza VM.
- Individua Rete nel menu di navigazione verticale della pagina.
- Seleziona Consenti accesso esterno per attivare l'accesso esterno sulla VM.
API
Esegui questo comando:
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -n PROJECT -f - <<EOF
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachineExternalAccess
metadata:
name: VM_NAME
spec:
enabled: true
ports:
- name: PORT_NAME
protocol: PROTOCOL
port: PORT_NUMBER
EOF
Sostituisci le seguenti variabili:
- MANAGEMENT_API_SERVER: il file kubeconfig del server dell'API Management.
- VM_NAME: il nome della VM.
- PORT_NAME: il nome della porta.
- PROTOCOL: il protocollo che vuoi che utilizzi il servizio
di ingresso. Il nome del protocollo deve essere scritto in maiuscolo e deve essere un protocollo supportato da Kubernetes, ad esempio
TCP
,UDP
oSCTP
. - PORT_NUMBER: il numero di porta.
Per abilitare l'accesso esterno di una VM modificando un VMEA esistente tramite l'API VMM, esegui questo comando:
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT
Disattivare l'accesso esterno
Se una VM non ha un VMEA corrispondente, sia l'ingresso che l'uscita sono
disattivati. Se una VM ha un VMEA corrispondente, puoi disattivarlo impostando il campo enabled
su false
o eliminando direttamente il VMEA. Puoi eseguire
queste operazioni tramite l'API Distributed Cloud VMM.
Per disattivare l'accesso esterno, completa i seguenti passaggi:
API
Disattiva l'accesso esterno eliminando un VMEA:
kubectl --kubeconfig MANAGEMENT_API_SERVER delete virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT
Sostituisci quanto segue:
- MANAGEMENT_API_SERVER: il file kubeconfig del server dell'API Management.
- VM_NAME: il nome della VM.
- PROJECT: il progetto Distributed Cloud in cui si trova la VM.
Disattiva l'accesso esterno modificando un VMEA:
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT
Aggiorna il campo enabled
su false
.
In entrata
Visualizzare gli indirizzi IP in entrata
Se una VM è abilitata con Ingress, dopo la creazione viene visualizzato un indirizzo IP Ingress nella console GDC. Puoi trovare questo indirizzo IP di ingresso nella pagina Dettagli VM della console GDC.
Per recuperare l'indirizzo IP, utilizza l'API Distributed Cloud VMM. Completa i seguenti passaggi:
API
Recupera l'indirizzo IP:
kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT -ojsonpath='{.status.ingressIP}'
Per una VM con un sistema operativo diverso, utilizza il comando ssh
per
accedere alla VM con l'indirizzo IP di ingresso con la porta che hai attivato con
TCP.
Modifica Ingress
Dopo aver abilitato VMEA per una VM, puoi personalizzare l'ingresso modificando
VMEA. Puoi modificare direttamente la specifica dell'ingresso VM dalla console GDC. Puoi anche utilizzare l'interfaccia a riga di comando kubectl
per modificare l'ingresso VM dalle specifiche di VMEA.
Per modificare il VMEA per personalizzare l'ingresso, completa i seguenti passaggi:
Ad esempio, utilizza i seguenti comandi per aggiungere la porta PORT_NUMBER a un ingresso VM esistente utilizzando il protocollo TCP:
Console
Modifica direttamente le porte nel servizio di ingresso VM dalla console GDC:
- Nel menu di navigazione verticale, fai clic su Istanze.
- Nella pagina, scorri fino a Dettagli della rete.
Fai clic sull'icona di modifica in Porte di ingresso per modificare la porta di ingresso.
API
kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT --type "json" -p '[{"op":"add","path":"/spec/ports/-","value": {"name":"PORT_NAME","port":PORT_NUMBER, "Protocol":"TCP"}}]'
Sostituisci quanto segue:
- MANAGEMENT_API_SERVER: il file kubeconfig del server dell'API Management.
- VM_NAME: il nome della VM.
- PROJECT: il progetto Distributed Cloud in cui si trova la VM.
- PORT_NAME: il nome della porta da aggiungere.
- PORT_NUMBER: il numero di porta.
Abilita Ingress con protocollo non TCP
Distributed Cloud ti consente di abilitare l'ingresso della VM con protocolli diversi. Per impostazione predefinita, un servizio di ingresso VM utilizza il protocollo TCP. Puoi aggiungere il tuo ingresso del protocollo non TCP per la tua VM. Distributed Cloud supporta i seguenti protocolli:
- Transmission Control Protocol (TCP).
- User Datagram Protocol (UDP).
- Stream Control Transmission Protocol (SCTP).
Puoi abilitare il trasferimento dei dati in entrata con un protocollo non TCP specificando nomi di protocollo diversi durante la creazione di VMEA.
In uscita
Un workload VM in un progetto dell'organizzazione può raggiungere la rete esterna o essere esposto a servizi in altre organizzazioni. Se attivi il trasferimento dei dati in uscita per la VM, viene generato un indirizzo IP di uscita. La VM si connette ai servizi esterni con questo indirizzo IP.
Per eseguire il trasferimento dei dati in uscita da questo indirizzo IP dalla rete esterna, potresti dover applicare criteri di rete del progetto. Per ulteriori informazioni, consulta le norme di rete per il traffico in uscita tra organizzazioni.
Visualizzare l'indirizzo IP di uscita
Se una VM è abilitata con Egress, un indirizzo IP di uscita viene visualizzato nella console GDC dopo la creazione. Puoi trovare questo indirizzo IP di uscita anche nella pagina Dettagli VM.
Per visualizzare l'indirizzo IP di uscita:
API
Recupera l'indirizzo IP:
kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT -ojsonpath='{.status.egressIP}'
Sostituisci quanto segue:
- MANAGEMENT_API_SERVER: il file kubeconfig del server dell'API Management.
- VM_NAME: il nome della VM.
- PROJECT: il progetto Distributed Cloud in cui si trova la VM.
Il traffico in uscita della VM si basa su un progetto. Le VM all'interno dello stesso progetto contengono lo stesso indirizzo IP in uscita.
Controllo del traffico in uscita
Nelle versioni precedenti di Distributed Cloud, era necessario riavviare la VM per riflettere le modifiche all'uscita di una VM in esecuzione. Nella versione 1.11, puoi attivare e disattivare l'uscita della VM senza riavviarla. Questa modifica ha effetto subito dopo l'aggiornamento del VMEA.