Migración de una lista de puntos finales de servicio privados a restricciones basadas en el contexto (CBR)
Ya no se admiten las listas permitidas de puntos finales de servicios privados y, en su lugar, deben utilizarse las restricciones basadas en el contexto (CBR). Si tus clústeres tienen actualmente habilitadas las listas de permitidos del punto de conexión del servicio privado maestro, no puedes modificar la lista de permitidos; solo puedes desactivarla. Complete los siguientes pasos para migrar al uso de restricciones basadas en el contexto (CBR).
Las siguientes instrucciones cubren la protección del punto final de servicio privado de su clúster mediante el uso de reglas CBR. Si su clúster tiene un punto final de servicio público y privado (PSE), también puede proteger el punto final de servicio público de su clúster con CBR.
Algunas de las ventajas del CBR son:
- Dirígete a varios clusters de una cuenta a la vez y no tengas que configurar la lista para cada uno.
- Permitir el acceso desde VPCs específicas, no sólo IPs o subredes.
- Establezca límites más altos de hasta 200 IP o subredes privadas y 500 públicas, en lugar de un total máximo de 75 con PSE.
- Cree y gestione reglas CBR desde la consola, la API o la CLI.
- Restringir el acceso del público a través del CBR. La lista de permisos del punto final de servicio privado sólo restringe el tráfico del punto final de servicio privado.
Antes de empezar
Si ya está utilizando reglas CBR para proteger sus clusters, puede que estas instrucciones no se ajusten a su caso de uso. En su lugar, utilice la documentación de CBR para comprender cómo modificar sus reglas CBR existentes para incluir las subredes de la lista de permisos del punto final de servicio privado. Para más información sobre CBR, consulte " Protección de los recursos del clúster con restricciones basadas en el contexto " y el " ejemplos de restricciones basadas en el contexto" .
Antes de empezar a crear zonas y reglas CBR, compruebe que la lista de permitidos de su punto final de servicio privado funciona como se espera. Después de configurar CBR, puede volver a ejecutar estas pruebas para confirmar el mismo comportamiento.
-
Inicia sesión en tu cuenta. If applicable, target the appropriate resource group. Establezca el contexto para el clúster.. Diríjase al punto final de servicio privado desde un sistema cliente que utilice una IP privada que se encuentre en una de las subredes personalizadas de su lista de permitidos.
-
Ejecute el siguiente comando para verificar que las IPs permitidas pueden conectarse al PSE.
kubectl get nodes -
Inicia sesión en tu cuenta. If applicable, target the appropriate resource group. Establezca el contexto para el clúster.. Accede al punto final del servicio privado desde una dirección IP autorizada para comprobar que puedes conectarte.
-
Inicia sesión en tu cuenta. If applicable, target the appropriate resource group. Establezca el contexto para el clúster.. Apunta al endpoint de servicio privado desde un sistema cliente que utiliza una IP privada que no está permitida en tu lista de permitidos.
-
Vuelva a ejecutar el comando anterior para comprobar que las IP que no están en la lista de permitidas no pueden conectarse al PSE.
Ahora que has comprobado que tu lista de permisos funciona como es debido, puedes continuar con la migración.
Paso 1: Revise los detalles de su lista de subsidios
-
Obtenga los detalles de su lista de PSE.
Si una lista de permisos PSE no está activada en su clúster, el comando falla y el error indica que esta función está desactivada. En este caso, su clúster no requiere ninguna acción adicional.
ibmcloud ks cluster master private-service-endpoint allowlist get -c CLUSTERSalida de ejemplo
Subnet Type Status 10.138.53.64/26 System Active 10.30.50.0/24 Custom Active 10.249.94.103/32 Custom Active OK laptop -
Revise el resultado y anote las subredes personalizadas. Estas subredes se utilizan más adelante.
- Las entradas del Sistema se migran automáticamente y pueden ignorarse. Estas entradas aseguran que los cluster workers pueden conectarse al cluster apiserver.
- Las entradas personalizadas son las subredes que ha añadido y que pueden conectarse al punto final de servicio privado de este clúster. Las subredes "
10.30.50.0/24" y "10.249.94.103/32" del ejemplo se añaden a una zona de red CBR en el paso siguiente.
Paso 2: Crear una zona de red
Cree una zona de red CBR que contenga las mismas subredes que su lista de puntos finales de servicio privado personalizado existente.
Creación de una zona de red en la consola
-
Pulse Crear.
-
Indique los datos de su zona de red.
- Nombre: Dale un nombre a tu zona de red.
- Direcciones IP permitidas: Introduzca las subredes que encontró en el paso anterior.
-
Haga clic en Siguiente para revisar los detalles de su zona de red.
-
Haga clic en Crear para terminar de crear su zona de red.
Creación de una zona de red mediante la CLI
-
Cree una zona de red desde la CLI ejecutando un comando similar a uno de los siguientes ejemplos.
La sintaxis del comando '
cbr zone-create'.ibmcloud cbr zone-create [--name NAME] [--description DESCRIPTION] [--addresses ADDRESSES] [--excluded EXCLUDED] [--vpc VPC] [--service-ref SERVICE-REF] [--file FILE]El parámetro "
--addresses" debe ser una lista separada por comas de las subredes que encontró en el paso anterior en su lista de permisos del punto final de servicio privado.Ejemplo de comando para crear una zona de red para un único cluster.
ibmcloud cbr zone-create --name private-subnets-for-cluster-XXXXXX --description "Private subnets that are allowed to access the apisever of cluster XXXXXX" --addresses 10.30.50.0/24,10.249.94.103/32Zona CBR crear ejemplo 1 Parámetro Descripción --nameDale un nombre a tu zona de red. --descriptionProporcione una descripción opcional de la zona. --addressesIntroduzca las subredes que encontró en su lista de permisos del punto final del servicio maestro en el paso anterior. Comando de ejemplo para crear una zona de red para todos los clusters de su cuenta.
ibmcloud cbr zone-create --name private-subnets-for-all-clusters --description "Private subnets that are allowed to access my clusters" --addresses 10.30.50.0/24,10.249.94.103/32Zona CBR crear ejemplo 1 Parámetro Descripción --nameDale un nombre a tu zona de red. --descriptionProporcione una descripción opcional de la zona. --addressesIntroduzca las subredes que encontró en su lista de permisos del punto final del servicio maestro en el paso anterior. -
Cree una regla CBR para proteger su cluster con CBR. Esta regla hace referencia a tu cluster, o a todos los clusters de esta cuenta, y también hace referencia a la zona de red que has creado.
Paso 3: Creación de una regla CBR
Cree una regla CBR que haga referencia a la zona de red que ha creado. Puede crear reglas CBR en la consola, CLI o API.
Creación de una regla CBR en la consola
-
Navegue hasta sus zonas de red en la consola CBR.
-
Haga clic en Lista de acciones en su y haga clic en Editar.
-
Añada o elimine subredes, VPC o servicios de su zona de red para controlar qué recursos pueden acceder a uno o varios de sus clústeres.
Creación de una regla CBR mediante la CLI
Las siguientes instrucciones describen cómo utilizar la CLI para crear una zona de red.
-
Enumere sus zonas de red y anote el ID de la zona de red que creó en el paso anterior.
ibmcloud cbr zones -
Crear una regla CBR. Puede crear una regla para proteger un solo clúster o todos los clústeres de su cuenta.
La sintaxis del comando '
cbr rule-create'.ibmcloud cbr rule-create [--description DESCRIPTION] [--context-attributes CONTEXT-ATTRIBUTES] [--resource-attributes RESOURCE-ATTRIBUTES] [--region REGION] [--resource RESOURCE] [--resource-group-id RESOURCE-GROUP-ID] [--resource-type RESOURCE-TYPE] [--service-instance SERVICE-INSTANCE-GUID] [--service-name SERVICE-NAME] [--zone-id ZONE-ID] [--tags TAGS] [--enforcement-mode ENFORCEMENT-MODE] [--file FILE]Si su cluster tiene un endpoint de servicio público, debe incluir el parámetro '
--context-attributes endpointType=public' para que se permita el tráfico al endpoint de servicio público. Si no incluye esta opción, se bloqueará todo el tráfico público.Comando de ejemplo que utiliza el '
CLUSTER-ID' del cluster y el 'NETWORK-ZONE-ID' de la zona de red del paso anterior para crear una regla CBR para proteger sólo este cluster.ibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster --description "Protect private endpoint for cluster CLUSTER" --service-name containers-kubernetes --service-instance CLUSTER-ID --context-attributes endpointType=private,networkZoneId=NETWORK-ZONE-ID --context-attributes endpointType=publicRegla CBR crear ejemplo 1 Parámetro Descripción --api-typesEl valor ' crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster' indica las APIs maestras del plano de control del cluster. Para obtener más información sobre los tipos de API para IBM Cloud Kubernetes Service, consulte Protección de API específicas.--descriptionDescripción opcional de la regla. --service-name containers-kubernetesEl valor ' containers-kubernetes' indica IBM Cloud Kubernetes Service como servicio de destino de la regla.--service-instance CLUSTER-IDEspecifique el " CLUSTER-IDdel clúster que desea proteger.--context-attributes endpointType=private,networkZoneId=NETWORK-ZONE-IDEsta opción permite que sólo los recursos de la zona " NETWORK-ZONE-ID" accedan al endpoint privado del cluster.--context-attributes endpointType=publicEsta opción permite que todos los recursos accedan al punto final público del clúster. networkZoneIdEspecifique el " NETWORK-ZONE-IDde la zona que creó anteriormente.Comando de ejemplo que utiliza el '
NETWORK-ZONE-ID' de la zona de red del paso anterior para crear una regla CBR que proteja todos los clusters de esta cuenta.ibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster --description "Protect private endpoint for all clusters" --service-name containers-kubernetes --context-attributes endpointType=private,networkZoneId=NETWORK-ZONE-ID --context-attributes endpointType=publicRegla CBR crear ejemplo 2 Parámetro Descripción --api-typesEl valor ' crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster' indica las APIs maestras del plano de control del cluster. Para obtener más información sobre los tipos de API para IBM Cloud Kubernetes Service, consulte Protección de API específicas.--descriptionDescripción opcional de la regla. --service-nameEl valor ' containers-kubernetes' indica IBM Cloud Kubernetes Service como servicio de destino de la regla.--context-attributes endpointType=private,networkZoneId=NETWORK-ZONE-IDEsta opción permite que sólo los recursos de la zona " NETWORK-ZONE-ID" accedan al endpoint privado del cluster.--context-attributes endpointType=publicEsta opción permite que todos los recursos accedan al punto final público del clúster. networkZoneIdEspecifique el " NETWORK-ZONE-IDde la zona que creó anteriormente.
Cuando cree una regla, si ve un mensaje de error que dice ' A rule with the same resource attributes already exists, entonces ya tiene una regla CBR protegiendo su cluster. En este caso, debe actualizar su regla existente para
añadir su zona de red. Para más información, consulte la documentación sobre actualización de reglas CBR.
Paso 4: Deshabilitar el punto final de servicio privado allowlist
Ahora que el punto final de servicio privado de su clúster está protegido por una regla CBR, puede desactivar la lista de permisos del punto final de servicio privado.
Ejecute el mandato siguiente.
ibmcloud ks cluster master private-service-endpoint allowlist disable -c CLUSTER
Paso 5: Probar la regla CBR
Ahora que la regla CBR protege el punto final de servicio privado de su clúster, compruebe que funciona como se espera. Ejecute las mismas pruebas que realizó anteriormente.
-
{target_[both}].
-
Ejecute el siguiente comando contra este clúster utilizando un '
kubeconfig' dirigido al endpoint de servicio privado.kubectl get nodes -
Pruebe este comando tanto desde un sistema cliente que utilice una IP privada que esté en una de las subredes de la zona de red que ha creado (para comprobar que funciona), como desde un sistema cliente que utilice una IP privada que no esté en ninguna de las subredes de la zona de red (para comprobar que falla y se agota el tiempo de espera).
Si observa que el comportamiento no es el esperado, compruebe si existen otras reglas CBR para el servicio ' containers-kubernetes ' que puedan aplicarse a su clúster, ya que podrían estar afectando también al acceso al clúster.
Paso 6: Añadir o eliminar subredes que pueden acceder al cluster
Ahora que está utilizando una regla CBR para proteger su clúster, puede modificar la zona de red para especificar qué subredes pueden acceder a su clúster.
Modificar su zona de red desde la consola
-
Navegue hasta su zona de red en la consola CBR.
-
Seleccione su zona, luego haga clic en la Lista de acciones y haga clic en Editar.
-
Añada o elimine subredes, VPC o servicios de su zona de red para controlar qué recursos pueden acceder a los clústeres elegidos.
Modifique su zona de red desde la CLI
Para añadir subredes que puedan acceder a su clúster, puede utilizar el comando ' cbr zone-update '.
ibmcloud cbr zone-update <NETWORK-ZONE-ID> --name <NETWORK-ZONE-NAME> --addresses <EXISTING-SUBNETS>,<NEW-SUBNETS>
Observando el ejemplo de la zona de red que se creó anteriormente para todos los clusters de la cuenta con las dos subredes 10.30.50.0/24 y 10.249.94.103/32. Un ejemplo de comando para añadir una tercera subred, '
10.10.10.0/24, sería el siguiente.
ibmcloud cbr zone-update <NETWORK-ZONE-ID> --name private-subnets-for-all-clusters --description "Private subnets that are allowed to access my clusters" --addresses 10.30.50.0/24,10.249.94.103/32,10.10.10.0/24
Debe incluir todas las entradas existentes en esa zona de red, así como las que desee añadir. El valor que especifique para ' --addresses ' sustituye a la dirección o lista de subredes actual en esa zona de red.
Para eliminar subredes de la zona, puede utilizar el mismo comando y omitir las subredes que desee eliminar del valor " --addresses ". En este caso, sólo incluya las subredes a las que aún desea permitir el acceso a
sus clústeres.
Eliminación de las restricciones basadas en el contexto del extremo de servicio privado
Cómo eliminar una regla desde la consola
-
Navegue hasta sus reglas en la consola CBR.
-
Seleccione su regla, luego haga clic en la Lista de acciones y haga clic en Eliminar.
-
Añada o elimine subredes, VPC o servicios de su zona de red para controlar qué recursos pueden acceder a los clústeres elegidos.
Eliminación de una regla desde la CLI
Puede eliminar reglas CBR con el comando ' ibmcloud cbr rule-delete <RULE-ID> o ' ibmcloud cbr rule-update <RULE-ID> '.
Para eliminar por completo la protección CBR de un clúster o de todos los clústeres, debe eliminar o desactivar todas las reglas CBR que afecten a su clúster.
Si utiliza el comando " ibmcloud cbr rule-update " para desactivar o activar una regla existente, debe especificar todos los atributos de la regla actual además del parámetro " --enforcement-mode disabled "; de lo contrario, los atributos que omita se eliminarán de la regla.
Próximos pasos
Para obtener más información sobre CBR, consulta los siguientes enlaces.
- [Protección de recursos de clúster con restricciones basadas en el contexto/docs/containers]?topic=containers-cbr&interface=ui).
- Ejemplos de restricciones basadas en el contexto.
- Referencia CLI CBR.