Network Policies
NetworkPolicy es un objeto de Kubernetes que se utiliza para restringir el acceso a pods. En CCE, al establecer las políticas de red, puede definir las reglas de entrada especificando las direcciones a las que acceder los pods o las reglas de salida especificando las direcciones a las que pueden acceder los pods. Esto equivale a configurar un firewall en la capa de aplicación para garantizar aún más la seguridad de la red.
Las políticas de red dependen del complemento de red del clúster al que se aplican las políticas.
De forma predeterminada, si un espacio de nombres no tiene ninguna política, los pods del espacio de nombres aceptan tráfico de cualquier origen y envían tráfico a cualquier destino.
Las reglas de política de red se clasifican en los siguientes tipos:
- namespaceSelector: selecciona los espacios de nombres particulares para los que se deben permitir todos los pods como fuentes de entrada o destinos de salida.
- podSelector: selecciona los pods particulares en el mismo espacio de nombres que la política de red que debe permitirse como fuentes de entrada o destinos de salida.
- ipBlock: selecciona los bloques IP particulares para permitirlos como fuentes de entrada o destinos de salida.
Notas y restricciones
- Solo los clústeres que utilizan el modelo de red de túnel admiten políticas de red.
- Las salidas no son compatibles con las políticas de red.
- El aislamiento de red no es compatible con las direcciones IPv6.
Uso de reglas de ingreso
- Uso de podSelector para especificar el ámbito de acceso
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: test-network-policy namespace: default spec: podSelector: # The rule takes effect for pods with the role=db label. matchLabels: role: db ingress: # This is an ingress rule. - from: - podSelector: # Only traffic from the pods with the "role=frontend" label is allowed. matchLabels: role: frontend ports: # Only TCP can be used to access port 6379. - protocol: TCP port: 6379
La siguiente figura muestra cómo funciona podSelector.
Figura 1 podSelector
- Uso de namespaceSelector para especificar el ámbito de acceso
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: test-network-policy spec: podSelector: # The rule takes effect for pods with the role=db label. matchLabels: role: db ingress: # This is an ingress rule. - from: - namespaceSelector: # Only traffic from the pods in the namespace with the "project=myproject" label is allowed. matchLabels: project: myproject ports: # Only TCP can be used to access port 6379. - protocol: TCP port: 6379
La siguiente figura muestra cómo funciona namespaceSelector.
Figura 2 namespaceSelector
Creación de una política de red en la consola
- Inicie sesión en la consola de CCE y acceda a la consola del clúster.
- Elija Networking en el panel de navegación, haga clic en la ficha Network Policies y haga clic en Create Network Policy en la esquina superior derecha.
- Policy Name: Especifique un nombre de política de red.
- Namespace: seleccione un espacio de nombres en el que se aplique la política de red.
- Selector: Ingrese una etiqueta, seleccione el pod a asociar y haga clic en Add. También puede hacer clic en Reference Workload Label para hacer referencia a la etiqueta de una carga de trabajo existente.
- Inbound Rule: Haga clic en para agregar una regla entrante. Para obtener más información sobre la configuración de los parámetros, consulte Tabla 1.
Tabla 1 Adición de una regla de entrada Parámetro
Descripción
Protocol & Port
Seleccione el tipo de protocolo y el puerto. Actualmente, se soportan TCP y UDP.
Source Namespace
Seleccione un espacio de nombres a cuyos objetos se puede acceder. Si no se especifica este parámetro, el objeto pertenece al mismo espacio de nombres que la política actual.
Source Pod Label
Permitir el acceso a los pods con esta etiqueta. Si no se especifica este parámetro, se puede acceder a todos los pods del espacio de nombres.
- Haga clic en OK.