En esta página, se proporcionan instrucciones para configurar el tráfico dentro del clúster para un clúster estándar con políticas de red de Kubernetes en Google Distributed Cloud (GDC) aislado.
Una NetworkPolicy de Kubernetes es una especificación de cómo los grupos de Pods pueden comunicarse entre sí y con otros extremos de la red. Los recursos NetworkPolicy usan etiquetas para seleccionar pods y definir reglas que especifican qué tráfico se permite en los pods seleccionados. Estas políticas tienen un alcance local y se aplican solo al tráfico dentro del clúster en el que se definen, a menos que se cree una política de permitir todo, que también permite la comunicación con extremos de otros clústeres estándares y compartidos.
Antes de comenzar
Para configurar políticas de red de Kubernetes, debes tener los permisos necesarios dentro del clúster para crear, modificar y borrar recursos NetworkPolicy en los espacios de nombres pertinentes.
Crea una política de pod a pod dentro del clúster
Estas políticas controlan el tráfico entre los pods dentro del mismo clúster estándar.
Crea 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 EOFReemplaza lo siguiente:
CLUSTER_API_SERVER: Es la ruta de acceso a kubeconfig del servidor de la API del clúster. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Accede para obtener más detalles.SUBJECT_NAMESPACE: Es el espacio de nombres del sujeto en el clúster estándar.PEER_NAMESPACE: Es el espacio de nombres del par en el clúster estándar.SUBJECT_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo del asunto. Por ejemplo,app,tierorole.SUBJECT_LABEL_VALUE: Es el valor asociado con elSUBJECT_LABEL_KEY. Por ejemplo, siSUBJECT_LABEL_KEYesappySUBJECT_LABEL_VALUEesbackend, las cargas de trabajo con la etiquetaapp: backendreciben el tráfico.PEER_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de los pares.PEER_LABEL_VALUE: Es el valor asociado con elPEER_LABEL_KEY.PORT: Es el puerto de la carga de trabajo del asunto en el que se permite el tráfico.
Crea 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 EOFReemplaza lo siguiente:
CLUSTER_API_SERVER: Es la ruta de acceso a kubeconfig del servidor de la API del clúster. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Accede para obtener más detalles.SUBJECT_NAMESPACE: Es el espacio de nombres del sujeto en el clúster estándar.PEER_NAMESPACE: Es el espacio de nombres del par en el clúster estándar.SUBJECT_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo del asunto. Por ejemplo,app,tierorole.SUBJECT_LABEL_VALUE: Es el valor asociado con elSUBJECT_LABEL_KEY. Por ejemplo, siSUBJECT_LABEL_KEYesappySUBJECT_LABEL_VALUEesbackend, las cargas de trabajo con la etiquetaapp: backendenvían el tráfico.PEER_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de los pares.PEER_LABEL_VALUE: Es el valor asociado con elPEER_LABEL_KEY.PORT: Es el puerto de la carga de trabajo del par en el que se permite el tráfico.
Crea una política de pod a pod dentro del clúster con un balanceador de cargas
Estas políticas controlan el tráfico entre los pods dentro del mismo clúster cuando el tráfico se enruta a través de un balanceador de cargas externo.
Crea una política de entrada de pod a pod dentro del clúster con un balanceador de cargas
Para permitir el tráfico de entrada de pod a pod dentro del clúster con un balanceador de cargas, 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 EOFReemplaza lo siguiente:
CLUSTER_API_SERVER: Es la ruta de acceso a kubeconfig del servidor de la API del clúster. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Accede para obtener más detalles.SUBJECT_NAMESPACE: Es el espacio de nombres del sujeto en el clúster estándar.SUBJECT_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo del asunto. Por ejemplo,app,tierorole.SUBJECT_LABEL_VALUE: Es el valor asociado con elSUBJECT_LABEL_KEY. Por ejemplo, siSUBJECT_LABEL_KEYesappySUBJECT_LABEL_VALUEesbackend, las cargas de trabajo con la etiquetaapp: backendreciben el tráfico.EGRESS_NAT_IP: Es la IP NAT de salida del Pod de origen.PORT: Es el puerto de la carga de trabajo del asunto en el que se permite el tráfico.
Crea una política de salida de pod a pod dentro del clúster con un balanceador de cargas
Para permitir el tráfico de salida de pod a pod dentro del clúster con un balanceador de cargas, 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 EOFReemplaza lo siguiente:
CLUSTER_API_SERVER: Es la ruta de acceso a kubeconfig del servidor de la API del clúster. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Accede para obtener más detalles.SUBJECT_NAMESPACE: Es el espacio de nombres del sujeto en el clúster estándar.SUBJECT_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo del asunto. Por ejemplo,app,tierorole.SUBJECT_LABEL_VALUE: Es el valor asociado con elSUBJECT_LABEL_KEY. Por ejemplo, siSUBJECT_LABEL_KEYesappySUBJECT_LABEL_VALUEesbackend, las cargas de trabajo con la etiquetaapp: backendenvían el tráfico.ELB_EXTERNAL_IP: Es la dirección IP externa del balanceador de cargas.PORT: Es el puerto del extremo externo al que se permite el tráfico.
Crea una política externa a la organización
Estas políticas controlan el tráfico entre un Pod en un clúster estándar y un extremo externo (cualquier dirección IP fuera del clúster).
Crea una política de entrada para el tráfico externo a la organización
Para permitir el tráfico de entrada desde un extremo 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 EOFReemplaza lo siguiente:
CLUSTER_API_SERVER: Es la ruta de acceso a kubeconfig del servidor de la API del clúster. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Accede para obtener más detalles.SUBJECT_NAMESPACE: Es el espacio de nombres del sujeto en el clúster estándar.SUBJECT_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo del asunto. Por ejemplo,app,tierorole.SUBJECT_LABEL_VALUE: Es el valor asociado con elSUBJECT_LABEL_KEY. Por ejemplo, siSUBJECT_LABEL_KEYesappySUBJECT_LABEL_VALUEesbackend, las cargas de trabajo con la etiquetaapp: backendreciben el tráfico.EXTERNAL_CIDR: Es el CIDR externo, por ejemplo,20.0.0.0/16.PORT: Es el puerto de la carga de trabajo del asunto en el que se permite el tráfico.
Crea una política de salida para el tráfico externo a la organización
Para permitir el tráfico de salida a un extremo 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-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 EOFReemplaza lo siguiente:
CLUSTER_API_SERVER: Es la ruta de acceso a kubeconfig del servidor de la API del clúster. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Accede para obtener más detalles.SUBJECT_NAMESPACE: Es el espacio de nombres del sujeto en el clúster estándar.SUBJECT_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo del asunto. Por ejemplo,app,tierorole.SUBJECT_LABEL_VALUE: Es el valor asociado con elSUBJECT_LABEL_KEY. Por ejemplo, siSUBJECT_LABEL_KEYesappySUBJECT_LABEL_VALUEesbackend, las cargas de trabajo con la etiquetaapp: backendenvían el tráfico.EXTERNAL_CIDR: Es el CIDR externo, por ejemplo,20.0.0.0/16.PORT: Es el puerto del extremo externo al que se permite el tráfico.
Crea una política de "permitir todo"
Se pueden usar las siguientes políticas para permitir explícitamente todo el tráfico. Esto permite la comunicación con extremos de otros clústeres estándar y compartidos.
Crea una política de entrada que permita todo
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: - {} EOFReemplaza lo siguiente:
CLUSTER_API_SERVER: Es la ruta de acceso a kubeconfig del servidor de la API del clúster. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Accede para obtener más detalles.SUBJECT_NAMESPACE: Es el espacio de nombres del sujeto en el clúster estándar.
Crea 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: - {} EOFReemplaza lo siguiente:
CLUSTER_API_SERVER: Es la ruta de acceso a kubeconfig del servidor de la API del clúster. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Accede para obtener más detalles.SUBJECT_NAMESPACE: Es el espacio de nombres del sujeto en el clúster estándar.