En esta página se proporcionan instrucciones para configurar el tráfico dentro del clúster de un clúster estándar mediante políticas de red de Kubernetes en Google Distributed Cloud (GDC) con air gap.
Una NetworkPolicy de Kubernetes es una especificación de cómo los grupos de pods se pueden comunicar entre sí y con otros endpoints de la red. Los recursos NetworkPolicy usan etiquetas para seleccionar pods y definen reglas que especifican qué tráfico se permite en los pods seleccionados. Estas políticas tienen un ámbito local y solo se aplican al tráfico del clúster en el que se definen, a menos que se cree una política que permita todo, que también permite la comunicación con los endpoints de otros clústeres estándar y compartidos.
Antes de empezar
Para configurar las políticas de red de Kubernetes, debes tener los permisos necesarios en el clúster para crear, modificar y eliminar recursos NetworkPolicy en los espacios de nombres correspondientes.
Crear una política de pod a pod dentro del clúster
Estas políticas controlan el tráfico entre los pods de un mismo clúster estándar.
Crear una política de entrada de pod a pod dentro del clúster
Para permitir el tráfico de entrada de pod a pod dentro del clúster, crea y aplica el siguiente recurso:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-intra-cluster-ingress-traffic namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: Kubernetes.io/metadata.name: PEER_NAMESPACE podSelector: matchLabels: PEER_LABEL_KEY: PEER_LABEL_VALUE ports: - protocol: TCP port: PORT EOFHaz los cambios siguientes:
CLUSTER_API_SERVER: la ruta de kubeconfig del servidor de la API del clúster. Si aún no has generado un archivo kubeconfig para el servidor de la API, consulta Iniciar sesión para obtener más información.SUBJECT_NAMESPACE: el espacio de nombres del asunto en el clúster estándar.PEER_NAMESPACE: el espacio de nombres del mismo nivel en el clúster estándar.SUBJECT_LABEL_KEY: la clave de la etiqueta usada para seleccionar las cargas de trabajo del asunto. Por ejemplo,app,tierorole.SUBJECT_LABEL_VALUE: el valor asociado aSUBJECT_LABEL_KEY. Por ejemplo, siSUBJECT_LABEL_KEYesappySUBJECT_LABEL_VALUEesbackend, las cargas de trabajo con la etiquetaapp: backendreciben el tráfico.PEER_LABEL_KEY: la clave de la etiqueta usada para seleccionar las cargas de trabajo del mismo nivel.PEER_LABEL_VALUE: el valor asociado aPEER_LABEL_KEY.PORT: el puerto de la carga de trabajo en cuestión en el que se permite el tráfico.
Crear una política de salida de pod a pod dentro del clúster
Para permitir el tráfico de salida de pod a pod dentro del clúster, crea y aplica el siguiente recurso:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-egress-intra-cluster-traffic namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Egress egress: - to: - namespaceSelector: matchLabels: Kubernetes.io/metadata.name: PEER_NAMESPACE podSelector: matchLabels: PEER_LABEL_KEY: PEER_LABEL_VALUE ports: - protocol: TCP port: PORT EOFHaz los cambios siguientes:
CLUSTER_API_SERVER: la ruta de kubeconfig del servidor de la API del clúster. Si aún no has generado un archivo kubeconfig para el servidor de la API, consulta Iniciar sesión para obtener más información.SUBJECT_NAMESPACE: el espacio de nombres del asunto en el clúster estándar.PEER_NAMESPACE: el espacio de nombres del mismo nivel en el clúster estándar.SUBJECT_LABEL_KEY: la clave de la etiqueta usada para seleccionar las cargas de trabajo del asunto. Por ejemplo,app,tierorole.SUBJECT_LABEL_VALUE: el valor asociado aSUBJECT_LABEL_KEY. Por ejemplo, siSUBJECT_LABEL_KEYesappySUBJECT_LABEL_VALUEesbackend, las cargas de trabajo con la etiquetaapp: backendestán enviando el tráfico.PEER_LABEL_KEY: la clave de la etiqueta usada para seleccionar las cargas de trabajo del mismo nivel.PEER_LABEL_VALUE: el valor asociado aPEER_LABEL_KEY.PORT: el puerto de la carga de trabajo del mismo nivel en el que se permite el tráfico.
Crear una política de pod a pod dentro del clúster mediante un balanceador de carga
Estas políticas controlan el tráfico entre pods del mismo clúster cuando el tráfico se enruta a través de un balanceador de carga externo.
Crear una política de entrada de pod a pod dentro del clúster mediante un balanceador de carga
Para permitir el tráfico de entrada de pod a pod dentro del clúster mediante un balanceador de carga, crea y aplica el siguiente recurso:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-intra-cluster-ingress-traffic-via-elb namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Ingress ingress: - from: - ipBlock: cidr: EGRESS_NAT_IP/32 ports: - protocol: TCP port: PORT EOFHaz los cambios siguientes:
CLUSTER_API_SERVER: la ruta de kubeconfig del servidor de la API del clúster. Si aún no has generado un archivo kubeconfig para el servidor de la API, consulta Iniciar sesión para obtener más información.SUBJECT_NAMESPACE: el espacio de nombres del asunto en el clúster estándar.SUBJECT_LABEL_KEY: la clave de la etiqueta usada para seleccionar las cargas de trabajo del asunto. Por ejemplo,app,tierorole.SUBJECT_LABEL_VALUE: el valor asociado aSUBJECT_LABEL_KEY. Por ejemplo, siSUBJECT_LABEL_KEYesappySUBJECT_LABEL_VALUEesbackend, las cargas de trabajo con la etiquetaapp: backendreciben el tráfico.EGRESS_NAT_IP: la IP de NAT de salida del pod de origen.PORT: el puerto de la carga de trabajo en cuestión en el que se permite el tráfico.
Crear una política de salida de pod a pod dentro del clúster mediante un balanceador de carga
Para permitir el tráfico de salida de pod a pod dentro del clúster mediante un balanceador de carga, crea y aplica el siguiente recurso:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-intra-cluster-egress-traffic-via-elb namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Egress egress: - to: - ipBlock: cidr: ELB_EXTERNAL_IP/32 ports: - protocol: TCP port: PORT EOFHaz los cambios siguientes:
CLUSTER_API_SERVER: la ruta de kubeconfig del servidor de la API del clúster. Si aún no has generado un archivo kubeconfig para el servidor de la API, consulta Iniciar sesión para obtener más información.SUBJECT_NAMESPACE: el espacio de nombres del asunto en el clúster estándar.SUBJECT_LABEL_KEY: la clave de la etiqueta usada para seleccionar las cargas de trabajo del asunto. Por ejemplo,app,tierorole.SUBJECT_LABEL_VALUE: el valor asociado aSUBJECT_LABEL_KEY. Por ejemplo, siSUBJECT_LABEL_KEYesappySUBJECT_LABEL_VALUEesbackend, las cargas de trabajo con la etiquetaapp: backendestán enviando el tráfico.ELB_EXTERNAL_IP: la dirección IP externa del balanceador de carga.PORT: el puerto del endpoint externo al que se permite el tráfico.
Crear una política externa a la organización
Estas políticas controlan el tráfico entre un pod de un clúster estándar y un endpoint externo (cualquier dirección IP fuera del clúster).
Crear una política de entrada para el tráfico externo a la organización
Para permitir el tráfico entrante desde un endpoint externo a la organización, crea y aplica el siguiente recurso:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-ingress-from-organization-external-to-standard-cluster-pod namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Ingress ingress: - from: - ipBlock: cidr: EXTERNAL_CIDR ports: - protocol: TCP port: PORT EOFHaz los cambios siguientes:
CLUSTER_API_SERVER: la ruta de kubeconfig del servidor de la API del clúster. Si aún no has generado un archivo kubeconfig para el servidor de la API, consulta Iniciar sesión para obtener más información.SUBJECT_NAMESPACE: el espacio de nombres del asunto en el clúster estándar.SUBJECT_LABEL_KEY: la clave de la etiqueta usada para seleccionar las cargas de trabajo del asunto. Por ejemplo,app,tierorole.SUBJECT_LABEL_VALUE: el valor asociado aSUBJECT_LABEL_KEY. Por ejemplo, siSUBJECT_LABEL_KEYesappySUBJECT_LABEL_VALUEesbackend, las cargas de trabajo con la etiquetaapp: backendreciben el tráfico.EXTERNAL_CIDR: el CIDR externo. Por ejemplo,20.0.0.0/16.PORT: el puerto de la carga de trabajo en cuestión en el que se permite el tráfico.
Crear una política de salida para el tráfico externo a la organización
Para permitir el tráfico de salida a un endpoint externo a una organización, crea y aplica el siguiente recurso:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-egress-from-standard-cluster-pod-to-organization-external namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Egress egress: - to: - ipBlock: cidr: EXTERNAL_CIDR ports: - protocol: TCP port: PORT EOFHaz los cambios siguientes:
CLUSTER_API_SERVER: la ruta de kubeconfig del servidor de la API del clúster. Si aún no has generado un archivo kubeconfig para el servidor de la API, consulta Iniciar sesión para obtener más información.SUBJECT_NAMESPACE: el espacio de nombres del asunto en el clúster estándar.SUBJECT_LABEL_KEY: la clave de la etiqueta usada para seleccionar las cargas de trabajo del asunto. Por ejemplo,app,tierorole.SUBJECT_LABEL_VALUE: el valor asociado aSUBJECT_LABEL_KEY. Por ejemplo, siSUBJECT_LABEL_KEYesappySUBJECT_LABEL_VALUEesbackend, las cargas de trabajo con la etiquetaapp: backendestán enviando el tráfico.EXTERNAL_CIDR: el CIDR externo. Por ejemplo,20.0.0.0/16.PORT: el puerto del endpoint externo al que se permite el tráfico.
Crear una política que permita todo
Las siguientes políticas se pueden usar para permitir explícitamente todo el tráfico. Esto permite la comunicación con los endpoints de otros clústeres estándar y compartidos.
Crear una política de permitir todo el tráfico de entrada
Para permitir todo el tráfico entrante, crea y aplica el siguiente recurso:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-all-ingress-traffic namespace: SUBJECT_NAMESPACE spec: podSelector: {} policyTypes: - Ingress ingress: - {} EOFHaz los cambios siguientes:
CLUSTER_API_SERVER: la ruta de kubeconfig del servidor de la API del clúster. Si aún no has generado un archivo kubeconfig para el servidor de la API, consulta Iniciar sesión para obtener más información.SUBJECT_NAMESPACE: el espacio de nombres del asunto en el clúster estándar.
Crear una política de salida que permita todo
Para permitir todo el tráfico saliente, crea y aplica el siguiente recurso:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-all-egress-traffic namespace: SUBJECT_NAMESPACE spec: podSelector: {} policyTypes: - Egress egress: - {} EOFHaz los cambios siguientes:
CLUSTER_API_SERVER: la ruta de kubeconfig del servidor de la API del clúster. Si aún no has generado un archivo kubeconfig para el servidor de la API, consulta Iniciar sesión para obtener más información.SUBJECT_NAMESPACE: el espacio de nombres del asunto en el clúster estándar.