Esta página fornece instruções para configurar o tráfego intra-cluster para um cluster padrão através de políticas de rede do Kubernetes no Google Distributed Cloud (GDC) air-gapped.
Um NetworkPolicy do Kubernetes NetworkPolicy é uma especificação de como os grupos de pods podem comunicar entre si e com outros pontos finais de rede. Os recursos NetworkPolicy usam etiquetas para selecionar pods e definir regras que especificam o tráfego permitido para os pods selecionados. Estas políticas têm âmbito local e aplicam-se apenas ao tráfego no cluster onde são definidas, a menos que seja criada uma política de permissão total, que também permite a comunicação com pontos finais de outros clusters padrão e partilhados.
Antes de começar
Para configurar políticas de rede do Kubernetes, tem de ter as autorizações necessárias no cluster para criar, modificar e eliminar recursos NetworkPolicy nos espaços de nomes relevantes.
Crie uma política de pod para pod intra-cluster
Estas políticas controlam o tráfego entre pods no mesmo cluster padrão.
Crie uma política de entrada de pod para pod intra-cluster
Para permitir o tráfego de entrada de pod para pod intra-cluster, crie e aplique o seguinte 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 EOFSubstitua o seguinte:
CLUSTER_API_SERVER: o caminho kubeconfig do servidor da API do cluster. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Iniciar sessão para ver detalhes.SUBJECT_NAMESPACE: o espaço de nomes do assunto no cluster padrão.PEER_NAMESPACE: o espaço de nomes de pares no cluster padrão.SUBJECT_LABEL_KEY: a chave da etiqueta usada para selecionar as cargas de trabalho do assunto. Por exemplo,app,tierourole.SUBJECT_LABEL_VALUE: o valor associado aoSUBJECT_LABEL_KEY. Por exemplo, seSUBJECT_LABEL_KEYforappeSUBJECT_LABEL_VALUEforbackend, as cargas de trabalho com a etiquetaapp: backendestão a receber o tráfego.PEER_LABEL_KEY: a chave da etiqueta usada para selecionar as cargas de trabalho pares.PEER_LABEL_VALUE: o valor associado aoPEER_LABEL_KEY.PORT: a porta na carga de trabalho em questão onde o tráfego é permitido.
Crie uma política de saída de pod para pod intra-cluster
Para permitir o tráfego de saída de pod para pod intra-cluster, crie e aplique o seguinte 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 EOFSubstitua o seguinte:
CLUSTER_API_SERVER: o caminho kubeconfig do servidor da API do cluster. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Iniciar sessão para ver detalhes.SUBJECT_NAMESPACE: o espaço de nomes do assunto no cluster padrão.PEER_NAMESPACE: o espaço de nomes de pares no cluster padrão.SUBJECT_LABEL_KEY: a chave da etiqueta usada para selecionar as cargas de trabalho do assunto. Por exemplo,app,tierourole.SUBJECT_LABEL_VALUE: o valor associado aoSUBJECT_LABEL_KEY. Por exemplo, seSUBJECT_LABEL_KEYforappeSUBJECT_LABEL_VALUEforbackend, as cargas de trabalho com a etiquetaapp: backendestão a enviar o tráfego.PEER_LABEL_KEY: a chave da etiqueta usada para selecionar as cargas de trabalho pares.PEER_LABEL_VALUE: o valor associado aoPEER_LABEL_KEY.PORT: a porta na carga de trabalho de pares onde o tráfego é permitido.
Crie uma política de pod a pod intra-cluster com um balanceador de carga
Estas políticas controlam o tráfego entre pods no mesmo cluster quando o tráfego é encaminhado através de um equilibrador de carga externo.
Crie uma política de entrada de pod para pod intra-cluster com um equilibrador de carga
Para permitir o tráfego de entrada de pod para pod intra-cluster através de um equilibrador de carga, crie e aplique o seguinte 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 EOFSubstitua o seguinte:
CLUSTER_API_SERVER: o caminho kubeconfig do servidor da API do cluster. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Iniciar sessão para ver detalhes.SUBJECT_NAMESPACE: o espaço de nomes do assunto no cluster padrão.SUBJECT_LABEL_KEY: a chave da etiqueta usada para selecionar as cargas de trabalho do assunto. Por exemplo,app,tierourole.SUBJECT_LABEL_VALUE: o valor associado aoSUBJECT_LABEL_KEY. Por exemplo, seSUBJECT_LABEL_KEYforappeSUBJECT_LABEL_VALUEforbackend, as cargas de trabalho com a etiquetaapp: backendestão a receber o tráfego.EGRESS_NAT_IP: o IP NAT de saída do pod de origem.PORT: a porta na carga de trabalho em questão onde o tráfego é permitido.
Crie uma política de saída de pod para pod intra-cluster com um equilibrador de carga
Para permitir o tráfego de saída de pod para pod intra-cluster através de um equilibrador de carga, crie e aplique o seguinte 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 EOFSubstitua o seguinte:
CLUSTER_API_SERVER: o caminho kubeconfig do servidor da API do cluster. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Iniciar sessão para ver detalhes.SUBJECT_NAMESPACE: o espaço de nomes do assunto no cluster padrão.SUBJECT_LABEL_KEY: a chave da etiqueta usada para selecionar as cargas de trabalho do assunto. Por exemplo,app,tierourole.SUBJECT_LABEL_VALUE: o valor associado aoSUBJECT_LABEL_KEY. Por exemplo, seSUBJECT_LABEL_KEYforappeSUBJECT_LABEL_VALUEforbackend, as cargas de trabalho com a etiquetaapp: backendestão a enviar o tráfego.ELB_EXTERNAL_IP: o endereço IP externo do equilibrador de carga.PORT: a porta no ponto final externo para a qual o tráfego é permitido.
Crie uma política externa à organização
Estas políticas controlam o tráfego entre um pod num cluster padrão e um ponto final externo (qualquer endereço IP fora do cluster).
Crie uma política de entrada para tráfego externo à organização
Para permitir o tráfego de entrada a partir de um ponto final externo à organização, crie e aplique o seguinte 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 EOFSubstitua o seguinte:
CLUSTER_API_SERVER: o caminho kubeconfig do servidor da API do cluster. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Iniciar sessão para ver detalhes.SUBJECT_NAMESPACE: o espaço de nomes do assunto no cluster padrão.SUBJECT_LABEL_KEY: a chave da etiqueta usada para selecionar as cargas de trabalho do assunto. Por exemplo,app,tierourole.SUBJECT_LABEL_VALUE: o valor associado aoSUBJECT_LABEL_KEY. Por exemplo, seSUBJECT_LABEL_KEYforappeSUBJECT_LABEL_VALUEforbackend, as cargas de trabalho com a etiquetaapp: backendestão a receber o tráfego.EXTERNAL_CIDR: o CIDR externo, por exemplo:20.0.0.0/16.PORT: a porta na carga de trabalho em questão onde o tráfego é permitido.
Crie uma política de saída para tráfego externo à organização
Para permitir o tráfego de saída para um ponto final externo à organização, crie e aplique o seguinte 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 EOFSubstitua o seguinte:
CLUSTER_API_SERVER: o caminho kubeconfig do servidor da API do cluster. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Iniciar sessão para ver detalhes.SUBJECT_NAMESPACE: o espaço de nomes do assunto no cluster padrão.SUBJECT_LABEL_KEY: a chave da etiqueta usada para selecionar as cargas de trabalho do assunto. Por exemplo,app,tierourole.SUBJECT_LABEL_VALUE: o valor associado aoSUBJECT_LABEL_KEY. Por exemplo, seSUBJECT_LABEL_KEYforappeSUBJECT_LABEL_VALUEforbackend, as cargas de trabalho com a etiquetaapp: backendestão a enviar o tráfego.EXTERNAL_CIDR: o CIDR externo, por exemplo:20.0.0.0/16.PORT: a porta no ponto final externo para a qual o tráfego é permitido.
Crie uma política de permissão total
As seguintes políticas podem ser usadas para permitir explicitamente todo o tráfego. Isto permite a comunicação com pontos finais de outros clusters padrão e partilhados.
Crie uma política de entrada que permita tudo
Para permitir todo o tráfego de entrada, crie e aplique o seguinte 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: - {} EOFSubstitua o seguinte:
CLUSTER_API_SERVER: o caminho kubeconfig do servidor da API do cluster. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Iniciar sessão para ver detalhes.SUBJECT_NAMESPACE: o espaço de nomes do assunto no cluster padrão.
Crie uma política de saída que permita tudo
Para permitir todo o tráfego de saída, crie e aplique o seguinte 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: - {} EOFSubstitua o seguinte:
CLUSTER_API_SERVER: o caminho kubeconfig do servidor da API do cluster. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Iniciar sessão para ver detalhes.SUBJECT_NAMESPACE: o espaço de nomes do assunto no cluster padrão.