Configurare il proxy per i nodi ibridi - Amazon EKS

Contribuisci a migliorare questa pagina

Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.

Configurare il proxy per i nodi ibridi

Se utilizzi un server proxy nell’ambiente on-premises per il traffico in uscita dal data center o dall’ambiente periferico, devi configurare separatamente i nodi e il cluster per usare il server proxy.

Cluster

Sul cluster, devi configurare kube-proxy per utilizzare il server proxy. Devi configurare kube-proxy dopo aver creato il cluster Amazon EKS.

Nodi

Sui tuoi nodi, devi configurare il sistema operativo, containerd, kubelet e l’agente Amazon SSM per utilizzare il tuo server proxy. Puoi apportare queste modifiche durante il processo di creazione delle immagini del sistema operativo o prima di eseguire nodeadm init su ciascun nodo ibrido.

Configurazione a livello di nodo

Devi applicare le seguenti configurazioni nelle immagini del sistema operativo o prima di eseguire nodeadm init su ciascun nodo ibrido.

Configurazione del proxy containerd

containerd è il runtime di gestione dei container predefinito per Kubernetes. Se utilizzi un proxy per l’accesso a Internet, devi configurare containerd in modo che possa estrarre le immagini dei container richieste da Kubernetes e Amazon EKS.

Crea un file su ogni nodo ibrido chiamato http-proxy.conf nella directory /etc/systemd/system/containerd.service.d con i seguenti contenuti. Sostituisci proxy-domain e port con i valori per il tuo ambiente.

[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"

Configurazione di containerd a partire dai dati dell’utente

La directory containerd.service.d dovrà essere creata per questo file. Dovrai ricaricare systemd per recuperare il file di configurazione senza dover riavviare il sistema. In AL2023, il servizio sarà probabilmente già in esecuzione al momento dell’esecuzione dello script, quindi sarà necessario riavviarlo.

mkdir -p /etc/systemd/system/containerd.service.d echo '[Service]' > /etc/systemd/system/containerd.service.d/http-proxy.conf echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf systemctl daemon-reload systemctl restart containerd

Configurazione del proxy kubelet

kubelet è l’agente del nodo Kubernetes che viene eseguito su ogni nodo Kubernetes ed è responsabile della gestione del nodo e dei pod in esecuzione su di esso. Se utilizzi un proxy nel tuo ambiente on-premises, devi configurare kubelet in modo che possa comunicare con gli endpoint pubblici o privati del cluster Amazon EKS.

Crea un file su ogni nodo ibrido chiamato http-proxy.conf nella directory /etc/systemd/system/kubelet.service.d/ col seguente contenuto. Sostituisci proxy-domain e port con i valori per il tuo ambiente.

[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"

Configurazione di kubelet a partire dai dati dell’utente

La directory kubelet.service.d deve essere creata per questo file. Dovrai ricaricare systemd per recuperare il file di configurazione senza dover riavviare il sistema. In AL2023, il servizio sarà probabilmente già in esecuzione al momento dell’esecuzione dello script, quindi sarà necessario riavviarlo.

mkdir -p /etc/systemd/system/kubelet.service.d echo '[Service]' > /etc/systemd/system/kubelet.service.d/http-proxy.conf echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf systemctl daemon-reload systemctl restart kubelet

Configurazione del proxy ssm

ssm è uno dei provider di credenziali che possono essere utilizzati per inizializzare un nodo ibrido. ssm è responsabile dell’autenticazione con AWS e della generazione di credenziali temporanee utilizzate da kubelet. Se utilizzi un proxy nel tuo ambiente on-premises e usi ssm come fornitore di credenziali sul nodo, devi configurare ssm in modo che possa comunicare con gli endpoint del servizio Amazon SSM.

Crea un file su ogni nodo ibrido chiamato http-proxy.conf nel percorso seguente, a seconda del sistema operativo

  • Ubuntu: /etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d/http-proxy.conf

  • Amazon Linux 2023 e Red Hat Enterprise Linux: /etc/systemd/system/amazon-ssm-agent.service.d/http-proxy.conf

Popola il file con i seguenti contenuti. Sostituisci proxy-domain e port con i valori per il tuo ambiente.

[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"

Configurazione di ssm a partire dai dati dell’utente

La directory ssm del file di servizio systemd deve essere creata per questo file. Il percorso della directory dipende dal sistema operativo utilizzato nel nodo.

  • Ubuntu: /etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d

  • Amazon Linux 2023 e Red Hat Enterprise Linux: /etc/systemd/system/amazon-ssm-agent.service.d

Sostituisci il nome del servizio systemd nel comando riavvio riportato di seguito a seconda del sistema operativo utilizzato nel nodo

  • Ubuntu: snap.amazon-ssm-agent.amazon-ssm-agent

  • Amazon Linux 2023 e Red Hat Enterprise Linux: amazon-ssm-agent

mkdir -p systemd-service-file-directory echo '[Service]' > [.replaceable]#systemd-service-file-directory/http-proxy.conf echo 'Environment="HTTP_PROXY=http://[.replaceable]#proxy-domain:port"' >> systemd-service-file-directory/http-proxy.conf echo 'Environment="HTTPS_PROXY=http://[.replaceable]#proxy-domain:port"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf echo 'Environment="NO_PROXY=localhost"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf systemctl daemon-reload systemctl restart [.replaceable]#systemd-service-name

Configurazione del proxy del sistema operativo

Se utilizzi un proxy per l’accesso a Internet, devi configurare il sistema operativo in modo da poter estrarre le dipendenze dei nodi ibridi dal gestore di pacchetti dei sistemi operativi.

Ubuntu

  1. Configura snap per utilizzare il proxy con i seguenti comandi:

    sudo snap set system proxy.https=http://proxy-domain:port sudo snap set system proxy.http=http://proxy-domain:port
  2. Per abilitare il proxy per apt, crea un file chiamato apt.conf nella directory /etc/apt/. Sostituisci proxy-domain e port con i valori per il tuo ambiente.

    Acquire::http::Proxy "http://proxy-domain:port"; Acquire::https::Proxy "http://proxy-domain:port";

Amazon Linux 2023

  1. Configura dnf per l’utilizzo del proxy. Crea un file /etc/dnf/dnf.conf con i valori proxy-domain e port per il tuo ambiente.

    proxy=http://proxy-domain:port

Red Hat Enterprise Linux

  1. Configura yum per l’utilizzo del proxy. Crea un file /etc/yum.conf con i valori proxy-domain e port per il tuo ambiente.

    proxy=http://proxy-domain:port

Configurazione del proxy di IAM Roles Anywhere

Il servizio del fornitore di credenziali IAM Roles Anywhere è responsabile dell’aggiornamento delle credenziali quando si utilizza IAM Roles Anywhere con il flag enableCredentialsFile (consulta Agente EKS Pod Identity). Se utilizzi un proxy nel tuo ambiente on-premises, devi configurare il servizio in modo che possa comunicare con gli endpoint di IAM Roles Anywhere.

Crea un file denominato http-proxy.conf nella directory /etc/systemd/system/aws_signing_helper_update.service.d/ con i seguenti contenuti. Sostituisci proxy-domain e port con i valori per il tuo ambiente.

[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"

Configurazione a livello di cluster

Le configurazioni in questa sezione devono essere applicate dopo aver creato il cluster Amazon EKS e prima di eseguire nodeadm init su ogni nodo ibrido.

Configurazione di un proxy kube-proxy

Amazon EKS installa automaticamente kube-proxy su ogni nodo ibrido come DaemonSet quando i nodi entrano a far parte del cluster. kube-proxy abilita il routing tra servizi supportati da pod su cluster Amazon EKS. Per configurare ogni host, kube-proxy necessita della risoluzione DNS per l’endpoint del cluster Amazon EKS.

  1. Modifica il DaemonSet kube-proxy mediante il comando seguente

    kubectl -n kube-system edit ds kube-proxy

    Verrà aperta la definizione del DaemonSet kube-proxy sull’editor configurato.

  2. Aggiungi le variabili di ambiente per HTTP_PROXY e HTTPS_PROXY. Nota che la variabile di ambiente NODE_NAME dovrebbe già esistere nella configurazione. Sostituisci proxy-domain e port con valori per il tuo ambiente.

    containers: - command: - kube-proxy - --v=2 - --config=/var/lib/kube-proxy-config/config - --hostname-override=$(NODE_NAME) env: - name: HTTP_PROXY value: http://proxy-domain:port - name: HTTPS_PROXY value: http://proxy-domain:port - name: NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName