Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
SSH diretto
Avviso di sicurezza
Direct SSH apre una porta TCP in ingresso sui pod del cluster. Lo consigliamo Accesso remoto tramite SSH su SSM perché non richiede porte in entrata aperte. Abilita Direct SSH solo se l'accesso remoto tramite SSM non è in grado di soddisfare le tue esigenze (ad esempio, non è richiesto alcun accesso a Internet o strumenti SSH standard).
Prima di abilitare, consulta quanto segue:
- Cluster-wide impatto
-
directSSH.enabled: trueapre la porta configurata su tutti i workspace pod a livello di cluster, non solo sugli spazi di lavoro o sugli utenti selezionati. - Ambito di un gruppo di sicurezza
-
Limita la regola in entrata al blocco CIDR (Classless Routing) di origine più stretto possibile. Inter-Domain
0.0.0.0/0Non usare mai. Effettua controlli regolarmente utilizzando la regola gestita AWS Config restricted-ssh. - Ciclo di vita delle chiavi SSH
-
Gestisci il ciclo di vita delle chiavi SSH. Le chiavi SSH sono credenziali di lunga durata. Senza una politica di rotazione, una chiave compromessa garantisce un accesso persistente. Stabilisci una politica di rotazione delle chiavi SSH e ruota le chiavi periodicamente, prima di distribuirle al tuo team.
- Isolamento della rete VPC
-
Gestisci l'isolamento della rete VPC. Quando abiliti Direct SSH, sshd si avvia sul pod e i gruppi di sicurezza e il routing del tuo VPC controllano chi può raggiungerlo. Assicurati che solo fonti di rete affidabili (sottorete VPN, CIDR Direct Connect o intervallo di rete aziendale) possano raggiungere la porta configurata. Direct SSH espone la porta SSH sull'indirizzo IP privato del pod all'interno del tuo VPC. Un client può accedervi solo se dispone di connettività di rete a quel VPC, tramite lo stesso VPC, il peering VPC, una VPN o Direct Connect.
Prerequisiti
Direct SSH richiede ExternalDNS, una Amazon Route 53 Private Hosted Zone, connettività VPC dai computer client e (facoltativamente) il Load Balancer Controller. AWS Per l'elenco completo dei prerequisiti, consulta. Prerequisiti per Direct SSH
Se l'accesso tramite browser Web è già abilitato nel cluster, tutti i prerequisiti sono soddisfatti. Prima di procedere, verifica che ExternalDNS sia configurato con. --policy=sync Per informazioni dettagliate, vedi Configurazione DNS esterna.
Se l'accesso al browser Web non è ancora configurato, consulta. (Facoltativo) Impostazione dei prerequisiti Per ulteriori informazioni sull'abilitazione dell'accesso tramite browser Web, vedereInstallazione del componente aggiuntivo EKS - Jupyter K8s con WebUI.
Configura Direct SSH per il tuo cluster
Cluster-wide ambito
directSSH.enabled: trueavvia sshd sulla porta configurata in tutti i pod dello spazio di lavoro a livello di cluster. SSH fornisce lo stesso accesso del JupyterLab terminale: stesso utente (), stesso file system. sagemaker-user
Passaggio 1: aggiungere una regola del gruppo di sicurezza per SSH
L'accesso al browser Web utilizza HTTPS (443) tramite un Application Load Balancer (ALB). Poiché Direct SSH si connette direttamente agli IP del pod sulla porta configurata, è necessario aggiungere una regola in ingresso per il gruppo di sicurezza.
La configurazione del VPC è di tua responsabilità
È necessario configurare correttamente il VPC, inclusi i gruppi di sicurezza, il routing e i controlli di accesso alla rete. Direct SSH avvia sshd sul pod. Il tuo VPC determina chi può accedervi. Limita l'accesso solo ai CIDR che possono accedere tramite SSH agli spazi di lavoro (ad esempio, l'intervallo della rete aziendale, la sottorete del tunnel VPN o il CIDR Direct Connect). Non usare 0.0.0.0/0.
Verifica il gruppo di sicurezza corretto prima di apportare modifiche
HyperPod i gruppi di istanze possono sovrascrivere la configurazione di VPC a livello di gruppoOverrideVpcConfig, inclusi i gruppi di sicurezza. Il gruppo di sicurezza corretto da modificare dipende dall'eventuale sostituzione del gruppo di istanze del workspace. L'aggiunta della regola al gruppo di sicurezza sbagliato genera un errore silenziosoConnection timed out.
Verifica se il tuo gruppo di istanze del workspace ha un override SG:
aws sagemaker describe-cluster \ --cluster-name <HYPERPOD_CLUSTER_NAME> \ --region <AWS_REGION> \ --query 'InstanceGroups[*].{Name:InstanceGroupName, OverrideSGs:OverrideVpcConfig.SecurityGroupIds}'
Opzione A: il gruppo di istanze ha una sostituzione del gruppo di sicurezza
Se non OverrideSGs è nullo, aggiungi la regola a quel gruppo di sicurezza:
SG_ID=<SG_ID_FROM_OVERRIDE_VPC_CONFIG> aws ec2 authorize-security-group-ingress \ --group-id $SG_ID \ --protocol tcp \ --port <SSH_PORT> \ --cidr <SOURCE_CIDR> \ --region <AWS_REGION>
Opzione B: il gruppo di istanze non ha alcuna sostituzione del gruppo di sicurezza
Se OverrideSGs è nullo, utilizza il gruppo di sicurezza a livello di cluster dalla configurazione del SageMaker HyperPod cluster VPC:
SG_ID=$(aws sagemaker describe-cluster --cluster-name <HYPERPOD_CLUSTER_NAME> --region <AWS_REGION> \ --query 'VpcConfig.SecurityGroupIds[0]' --output text) aws ec2 authorize-security-group-ingress \ --group-id $SG_ID \ --protocol tcp \ --port <SSH_PORT> \ --cidr <SOURCE_CIDR> \ --region <AWS_REGION>
La tabella seguente mostra dove trovare ogni valore segnaposto.
| Placeholder | Dove trovarlo |
|---|---|
<HYPERPOD_CLUSTER_NAME> |
In SageMaker Console di gestione AWS, scegli HyperPod Clusters. Oppure corriaws sagemaker list-clusters. |
<SSH_PORT> |
La porta in cui hai configurato directSSH.port (l'impostazione predefinita è 22). Deve corrispondere alla regola in ingresso del gruppo di sicurezza. |
<AWS_REGION> |
La AWS regione in cui sono distribuiti il tuo cluster HyperPod ed EKS. |
<SOURCE_CIDR> |
Il CIDR della tua rete affidabile: sottorete del tunnel VPN, CIDR Direct Connect o intervallo di rete aziendale (ad esempio, 10.192.16). 0/24). Non deve essere 0.0.0. 0/0. |
Passaggio 2: abilitare Direct SSH
Aggiungi directSSH alla configurazione del tuo addon insieme a: clusterWebUI
jupyter-k8s-aws-hyperpod: clusterWebUI: enabled: true domain: "<DOMAIN_NAME>" awsCertificateArn: "<ACM_CERTIFICATE_ARN>" traefik: shouldInstall: true directSSH: enabled: true port: <SSH_PORT> # default: 22 domain: "<ROUTE53_HOSTED_ZONE_DOMAIN>"
La tabella seguente mostra dove trovare ogni valore segnaposto.
| Placeholder | Dove trovarlo |
|---|---|
<DOMAIN_NAME> |
Il dominio che hai configurato quando hai abilitato l'accesso al browser web (ad esempio, spaces.example.com). Per ulteriori informazioni, consulta Installazione del componente aggiuntivo EKS - Jupyter K8s con WebUI. |
<ACM_CERTIFICATE_ARN> |
AWS Certificate Manager (ACM) Console di gestione AWS, scegli Certificati, quindi seleziona il tuo certificato wildcard ARN |
<ROUTE53_HOSTED_ZONE_DOMAIN> |
Route 53 Console di gestione AWS, scegli Hosted Zones, quindi seleziona il nome della zona ospitata privata utilizzata per ExternalDNS (ad esempio, workspaces.internal) |
<SSH_PORT> |
La porta sshd è in ascolto sui pod interni dello spazio di lavoro. Impostazione predefinita 22. Utilizza una porta non privilegiata (ad esempio, 2222) se il tuo gruppo di sicurezza o la politica aziendale limita la porta 22. La regola SG in entrata deve corrispondere a questo valore. |
DirectSSH e RemoteAccess si escludono a vicenda
directSSHremoteAccesse si escludono a vicenda. Consentire il fallimento di entrambe helm upgrade le cause con: «DirectSSH e RemoteAccess si escludono a vicenda. Attivane solo una». Disabilita remoteAccess prima di abilitaredirectSSH.
Aggiorna l'addon:
aws eks update-addon \ --cluster-name <CLUSTER_NAME> \ --addon-name amazon-sagemaker-spaces \ --configuration-values file://addon-config.yaml \ --resolve-conflicts OVERWRITE \ --region <AWS_REGION>
Per disattivare Direct SSH, consulta. Revoca dell'accesso diretto a SSH
Passaggio 3: verifica che Direct SSH sia attivo
# Check addon status aws eks describe-addon \ --cluster-name <CLUSTER_NAME> \ --addon-name amazon-sagemaker-spaces \ --region <AWS_REGION> # Check headless services created for workspaces kubectl get svc -l app.kubernetes.io/component=direct-ssh # Verify DNS record resolves (from within VPC) dig <workspace-name>.<namespace>.<ROUTE53_HOSTED_ZONE_DOMAIN>
Connettiti al tuo spazio di lavoro usando Direct SSH
Utilizza le seguenti procedure per connetterti al tuo spazio di lavoro tramite Direct SSH, gestire le tue chiavi SSH e risolvere i problemi di connessione.
Come funziona l'autenticazione SSH
Direct SSH utilizza l'autenticazione a chiave pubblica standard. Ogni utente genera la propria coppia di chiavi SSH e aggiunge la chiave pubblica al proprio spazio di lavoro. Le chiavi private non escono mai dal computer dell'utente.
Di seguito sono riportati i fatti chiave sull'accesso SSH:
-
SSH fornisce lo stesso accesso del JupyterLab terminale: stesso utente (
sagemaker-user), stesso filesystem, stessi strumenti. -
Le chiavi si riferiscono allo spazio di lavoro. Una chiave in uno spazio di lavoro non consente l'accesso ad altri spazi di lavoro.
-
Lo script di avvio di SageMaker AI Spaces crea automaticamente la
.ssh/directory con le autorizzazioni corrette. -
Le chiavi persistono dopo i riavvii dello spazio di lavoro (archiviate su PVC) e vengono eliminate quando l'area di lavoro viene eliminata.
Limitazione attuale
Il nome utente SSH è sempre sagemaker-user indipendentemente da chi si connette. Non è possibile utilizzare un nome utente personale. Tutte le sessioni vengono eseguite come lo stesso utente dell'area di lavoro. Per-user l'identità nei prompt della shell e nei registri di controllo non è disponibile nella versione corrente.
Passo 1: Genera una chiave SSH sul tuo computer client
Esegui questo comando una volta per creare la tua coppia di chiavi:
ssh-keygen -t ed25519 -f ~/.ssh/my-workspace-key
Questo crea:
-
~/.ssh/my-workspace-key— chiave privata (mantieni segreta, non condividere mai) -
~/.ssh/my-workspace-key.pub— chiave pubblica (da aggiungere al tuo spazio di lavoro)
Passaggio 2: aggiungi la tua chiave pubblica al tuo spazio di lavoro
Utilizza uno dei seguenti metodi per aggiungere la tua chiave pubblica. Non è necessario eseguire entrambe le operazioni.
Aggiungi la tua chiave tramite l'accesso al browser web
-
Apri il tuo spazio di lavoro nel browser (vediAccesso tramite browser Web).
-
Apri un terminale. In JupyterLab, scegli File, Nuovo, Terminale. In Code Editor, scegli Terminale, Nuovo terminale.
-
Copia la tua chiave pubblica dal tuo computer locale:
cat ~/.ssh/my-workspace-key.pub -
Incolla nel terminale dell'area di lavoro:
echo "ssh-ed25519 AAAA...your-key... user@machine" >> ~/.ssh/authorized_keys
Aggiungi la tua chiave tramite kubectl
POD=$(kubectl get pods -n <namespace> -l workspace.jupyter.org/workspace-name=<space-name> \ -o jsonpath='{.items[0].metadata.name}') cat ~/.ssh/my-workspace-key.pub | kubectl exec -n <namespace> -i $POD -c workspace -- \ bash -c "cat >> /home/sagemaker-user/.ssh/authorized_keys"
Passaggio 3: connettiti al tuo spazio di lavoro tramite SSH
ssh -p <SSH_PORT> -i ~/.ssh/my-workspace-key sagemaker-user@<space-name>.<namespace>.<domain>
Porta SSH
Usa la porta SSH configurata dall'amministratore per Direct SSH. Se l'amministratore ha mantenuto la porta predefinita (22), puoi omettere l'opzione. -p Se hanno configurato una porta non predefinita (ad esempio, 2222), è necessario includerla -p <SSH_PORT> o la connessione non riesce. Connection refused Se non sei sicuro della porta da utilizzare, contatta l'amministratore.
Esempio:
ssh -p 2222 -i ~/.ssh/my-workspace-key sagemaker-user@my-space.default.spaces.example.com
Passaggio 4: configura SSH per un facile accesso
Questo passaggio opzionale semplifica le connessioni future. Aggiungi i seguenti elementi a ~/.ssh/config:
Host my-space HostName <space-name>.<namespace>.<domain> Port <SSH_PORT> User sagemaker-user IdentityFile ~/.ssh/my-workspace-key ServerAliveInterval 15 ServerAliveCountMax 3
PortImpostato sulla porta configurata dall'amministratore. È possibile omettere questa riga se Direct SSH utilizza la porta predefinita (22). Quindi connettiti con: ssh my-space
Passaggio 5: collegare un IDE remoto
Dopo che Direct SSH funziona dal tuo terminale (passaggio 3), qualsiasi IDE Remote-SSH compatibile si connette utilizzando la stessa ~/.ssh/config voce. Non è necessaria una AWS configurazione aggiuntiva per questa connessione.
Installa l' Remote-SSH estensione
| IDE | Estensione |
|---|---|
| VS Code | Estensioni, cerca «Remote - SSH», scegli Installa (di Microsoft) |
| Kiro | Estensioni, cerca «Remote - SSH», scegli Installa |
| Cursore | Estensioni, cerca «Remote - SSH», scegli Installa |
Connettiti dall'IDE
-
Apri la palette dei comandi, quindi scegli "Remote-SSH: Connetti all'host...»
-
Seleziona il tuo spazio di lavoro dall'elenco (usi
~/.ssh/configdal passaggio 4). -
L'IDE installa il componente server nello spazio di lavoro (una volta, circa 30 secondi).
-
Si apre una finestra remota con tutte le funzionalità dell'editor IntelliSense, tra cui terminale ed esploratore di file.
Apri i file dell'area di lavoro in VS Code
In VS Code, dopo la connessione, scegli File, Apri cartella, /home/sagemaker-user per aprire direttamente i file dell'area di lavoro.
Gestione e revoca delle chiavi
Gestisci le tue chiavi SSH. Le chiavi SSH sono credenziali di lunga durata senza scadenza automatica. Una chiave consente l'accesso al tuo spazio authorized_keys di lavoro finché non lo rimuovi esplicitamente.
Per ruotare la chiave
Ti consigliamo di ruotare periodicamente i tasti.
-
Genera una nuova coppia di chiavi sul tuo computer client:
ssh-keygen -t ed25519 -f ~/.ssh/my-workspace-key-new -
Aggiungi la nuova chiave pubblica al tuo spazio di lavoro (Fase 2). Sia la vecchia che la nuova chiave funzionano contemporaneamente.
-
Verifica che la nuova chiave funzioni:
ssh -p <SSH_PORT> -i ~/.ssh/my-workspace-key-new sagemaker-user@<hostname> -
Rimuovi la vecchia chiave dal terminale
authorized_keysdel tuo spazio di lavoro:# List current keys with line numbers cat -n ~/.ssh/authorized_keys # Remove a specific line (for example, line 1) sed -i '1d' ~/.ssh/authorized_keys
Se la tua chiave privata è compromessa
Agisci immediatamente. Una chiave compromessa garantisce l'accesso completo all'area di lavoro fino a quando non la rimuovi. authorized_keys
-
Apri il tuo spazio di lavoro tramite l'accesso al browser Web (JupyterLab o Code Editor). Per istruzioni, consulta Accesso tramite browser Web.
-
Rimuovi la chiave compromessa da:
authorized_keys# View all authorized keys cat ~/.ssh/authorized_keys # Option A: Edit directly nano ~/.ssh/authorized_keys # Option B: Remove all keys and re-add only trusted ones > ~/.ssh/authorized_keys echo "ssh-ed25519 AAAA...new-trusted-key..." >> ~/.ssh/authorized_keys -
Verifica che la chiave compromessa non funzioni più tentando di connetterti con essa. Dovresti ricevere.
Permission denied (publickey) -
Se non riesci ad accedere allo spazio di lavoro tramite browser web, contatta l'amministratore del cluster per eseguire l'esecuzione nel pod e procedere direttamente alla cancellazione.
authorized_keys
Best practice
| Fai pratica | Perché |
|---|---|
| Usa le chiavi ed25519 | Più breve, più veloce e più sicuro di RSA |
| Usa una passphrase sulla tua chiave privata | Protegge dal furto delle chiavi. Anche in caso di furto, la chiave non può essere utilizzata senza la passphrase. |
| Una chiave per dispositivo | È più facile revocare l'accesso a un singolo dispositivo senza influire sugli altri |
| Non condividere mai le chiavi private | Ogni utente e dispositivo deve avere una propria coppia di chiavi |
Rivedi authorized_keys periodicamente |
Rimuovi le chiavi dei dispositivi che non usi più |
Revoca dell'accesso diretto a SSH
Per evitare di lasciare aperta una regola del gruppo di sicurezza dopo aver disabilitato Direct SSH, completa tutti e tre i passaggi in ordine. Non saltate il passaggio 2.
Informa i tuoi utenti prima di revocare l'accesso
Informa i tuoi utenti prima di revocare l'accesso. ExternalDNS rimuove i record DNS entro circa 30 secondi dalla Fase 3, che blocca le nuove connessioni.
Passaggio 1: disabilita nel grafico Helm
Rimuovi completamente la directSSH sezione dal file di configurazione del componente aggiuntivo. L'impostazione predefinita di Helm è false quando directSSH.enabled la chiave è assente:
jupyter-k8s-aws-hyperpod: clusterWebUI: enabled: true domain: "<DOMAIN_NAME>" ... # directSSH section removed
In alternativa, imposta esplicitamente: enabled: false
directSSH: enabled: false
Passaggio 2: rimuovere la regola in entrata del gruppo di sicurezza
# Find the rule ID aws ec2 describe-security-group-rules \ --filters Name=group-id,Values=<SG_ID> \ --query 'SecurityGroupRules[?IpProtocol==`tcp` && FromPort==`<SSH_PORT>`].[SecurityGroupRuleId,CidrIpv4]' \ --output table \ --region <AWS_REGION> # Remove the rule aws ec2 revoke-security-group-ingress \ --group-id <SG_ID> \ --security-group-rule-ids <RULE_ID> \ --region <AWS_REGION>
Fase 3: Applica al cluster
aws eks update-addon \ --cluster-name <CLUSTER_NAME> \ --addon-name amazon-sagemaker-spaces \ --configuration-values file://addon-config.yaml \ --resolve-conflicts OVERWRITE \ --region <AWS_REGION>
L'esecuzione di questo comando rimuove i servizi headless per tutti gli spazi di lavoro. ExternalDNS elimina quindi i record di Route 53 A entro circa 30 secondi. Dopo che ExternalDNS ha rimosso i record, le nuove connessioni SSH non possono più risolvere il nome host dello spazio di lavoro.
Cosa succede dopo la revoca
| Componente | Stato dopo la revoca |
|---|---|
| Record DNS | ExternalDNS li rimuove entro circa 30 secondi. Le nuove connessioni non possono risolvere il nome host dell'area di lavoro. |
| Regola SG in entrata | Chiuso dopo il passaggio 2. Nessun percorso di rete raggiunge la porta. |
| Nuove connessioni SSH | Bloccato. Il nome host non si risolve più e la regola SG chiude la porta. |
| Dati dell'area di lavoro (PVC) | Inalterato. Il PVC conserva i tuoi file, authorized_keys e la chiave host. |
Risoluzione dei problemi
| Caratteristiche | Causa | Correggere |
|---|---|---|
NXDOMAIN |
DNS non risolvibile | Verifica l'esistenza della zona ospitata, del VPC associato e del DNS esterno in esecuzione |
Connection timed out |
Blocco SG: regola aggiunta a SG errato o mancante completamente | Controlla OverrideVpcConfig il gruppo di istanze (Admin Step 1). Verifica che la regola TCP in entrata copra il tuo CIDR di origine. |
Connection refused |
sshd non è in esecuzione | Lo spazio di controllo è in stato di esecuzione ed directSSH è abilitato |
Permission denied (publickey) |
La chiave non è inserita authorized_keys |
Aggiungi la chiave pubblica tramite l'accesso al browser Web o kubectl (End User Step 2) |
Host key changedavviso |
Lo spazio è stato ricreato (nuovo pod, nuova chiave host) | Sul computer client: ssh-keygen -R <hostname> quindi riconnettersi |
Stale DNS records after space deletion |
DNS esterno in esecuzione con --policy=upsert-only |
Aggiorna la distribuzione di ExternalDNS e aggiungi. --policy=sync --txt-owner-id=<cluster-name> Pulisci manualmente i record obsoleti esistenti: aws route53 list-resource-record-sets --hosted-zone-id <ZONE_ID> |
| IDE: «Impossibile stabilire la connessione» | sshd non è ancora pronto | Attendi 60-90 secondi dopo la creazione dell'area di lavoro, quindi riprova |
| IDE: si blocca su «Installazione di VS Code Server» | Workspace non ha accesso a Internet | Il tuo spazio di lavoro scarica il file binario del server VS Code da un host esterno alla prima connessione. Contatta il tuo amministratore se l'area di lavoro è in air gap. |
IDE: Permission denied |
IdentityFile mancata corrispondenza del percorso | Verifica che il terminale SSH funzioni prima, quindi effettua il check-in IdentityFile ~/.ssh/config |
| IDE: la connessione si interrompe dopo l'inattività | Nessun keepalive configurato | Aggiungi ServerAliveInterval 15 e a ServerAliveCountMax 3 ~/.ssh/config |
(Facoltativo) Impostazione dei prerequisiti
Utilizzate questa sezione solo se l'accesso al browser Web non è già abilitato o per verificare o aggiornare la configurazione ExternalDNS.
Installazione da zero
Se l'accesso al browser Web non è ancora configurato, è necessario quanto segue prima di abilitare Direct SSH:
-
Zona ospitata di Route 53: un dominio o sottodominio di tua proprietà, registrato in Route 53
-
DNS esterno: distribuito tramite componenti aggiuntivi EKS, con ruolo IAM con autorizzazioni Route 53
-
AWS Load Balancer Controller: richiesto se si utilizza l'accesso tramite browser Web (ingresso ALB). Per le note HyperPod-specific sull'installazione, vedere. AWS Load Balancer Controller: HyperPod requisito VpCID
-
Connettività VPC: VPN o Direct Connect dai computer client al VPC
Per le dipendenze aggiuntive e i passaggi di configurazione dell'accesso al browser Web, consulta. Installa SageMaker AI Spaces Add-on
AWS Load Balancer Controller: HyperPod requisito VpCID
La documentazione di installazione standard AWS del Load Balancer Controller non menziona il parametro. vpcId Nei HyperPod cluster, l'omissione vpcId causa il fallimento dell'installazione. È necessario fornirlo in modo esplicito.
Ottieni il tuo ID VPC:
aws sagemaker describe-cluster \ --cluster-name <HYPERPOD_CLUSTER_NAME> \ --region <AWS_REGION> \ --query 'VpcConfig.VpcId' \ --output text
Installa con i HyperPod parametri richiesti:
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \ -n kube-system \ --set clusterName=<EKS_CLUSTER_NAME> \ --set serviceAccount.create=false \ --set serviceAccount.name=aws-load-balancer-controller \ --set enableServiceMutatorWebhook=false \ --set vpcId=<VPC_ID>
| Parametro | Perché richiesto su HyperPod |
|---|---|
vpcId |
HyperPod Il VPC non è rilevabile automaticamente dal controller. L'installazione fallisce senza di esso. |
enableServiceMutatorWebhook=false |
Il webhook mutante è in conflitto con la configurazione HyperPod del servizio |
serviceAccount.create=false |
L'account di servizio deve essere pre-creato con l'annotazione IRSA o Pod Identity corretta prima dell'installazione |
Crea l'account di servizio (aws-load-balancer-controller) con l'annotazione del ruolo IAM appropriata prima di eseguire questo comando. Per ulteriori informazioni sulla policy IAM e sui passaggi per la creazione dell'account di servizio, consulta la configurazione IRSA di Amazon EKS Load Balancer Controller nella Amazon EKS User Guide.
Configurazione DNS esterna
ExternalDNS sincronizza i servizi Kubernetes con i provider DNS. Configura ExternalDNS con le seguenti impostazioni quando lo usi con Amazon Route 53 in un ambiente di produzione.
ExternalDNS richiede la politica di sincronizzazione
È necessario configurare ExternalDNS con. --policy=sync
Per impostazione predefinita, ExternalDNS utilizza. --policy=upsert-only Questo crea e aggiorna i record DNS ma non li elimina mai. Quando elimini uno spazio di lavoro, i record A e TXT in Amazon Route 53 rimangono come voci non aggiornate.
Utilizzali --policy=upsert-only solo per i test e modificali per --policy=sync la produzione. È inoltre necessario impostare il --txt-owner-id flag, che indica a ExternalDNS quali record possiede e quali record eliminare durante la pulizia.
Configura la tua distribuzione ExternalDNS con i seguenti argomenti:
--provider=aws --source=service # watches Services (required for headless Services) --domain-filter=<ROUTE53_HOSTED_ZONE> # restricts ExternalDNS to your hosted zone only --policy=sync # enables deletion of stale records on space deletion --txt-owner-id=<CLUSTER_NAME> # identifies which records this ExternalDNS instance owns
Negli argomenti precedenti, sostituisci i seguenti valori:
-
<ROUTE53_HOSTED_ZONE>— il tuo dominio di zona ospitata privata Amazon Route 53 (ad esempio,workspaces.internal) -
<CLUSTER_NAME>— il nome del tuo cluster EKS (ad esempio,my-hyperpod-cluster)
Per verificare la tua attuale politica ExternalDNS, esegui il seguente comando:
kubectl get deployment -n kube-system external-dns \ -o jsonpath='{.spec.template.spec.containers[0].args}' | tr ',' '\n' | grep -E 'policy|owner|source|domain'