

 **Ayude a mejorar esta página** 

Para contribuir a esta guía del usuario, elija el enlace **Edit this page on GitHub** que se encuentra en el panel derecho de cada página.

# Configuración del proxy para nodos híbridos
<a name="hybrid-nodes-proxy"></a>

Si utiliza un servidor proxy en el entorno en las instalaciones para el tráfico que sale del centro de datos o del entorno periférico, debe configurar por separado los nodos y el clúster para usar el servidor proxy.

Clúster  
En el clúster, debe configurar `kube-proxy` para usar el servidor proxy. Debe configurar `kube-proxy` después de crear el clúster de Amazon EKS.

Nodos  
En los nodos, debe configurar el sistema operativo, `containerd`, `kubelet` y el agente Amazon SSM para usar el servidor proxy. Puede realizar estos cambios durante el proceso de creación de las imágenes del sistema operativo o antes de ejecutar `nodeadm init` en cada nodo híbrido.

## Configuración a nivel de nodo
<a name="_node_level_configuration"></a>

Debe aplicar las siguientes configuraciones ya sea en las imágenes de sistema operativo o antes de ejecutar `nodeadm init` en cada nodo híbrido.

### Configuración del proxy `containerd`
<a name="_containerd_proxy_configuration"></a>

 `containerd` es el tiempo de ejecución de administración de contenedores predeterminado para Kubernetes. Si utiliza un proxy para acceder a Internet, debe configurar `containerd` de modo que pueda extraer las imágenes de contenedor necesarias para Kubernetes y Amazon EKS.

Cree un archivo en cada nodo híbrido llamado `http-proxy.conf` en el directorio `/etc/systemd/system/containerd.service.d` con el siguiente contenido. Sustituya `proxy-domain` y `port` por los valores correspondientes al entorno.

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

#### Configuración de `containerd` a partir de datos de usuarios
<a name="_containerd_configuration_from_user_data"></a>

Será necesario crear el directorio `containerd.service.d` para este archivo. Tendrá que volver a cargar systemd para recuperar el archivo de configuración sin necesidad de reiniciar. En AL2023, es probable que el servicio ya esté en ejecución cuando se ejecute el script, por lo que también tendrá que reiniciarlo.

```
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
```

### Configuración del proxy `kubelet`
<a name="_kubelet_proxy_configuration"></a>

 `kubelet` es el agente de nodos de Kubernetes que se ejecuta en cada nodo de Kubernetes y es responsable de administrar el nodo y los pods que se ejecutan en este. Si utiliza un proxy en el entorno en las instalaciones, debe configurar el `kubelet` para que pueda comunicarse con los puntos de conexión públicos o privados del clúster de Amazon EKS.

Cree un archivo en cada nodo híbrido llamado `http-proxy.conf` en el directorio `/etc/systemd/system/kubelet.service.d/` con el siguiente contenido. Sustituya `proxy-domain` y `port` por los valores correspondientes al entorno.

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

#### Configuración de `kubelet` a partir de datos de usuarios
<a name="_kubelet_configuration_from_user_data"></a>

Se debe crear el directorio `kubelet.service.d` para este archivo. Tendrá que volver a cargar systemd para recuperar el archivo de configuración sin necesidad de reiniciar. En AL2023, es probable que el servicio ya esté en ejecución cuando se ejecute el script, por lo que también tendrá que reiniciarlo.

```
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
```

### Configuración del proxy `ssm`
<a name="_ssm_proxy_configuration"></a>

 `ssm` es uno de los proveedores de credenciales que se pueden utilizar para inicializar un nodo híbrido. `ssm` es responsable de autenticarse con AWS y generar credenciales temporales que son utilizadas por `kubelet`. Si utiliza un proxy en el entorno en las instalaciones y usa `ssm` como proveedor de credenciales en el nodo, debe configurar `ssm` para que pueda comunicarse con los puntos de conexión del servicio de Amazon SSM.

Cree un archivo en cada nodo híbrido llamado `http-proxy.conf` en la siguiente ruta, según el sistema operativo
+ Ubuntu - `/etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d/http-proxy.conf` 
+ Amazon Linux 2023 y Red Hat Enterprise Linux - `/etc/systemd/system/amazon-ssm-agent.service.d/http-proxy.conf` 

Rellene el archivo con el siguiente contenido. Sustituya `proxy-domain` y `port` por los valores correspondientes al entorno.

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

#### Configuración de `ssm` a partir de datos de usuarios
<a name="_ssm_configuration_from_user_data"></a>

Es necesario crear el directorio para el archivo de servicio systemd de `ssm`. La ruta del directorio depende del sistema operativo utilizado en el nodo.
+ Ubuntu - `/etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d` 
+ Amazon Linux 2023 y Red Hat Enterprise Linux - `/etc/systemd/system/amazon-ssm-agent.service.d` 

Reemplace el nombre del servicio systemd en el comando de reinicio a continuación, en función del sistema operativo utilizado en el nodo.
+ Ubuntu - `snap.amazon-ssm-agent.amazon-ssm-agent` 
+ Amazon Linux 2023 y 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
```

### Configuración del proxy del sistema operativo
<a name="_operating_system_proxy_configuration"></a>

Si utiliza un proxy para acceder a Internet, debe configurar el sistema operativo de modo que pueda extraer las dependencias de los nodos híbridos del administrador de paquetes del sistema operativo.

 **Ubuntu** 

1. Configure `snap` para usar el proxy con los siguientes comandos:

   ```
   sudo snap set system proxy.https=http://proxy-domain:port
   sudo snap set system proxy.http=http://proxy-domain:port
   ```

1. Para habilitar el proxy para `apt`, cree un archivo llamado `apt.conf` en el directorio `/etc/apt/`. Sustituya proxy-domain y puerto por los valores correspondientes al entorno.

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

 **Amazon Linux 2023** 

1. Configure `dnf` para utilizar el proxy. Cree un archivo `/etc/dnf/dnf.conf` con los valores proxy-domain y de puerto correspondientes al entorno.

   ```
   proxy=http://proxy-domain:port
   ```

 **Red Hat Enterprise Linux** 

1. Configure `yum` para utilizar el proxy. Cree un archivo `/etc/yum.conf` con los valores proxy-domain y de puerto correspondientes al entorno.

   ```
   proxy=http://proxy-domain:port
   ```

### Configuración del proxy de IAM Roles Anywhere
<a name="_iam_roles_anywhere_proxy_configuration"></a>

El servicio de proveedor de credenciales de IAM Roles Anywhere se ocupa de actualizar las credenciales cuando se utiliza IAM Roles Anywhere con la marca `enableCredentialsFile` (consulte [Agente de Pod Identity de EKS](hybrid-nodes-add-ons.md#hybrid-nodes-add-ons-pod-id)). Si utiliza un proxy en el entorno en las instalaciones, debe configurar el servicio para que pueda comunicarse con los puntos de conexión de IAM Roles Anywhere.

Cree un archivo llamado `http-proxy.conf` en el directorio `/etc/systemd/system/aws_signing_helper_update.service.d/` con el siguiente contenido. Sustituya `proxy-domain` y `port` por los valores correspondientes al entorno.

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

## Configuración de todo el clúster
<a name="_cluster_wide_configuration"></a>

Las configuraciones de esta sección se deben aplicar después de crear el clúster de Amazon EKS y antes de ejecutar `nodeadm init` en cada nodo híbrido.

### Configuración del proxy kube-proxy
<a name="_kube_proxy_proxy_configuration"></a>

Amazon EKS instala automáticamente `kube-proxy` en cada nodo híbrido como DaemonSet cuando los nodos híbridos se unen al clúster. `kube-proxy` permite el enrutamiento entre servicios respaldados por pods en clústeres de Amazon EKS. Para configurar cada host, `kube-proxy` requiere la resolución DNS para el punto de conexión del clúster de Amazon EKS.

1. Edite el DaemonSet `kube-proxy` con el siguiente comando

   ```
   kubectl -n kube-system edit ds kube-proxy
   ```

   Esto abrirá la definición del DaemonSet `kube-proxy` en el editor configurado.

1. Agregue las variables de entorno para `HTTP_PROXY` y `HTTPS_PROXY`. Tenga en cuenta que la variable de entorno `NODE_NAME` ya debe existir en la configuración. Sustituya `proxy-domain` y `port` por los valores correspondientes al entorno.

   ```
   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
   ```