As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
SSH direto
Aviso de segurança
O SSH direto abre uma porta TCP de entrada em seus pods de cluster. Recomendamos Acesso remoto usando SSH sobre SSM porque não requer portas de entrada abertas. Ative o SSH direto somente se o acesso remoto por meio do SSM não atender às suas necessidades (por exemplo, sem necessidade de acesso à Internet ou ferramentas SSH padrão).
Antes de ativar, revise o seguinte:
- Cluster-wide impacto
-
directSSH.enabled: trueabre a porta configurada em todos os pods do espaço de trabalho em todo o cluster, não apenas nos espaços de trabalho ou usuários selecionados. - escopo dos grupos de segurança
-
Restrinja a regra de entrada ao bloco CIDR ( Inter-Domain Roteamento Sem Classe) de origem mais estreito possível. Nunca use
0.0.0.0/0. Faça auditorias regularmente usando a regra gerenciada AWS Config restricted-ssh. - Ciclo de vida da chave SSH
-
Você gerencia o ciclo de vida da chave SSH. As chaves SSH são credenciais de longa duração. Sem uma política de rotação, uma chave comprometida concede acesso persistente. Estabeleça uma política de rotação de chaves SSH e alterne as chaves periodicamente antes de implementá-las em sua equipe.
- Isolamento de rede VPC
-
Você gerencia o isolamento da rede VPC. Quando você ativa o Direct SSH, o sshd começa no pod e seus grupos de segurança e roteamento da VPC controlam quem pode acessá-lo. Certifique-se de que somente fontes de rede confiáveis (sub-rede VPN, CIDR do Direct Connect ou alcance da rede corporativa) possam alcançar a porta configurada. O Direct SSH expõe a porta SSH no endereço IP privado do pod dentro da sua VPC. Um cliente só pode acessá-lo se tiver conectividade de rede com essa VPC, por meio da mesma VPC, emparelhamento de VPC, VPN ou Direct Connect.
Pré-requisitos
O Direct SSH exige DNS externo, uma zona hospedada privada do Amazon Route 53, conectividade VPC das máquinas clientes e (opcionalmente) o controlador do Load Balancer. AWS Para ver a lista completa de pré-requisitos, consulte. Pré-requisitos para o Direct SSH
Se o acesso ao navegador da Web já estiver habilitado em seu cluster, todos os pré-requisitos estarão em vigor. Antes de continuar, verifique se o ExternalDNS está configurado com. --policy=sync Para obter detalhes, consulte Configuração de DNS externo.
Se o acesso ao navegador da Web ainda não estiver configurado, consulte(Opcional) Configurando pré-requisitos. Para obter mais informações sobre como ativar o acesso ao navegador da Web, consulteInstalação do complemento EKS - Jupyter K8s com WebUI.
Configure o Direct SSH para seu cluster
Cluster-wide escopo
directSSH.enabled: trueinicia o sshd na porta configurada em todos os pods do espaço de trabalho em todo o cluster. O SSH fornece o mesmo acesso que o JupyterLab terminal: mesmo usuário (sagemaker-user), mesmo sistema de arquivos.
Etapa 1: Adicionar regra de grupo de segurança para SSH
O acesso ao navegador da Web usa HTTPS (443) por meio de um Application Load Balancer (ALB). Como o Direct SSH se conecta diretamente aos IPs do pod na porta configurada, você precisa adicionar uma regra de entrada do grupo de segurança.
A configuração do VPC é de sua responsabilidade
Você deve configurar sua VPC corretamente, incluindo grupos de segurança, roteamento e controles de acesso à rede. O SSH direto inicia o sshd no pod. Sua VPC determina quem pode alcançá-la. Restrinja o acesso somente aos CIDRs que podem usar SSH em espaços de trabalho (por exemplo, seu alcance de rede corporativa, sub-rede de túnel VPN ou CIDR de conexão direta). Não use 0.0.0.0/0.
Verifique o grupo de segurança correto antes de modificar
HyperPod grupos de instâncias podem substituir a configuração da VPC no nível do grupoOverrideVpcConfig, incluindo grupos de segurança. O grupo de segurança correto a ser modificado depende de seu grupo de instâncias do workspace ter uma substituição. Adicionar a regra ao grupo de segurança errado resulta em um Connection timed out erro silencioso.
Verifique se o grupo de instâncias do seu espaço de trabalho tem uma substituição de SG:
aws sagemaker describe-cluster \ --cluster-name <HYPERPOD_CLUSTER_NAME> \ --region <AWS_REGION> \ --query 'InstanceGroups[*].{Name:InstanceGroupName, OverrideSGs:OverrideVpcConfig.SecurityGroupIds}'
Opção A: O grupo de instâncias tem uma substituição de grupo de segurança
Se não OverrideSGs for nulo, adicione a regra a esse grupo de segurança:
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>
Opção B: O grupo de instâncias não tem nenhuma substituição de grupo de segurança
Se OverrideSGs for nulo, use o grupo de segurança em nível de cluster da configuração da VPC do SageMaker HyperPod cluster:
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>
A tabela a seguir mostra onde encontrar cada valor de espaço reservado.
| Espaço reservado | Onde obtê-lo |
|---|---|
<HYPERPOD_CLUSTER_NAME> |
No SageMaker Console de gerenciamento da AWS, escolha HyperPod Clusters. Ou corraaws sagemaker list-clusters. |
<SSH_PORT> |
A porta que você configurou directSSH.port (o padrão é 22). Ele deve corresponder à regra de entrada do grupo de segurança. |
<AWS_REGION> |
A AWS região em que seu cluster HyperPod e o EKS estão implantados. |
<SOURCE_CIDR> |
O CIDR da sua rede confiável: sub-rede de túnel VPN, CIDR do Direct Connect ou alcance da rede corporativa (por exemplo, 10.192.16). 0/24). Não deve ser 0.0.0. 0/0. |
Etapa 2: habilitar o SSH direto
Adicione directSSH à sua configuração adicional junto comclusterWebUI:
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>"
A tabela a seguir mostra onde encontrar cada valor de espaço reservado.
| Espaço reservado | Onde obtê-lo |
|---|---|
<DOMAIN_NAME> |
O domínio que você configurou ao habilitar o acesso ao navegador da Web (por exemplo, spaces.example.com). Para obter mais informações, consulte Instalação do complemento EKS - Jupyter K8s com WebUI. |
<ACM_CERTIFICATE_ARN> |
AWS Gerenciador de certificados (ACM) Console de gerenciamento da AWS, escolha Certificados e selecione seu certificado curinga ARN |
<ROUTE53_HOSTED_ZONE_DOMAIN> |
Route 53 Console de gerenciamento da AWS, escolha Zonas hospedadas e selecione o nome da zona hospedada privada usado para ExternalDNS (por exemplo, workspaces.internal) |
<SSH_PORT> |
A porta sshd escuta nos pods internos do espaço de trabalho. Padrão 22. Use uma porta não privilegiada (por exemplo, 2222) se seu grupo de segurança ou política corporativa restringir a porta 22. A regra de entrada do SG deve corresponder a esse valor. |
DirectSSH e RemoteAccess são mutuamente exclusivos
directSSHe remoteAccess são mutuamente exclusivos. Permitir que ambas as causas helm upgrade falhem com: “O DirectSSH e o RemoteAccess são mutuamente exclusivos. Ative somente um.” Desative remoteAccess antes de ativardirectSSH.
Atualize o complemento:
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>
Para desativar o Direct SSH, consulteRevogando o acesso direto ao SSH.
Etapa 3: Verificar se o Direct SSH está ativo
# 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>
Conecte-se ao seu espaço de trabalho usando o Direct SSH
Use os procedimentos a seguir para se conectar ao seu espaço de trabalho usando o Direct SSH, gerenciar suas chaves SSH e solucionar problemas de conexão.
Como funciona a autenticação SSH
O Direct SSH usa autenticação de chave pública padrão. Cada usuário gera seu próprio par de chaves SSH e adiciona a chave pública ao seu espaço de trabalho. As chaves privadas nunca saem da máquina do usuário.
A seguir estão os principais fatos sobre o acesso SSH:
-
O SSH fornece o mesmo acesso que o JupyterLab terminal: mesmo usuário (
sagemaker-user), mesmo sistema de arquivos, mesmas ferramentas. -
As chaves são por espaço de trabalho. Uma chave em um espaço de trabalho não concede acesso a outros espaços de trabalho.
-
O script de inicialização do SageMaker AI Spaces cria automaticamente o
.ssh/diretório com as permissões corretas. -
As chaves persistem nas reinicializações do espaço de trabalho (armazenadas em PVC) e são excluídas quando o espaço de trabalho é excluído.
Limitação atual
O nome de usuário SSH é sempre sagemaker-user independente de quem está se conectando. Você não pode usar um nome de usuário pessoal. Todas as sessões são executadas como o mesmo usuário do espaço de trabalho. Per-user A identidade nos prompts e registros de auditoria do shell não está disponível na versão atual.
Etapa 1: gerar uma chave SSH na sua máquina cliente
Execute este comando uma vez para criar seu par de chaves:
ssh-keygen -t ed25519 -f ~/.ssh/my-workspace-key
Isso cria:
-
~/.ssh/my-workspace-key— chave privada (mantenha em segredo, nunca compartilhe) -
~/.ssh/my-workspace-key.pub— chave pública (adicione ao seu espaço de trabalho)
Etapa 2: adicione sua chave pública ao seu espaço de trabalho
Use um dos métodos a seguir para adicionar sua chave pública. Você não precisa fazer as duas coisas.
Adicione sua chave por meio do acesso ao navegador da web
-
Abra seu espaço de trabalho no navegador (consulteAcesso pelo navegador da web).
-
Abra um terminal. Em JupyterLab, escolha Arquivo, Novo, Terminal. No Editor de código, escolha Terminal, Novo terminal.
-
Copie sua chave pública da sua máquina local:
cat ~/.ssh/my-workspace-key.pub -
Cole no terminal do espaço de trabalho:
echo "ssh-ed25519 AAAA...your-key... user@machine" >> ~/.ssh/authorized_keys
Adicione sua chave por meio do 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"
Etapa 3: conecte-se ao seu espaço de trabalho usando SSH
ssh -p <SSH_PORT> -i ~/.ssh/my-workspace-key sagemaker-user@<space-name>.<namespace>.<domain>
Porta SSH
Use a porta SSH que seu administrador configurou para o Direct SSH. Se o administrador manteve a porta padrão (22), você pode omitir a -p opção. Se eles configuraram uma porta não padrão (por exemplo, 2222), você deve incluir -p <SSH_PORT> ou a conexão falhará com. Connection refused Entre em contato com o administrador se não tiver certeza de qual porta usar.
Exemplo:
ssh -p 2222 -i ~/.ssh/my-workspace-key sagemaker-user@my-space.default.spaces.example.com
Etapa 4: configurar o SSH para facilitar o acesso
Essa etapa opcional simplifica as conexões futuras. Adicione o seguinte ao ~/.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
PortDefina como a porta que seu administrador configurou. Você pode omitir essa linha se o Direct SSH usar a porta padrão (22). Em seguida, conecte-se com: ssh my-space
Etapa 5: Conectar um IDE remoto
Depois que o Direct SSH funcionar a partir do seu terminal (Etapa 3), qualquer IDE Remote-SSH compatível se conecta usando a mesma ~/.ssh/config entrada. Você não precisa de AWS configuração adicional para essa conexão.
Instale a Remote-SSH extensão
| IDE | Extensão |
|---|---|
| VS Code | Extensões, pesquise “Remote - SSH”, escolha Instalar (pela Microsoft) |
| Kiro | Extensões, pesquise “Remote - SSH”, escolha Instalar |
| Cursor | Extensões, pesquise “Remote - SSH”, escolha Instalar |
Conecte-se a partir do IDE
-
Abra a paleta de comandos e escolha "Remote-SSH: Conectar ao host...”
-
Selecione seu espaço de trabalho na lista (usos
~/.ssh/configda Etapa 4). -
O IDE instala seu componente de servidor no espaço de trabalho (uma vez, aproximadamente 30 segundos).
-
Uma janela remota é aberta com recursos completos do editor IntelliSense, incluindo terminal e explorador de arquivos.
Abra seus arquivos de espaço de trabalho no VS Code
No VS Code, após a conexão, escolha Arquivo, Abrir pasta, /home/sagemaker-user para abrir seus arquivos do espaço de trabalho diretamente.
Gerenciamento e revogação de chaves
Você gerencia suas chaves SSH. As chaves SSH são credenciais de longa duração sem expiração automática. Uma chave em authorized_keys concede acesso ao seu espaço de trabalho até que você a remova explicitamente.
Para girar sua chave
Recomendamos que você gire suas chaves periodicamente.
-
Gere um novo par de chaves em sua máquina cliente:
ssh-keygen -t ed25519 -f ~/.ssh/my-workspace-key-new -
Adicione a nova chave pública ao seu espaço de trabalho (Etapa 2). As teclas antigas e novas funcionam simultaneamente.
-
Verifique se a nova chave funciona:
ssh -p <SSH_PORT> -i ~/.ssh/my-workspace-key-new sagemaker-user@<hostname> -
Remova a chave antiga do terminal
authorized_keysdo seu espaço de trabalho:# 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 sua chave privada estiver comprometida
Aja imediatamente. Uma chave comprometida concede acesso total ao espaço de trabalho até que você a remova. authorized_keys
-
Abra seu espaço de trabalho por meio do acesso ao navegador da web (JupyterLab ou editor de código). Para instruções, consulte Acesso pelo navegador da web.
-
Remova a chave comprometida de
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 -
Verifique se a chave comprometida não funciona mais tentando se conectar a ela. Você deve receber
Permission denied (publickey). -
Se você não conseguir acessar o espaço de trabalho por meio do acesso ao navegador da Web, entre em contato com o administrador do cluster para entrar no pod e limpar
authorized_keysdiretamente.
Práticas recomendadas
| Prática | Por que |
|---|---|
| Use as teclas ed25519 | Mais curto, mais rápido e mais seguro do que o RSA |
| Use uma frase secreta na sua chave privada | Protege contra roubo de chaves. Mesmo se roubada, a chave não pode ser usada sem a frase secreta. |
| Uma chave por dispositivo | É mais fácil revogar o acesso de um único dispositivo sem afetar outros |
| Nunca compartilhe chaves privadas | Cada usuário e dispositivo devem ter seu próprio par de chaves |
Revise authorized_keys periodicamente |
Remova as chaves dos dispositivos que você não usa mais |
Revogando o acesso direto ao SSH
Para evitar deixar uma regra de grupo de segurança aberta depois de desativar o Direct SSH, conclua as três etapas em ordem. Não pule a Etapa 2.
Notifique seus usuários antes de revogar o acesso
Notifique seus usuários antes de revogar o acesso. O ExternalDNS remove os registros DNS em aproximadamente 30 segundos após a Etapa 3, o que bloqueia novas conexões.
Etapa 1: Desativar no gráfico do Helm
Remova totalmente a directSSH seção do arquivo de configuração do complemento. O Helm usa como padrão false quando directSSH.enabled a chave está ausente:
jupyter-k8s-aws-hyperpod: clusterWebUI: enabled: true domain: "<DOMAIN_NAME>" ... # directSSH section removed
Como alternativa, defina explicitamente: enabled: false
directSSH: enabled: false
Etapa 2: remover a regra de entrada do grupo de segurança
# 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>
Etapa 3: aplicar ao 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>
A execução desse comando remove os serviços headless de todos os espaços de trabalho. O ExternalDNS então exclui os registros do Route 53 A em aproximadamente 30 segundos. Depois que o ExternalDNS remove os registros, novas conexões SSH não podem mais resolver o nome do host do espaço de trabalho.
O que acontece após a revogação
| Componente | Estado após a revogação |
|---|---|
| Registros de DNS | O ExternalDNS os remove em aproximadamente 30 segundos. Novas conexões não podem resolver o nome do host do espaço de trabalho. |
| Regra de entrada do SG | Fechado após a Etapa 2. Nenhum caminho de rede alcança a porta. |
| Novas conexões SSH | Bloqueado. O nome do host não é mais resolvido e a regra SG fecha a porta. |
| Dados do espaço de trabalho (PVC) | Não afetado. O PVC mantém seus arquivos, authorized_keys e chave de host. |
Solução de problemas
| Sintomas | Causa | Correção |
|---|---|---|
NXDOMAIN |
O DNS não está resolvendo | Verifique se existe uma zona hospedada, associada à VPC, DNS externo em execução |
Connection timed out |
Bloqueio de SG: regra adicionada ao SG errado ou totalmente ausente | Verifique o OverrideVpcConfig grupo de instâncias (etapa administrativa 1). Verifique se a regra de entrada TCP abrange seu CIDR de origem. |
Connection refused |
sshd não está funcionando | Verifique se o espaço está em estado de execução e directSSH está ativado |
Permission denied (publickey) |
A chave não está inserida authorized_keys |
Adicionar chave pública por meio do acesso ao navegador da web ou kubectl (etapa 2 do usuário final) |
Host key changedaviso |
O espaço foi recriado (novo pod, nova chave de host) | Na sua máquina cliente: em ssh-keygen -R <hostname> seguida, reconecte |
Stale DNS records after space deletion |
DNS externo em execução com --policy=upsert-only |
Atualize a implantação do ExternalDNS para --policy=sync e adicione. --txt-owner-id=<cluster-name> Limpe manualmente os registros obsoletos existentes: aws route53 list-resource-record-sets --hosted-zone-id <ZONE_ID> |
| IDE: “Não foi possível estabelecer a conexão” | sshd ainda não está pronto | Aguarde de 60 a 90 segundos após a criação do espaço de trabalho e tente novamente |
| IDE: trava em “Instalando o VS Code Server” | O espaço de trabalho não tem acesso à Internet | Seu espaço de trabalho baixa o binário do servidor VS Code de um host externo na primeira conexão. Entre em contato com o administrador se o espaço de trabalho estiver vazio. |
IDE: Permission denied |
IdentityFile incompatibilidade de caminho | Verifique se o terminal SSH funciona primeiro e depois faça o check-in IdentityFile ~/.ssh/config |
| IDE: A conexão cai após a inatividade | Nenhum keepalive configurado | Adicionar ServerAliveInterval 15 e ServerAliveCountMax 3 para ~/.ssh/config |
(Opcional) Configurando pré-requisitos
Use esta seção somente se o acesso ao navegador da Web ainda não estiver habilitado ou para verificar ou atualizar sua configuração de DNS externo.
Instalando do zero
Se o acesso ao navegador da Web ainda não estiver configurado, você precisará do seguinte antes de ativar o Direct SSH:
-
Zona hospedada do Route 53 — um domínio ou subdomínio que você possui, registrado no Route 53
-
DNS externo — implantado por meio de complementos do EKS, com a função IAM com permissões do Route 53
-
AWS Controlador de balanceador de carga — necessário se você usar o acesso ao navegador da web (entrada ALB). Para obter notas de HyperPod-specific instalação, consulteAWS Controlador de balanceador de carga: requisito de HyperPod vPCid.
-
Conectividade VPC — VPN ou conexão direta de máquinas clientes à VPC
Para ver as dependências adicionais e as etapas de configuração de acesso ao navegador da Web, consulteInstale o SageMaker AI Spaces Add-on.
AWS Controlador de balanceador de carga: requisito de HyperPod vPCid
A documentação padrão AWS de instalação do Load Balancer Controller não menciona o vpcId parâmetro. Em HyperPod clusters, a omissão vpcId faz com que a instalação falhe. Você deve fornecê-lo explicitamente.
Obtenha seu ID de VPC:
aws sagemaker describe-cluster \ --cluster-name <HYPERPOD_CLUSTER_NAME> \ --region <AWS_REGION> \ --query 'VpcConfig.VpcId' \ --output text
Instale com os HyperPod parâmetros necessários:
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>
| Parâmetro | Por que exigido em HyperPod |
|---|---|
vpcId |
HyperPod A VPC não pode ser descoberta automaticamente pelo controlador. A instalação falha sem ele. |
enableServiceMutatorWebhook=false |
O webhook mutante entra em conflito com a configuração HyperPod do serviço |
serviceAccount.create=false |
A conta de serviço deve ser pré-criada com a anotação correta do IRSA ou do Pod Identity antes da instalação |
Crie a conta de serviço (aws-load-balancer-controller) com a anotação de função do IAM apropriada antes de executar esse comando. Para obter mais informações sobre a política do IAM e as etapas de criação da conta de serviço, consulte a configuração do Amazon EKS Load Balancer Controller IRSA no Guia do usuário do Amazon EKS.
Configuração de DNS externo
O ExternalDNS sincroniza os serviços do Kubernetes com os provedores de DNS. Configure o ExternalDNS com as seguintes configurações ao usá-lo com o Amazon Route 53 em um ambiente de produção.
O ExternalDNS requer a política de sincronização
Você deve configurar o ExternalDNS com. --policy=sync
Por padrão, o ExternalDNS usa. --policy=upsert-only Isso cria e atualiza registros DNS, mas nunca os exclui. Quando você exclui um espaço de trabalho, os registros A e TXT no Amazon Route 53 permanecem como entradas obsoletas.
Use --policy=upsert-only somente para testes e altere --policy=sync para produção. Você também deve definir o --txt-owner-id sinalizador, que informa ao ExternalDNS quais registros ele possui e quais registros excluir na limpeza.
Configure sua implantação de DNS externo com os seguintes argumentos:
--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
Nos argumentos anteriores, substitua os seguintes valores:
-
<ROUTE53_HOSTED_ZONE>— seu domínio de zona hospedada privada do Amazon Route 53 (por exemplo,workspaces.internal) -
<CLUSTER_NAME>— o nome do seu cluster EKS (por exemplo,my-hyperpod-cluster)
Para verificar sua política atual de ExternalDNS, execute o seguinte 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'