Adición de rutas estáticas a nodos trabajadores
Cree rutas estáticas en los nodos trabajadores habilitando el complemento de rutas estáticas para clústeres de Red Hat® OpenShift® on IBM Cloud®.
Acerca de las rutas estáticas
Cuando configure la red del clúster para que se comunique con otras redes a través de la red privada, es posible que tenga que añadir rutas estáticas personalizadas en los nodos trabajadores. Las rutas estáticas permiten a los nodos trabajadores redireccionar correctamente paquetes de respuesta procedentes del clúster a una dirección IP del centro de datos local a través de una VPN o un dispositivo de pasarela.
Por ejemplo, puede utilizar una VPN para conectar el clúster a un centro de datos local en la red privada. Además, la conexión de VPN privada conserva la dirección IP de origen en las solicitudes entre el clúster y el centro de datos.
Cuando un servicio local envía una solicitud a una app del clúster, el nodo trabajador en el que está el pod de la app descarta la respuesta debido al filtrado de vía de acceso inversa (RPF). RPF es una característica de kernel de Linux que descarta cualquier respuesta a direcciones IP que no están en la lista de las tablas de direccionamiento del nodo trabajador. La respuesta se descarta porque el nodo trabajador no puede direccionar la dirección IP local que se ha conservado en la solicitud.
En este caso, puede crear una ruta estática para que cuando una dirección IP de origen de una solicitud sea de una de sus subredes locales, la respuesta se envíe a la dirección IP de la pasarela VPN en su lugar. Al añadir esta ruta estática a las tablas de direccionamiento de los nodos trabajadores, se asegura de lo siguiente:
- Los paquetes de respuesta no se descartan debido a RPF, porque existe una regla de direccionamiento que apunta a la dirección IP local.
- Los paquetes de respuesta se direccionan correctamente primero a través de la dirección IP de la pasarela de VPN y luego se redireccionan a la dirección IP local.
Se puede utilizar el complemento de clúster de ruta estática para aplicar y gestionar solo rutas estáticas. El usuario es el responsable de la configuración y la gestión de su VPN, su dispositivo de pasarela o su conexión de IBM Cloud® Direct Link.
Habilitación del complemento de ruta estática
Para empezar a trabajar con rutas estáticas en Red Hat OpenShift on IBM Cloud, habilite el complemento de ruta estática.
Antes de empezar
- Asegúrese de que tiene el rol de acceso a la plataforma de IAM de Administrador para el clúster en IBM Cloud Kubernetes Service.
- Acceda al clúster de Red Hat OpenShift.
Habilitación del complemento de ruta estática desde la consola
Para usar la consola de IBM Cloud, siga estos pasos.
- En el panel de control del clúster, haga clic en el nombre del clúster en el que desea instalar el complemento de ruta estática.
- En la tarjeta Ruta estática, pulse Instalar.
- Vuelva a pulsar Instalar.
- En la tarjeta Ruta estática, verifique que se muestra el complemento.
Habilitación del complemento de ruta estática con la CLI
Para utilizar la CLI, siga estos pasos.
-
Habilite el complemento
static-route
.ibmcloud oc cluster addon enable static-route --cluster <cluster_name_or_ID>
-
Verifique que el complemento de ruta estática tenga el estado
Addon Ready
.ibmcloud oc cluster addon ls --cluster <cluster_name_or_ID>
Salida de ejemplo
Name Version Health State Health Status static-route 1.0.0 normal Addon Ready
Creación de rutas estáticas
Después de habilitar el complemento de ruta estática, puede crear y aplicar recursos para rutas personalizadas.
-
Cree un archivo YAML para un recurso de ruta estática.
apiVersion: static-route.ibm.com/v1 kind: StaticRoute metadata: name: <route_name> spec: subnet: "<subnet_CIDR>" gateway: "<gateway_IP>" selectors: - key: "<label_key>" values: - "<label_value>" operator: In
Ejemplo
apiVersion: static-route.ibm.com/v1 kind: StaticRoute metadata: name: mystaticroute spec: subnet: "192.168.0.0/24" gateway: "10.0.0.1" selectors: - key: "kubernetes.io/arch" values: - "amd64" operator: In
subnet
- Especifique el CIDR de la subred externa desde la que se envían las solicitudes a los nodos de trabajador, como por ejemplo una subred en una red local. La subred externa no puede estar en los rangos reservados siguientes. El rango de
interconexión de dispositivos,
198.18.0.0/15
, está permitido.-
10.0.0.0/8
-
172.16.0.0/16
-
172.18.0.0/16
-
172.19.0.0/16
-
172.20.0.0/16
192.168.255.0/24
-
gateway
- Si la dirección IP de pasarela existe en la misma subred que los nodos de trabajador, especifique la dirección IP de pasarela. Si la dirección IP de pasarela existe en otra subred de la red privada de IBM Cloud, no incluya este campo.
En este caso, los nodos trabajadores envían respuestas al direccionador de fondo de la red privada y el direccionador envía la respuesta a la pasarela de la otra subred. Cuando se crea la ruta estática, la dirección IP del direccionador
de fondo del rango
10.0.0.0/8
se asigna automáticamente como pasarela predeterminada. selectors
- Para crear la ruta estática solo en determinados nodos trabajadores en función de las etiquetas de los nodos trabajadores, incluya la
key
y losvalues
para la etiqueta.
-
Cree las rutas estáticas aplicando el archivo YAML al clúster.
oc apply -f <route_name>.yaml
-
Verifique que se ha creado la ruta estática. En la salida, compruebe el
node_status
de cada nodo trabajador donde se haya creado las ruta estática.oc get staticroute <route_name> -o yaml
Salida de ejemplo
apiVersion: static-route.ibm.com/v1 kind: StaticRoute metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"static-route.ibm.com/v1","kind":"StaticRoute","metadata":{"annotations":{},"name":"mystaticroute"},"spec":{"selectors":[{"key":"kubernetes.io/arch","operator":"In","values":["amd64"]}],"subnet":"10.94.227.46/24"}} creationTimestamp: "2020-05-20T16:43:12Z" finalizers: - finalizer.static-route.ibm.com generation: 1 name: mystaticroute resourceVersion: "3753886" selfLink: /apis/static-route.ibm.com/v1/staticroutes/mystaticroute uid: f284359f-9d13-4e27-9d3a-8fb38cbc7a5c spec: selectors: - key: kubernetes.io/arch operator: In values: - amd64 subnet: 10.94.227.46/24 status: nodeStatus: - error: "" hostname: 10.94.227.19 state: gateway: 10.94.227.1 selectors: - key: kubernetes.io/arch operator: In values: - amd64 subnet: 10.94.227.46/24 - error: "" hostname: 10.94.227.22 state: gateway: 10.94.227.1 selectors: - key: kubernetes.io/arch operator: In values: - amd64 subnet: 10.94.227.46/24