Ajudar a melhorar esta página
Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.
Demonstração Stars da política de redes do Amazon EKS
A demonstração cria um serviço de front-end, de back-end e de cliente no cluster do Amazon EKS. A demonstração também cria um interface gráfica do usuário de gerenciamento que mostra os caminhos de entrada e saída disponíveis entre cada serviço. Recomendamos que você conclua a demonstração em um cluster no qual você não executa workloads de produção.
Antes de você criar políticas de rede, todos os serviços podem se comunicar bidirecionalmente. Depois de aplicar as políticas de rede, você poderá ver que o cliente só pode se comunicar com o serviço de front-end, e o back-end só aceita tráfego do front-end.
-
Aplique os serviços de front-end, de back-end, de cliente e de interface do usuário de gerenciamento:
kubectl apply -f https://archive.eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/namespace.yaml kubectl apply -f https://archive.eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/management-ui.yaml kubectl apply -f https://archive.eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/backend.yaml kubectl apply -f https://archive.eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/frontend.yaml kubectl apply -f https://archive.eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/client.yaml
-
Veja todos os pods no cluster.
kubectl get pods -A
Veja um exemplo de saída abaixo.
Na saída, você deve ver pods nos namespaces mostrados na saída a seguir. Os
NOMES
dos pods e o número de pods na colunaREADY
são diferentes dos que aparecem na saída a seguir. Não continue até ver pods com nomes semelhantes e que todos eles tenhamRunning
na colunaSTATUS
.NAMESPACE NAME READY STATUS RESTARTS AGE [...] client client-xlffc 1/1 Running 0 5m19s [...] management-ui management-ui-qrb2g 1/1 Running 0 5m24s stars backend-sz87q 1/1 Running 0 5m23s stars frontend-cscnf 1/1 Running 0 5m21s [...]
-
Para se conectar à interface de usuário de gerenciamento, conecte-se ao
EXTERNAL-IP
do serviço em execução no cluster:kubectl get service/management-ui -n management-ui
-
Abra o navegador no local da etapa anterior. Você deve ver a interface do usuário de gerenciamento a seguir. O nó C é o serviço de cliente, o nó F é o serviço de front-end e o nó B é o serviço de back-end. Cada nó possui acesso total à comunicação com todos os outros nós, conforme indicado pelas linhas coloridas em negrito.
-
Aplique a seguintes política de rede a ambos os namespaces
stars
eclient
para isolar os serviços um do outro:kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: default-deny spec: podSelector: matchLabels: {}
Você pode usar os comandos a seguir para aplicar a política a ambos os namespaces:
kubectl apply -n stars -f https://archive.eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/apply_network_policies.files/default-deny.yaml kubectl apply -n client -f https://archive.eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/apply_network_policies.files/default-deny.yaml
-
Atualize o navegador. Você verá que a interface do usuário de gerenciamento não pode mais acessar nenhum dos nós, portanto, eles não são mostrados na interface do usuário.
-
Aplique as políticas de rede a seguir para permitir que a interface de usuário de gerenciamento acesse os serviços. Aplique essa política para permitir que a interface do usuário:
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: namespace: stars name: allow-ui spec: podSelector: matchLabels: {} ingress: - from: - namespaceSelector: matchLabels: role: management-ui
Aplique essa política para permitir que o cliente:
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: namespace: client name: allow-ui spec: podSelector: matchLabels: {} ingress: - from: - namespaceSelector: matchLabels: role: management-ui
Você pode usar os seguintes comandos para aplicar ambas as políticas:
kubectl apply -f https://archive.eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/apply_network_policies.files/allow-ui.yaml kubectl apply -f https://archive.eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/apply_network_policies.files/allow-ui-client.yaml
-
Atualize o navegador. Você verá que a interface do usuário de gerenciamento pode acessar os nós novamente, mas os nós não podem se comunicar uns com os outros.
-
Aplique a seguinte política de rede para permitir o tráfego do serviço de front-end para o serviço de back-end:
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: namespace: stars name: backend-policy spec: podSelector: matchLabels: role: backend ingress: - from: - podSelector: matchLabels: role: frontend ports: - protocol: TCP port: 6379
-
Atualize o navegador. Você vê que o front-end pode se comunicar com o back-end.
-
Aplique a política de rede a seguir para permitir tráfego do cliente para o serviço de front-end:
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: namespace: stars name: frontend-policy spec: podSelector: matchLabels: role: frontend ingress: - from: - namespaceSelector: matchLabels: role: client ports: - protocol: TCP port: 80
-
Atualize o navegador. Você vê que o cliente pode se comunicar com o serviço de front-end. O serviço de front-end ainda pode se comunicar com o serviço de back-end.
-
(Opcional) Ao concluir a demonstração, você poderá excluir os recursos dela.
kubectl delete -f https://archive.eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/client.yaml kubectl delete -f https://archive.eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/frontend.yaml kubectl delete -f https://archive.eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/backend.yaml kubectl delete -f https://archive.eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/management-ui.yaml kubectl delete -f https://archive.eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/namespace.yaml
Mesmo após a exclusão dos recursos, ainda pode haver endpoints de política de rede nos nós que podem interferir de maneiras inesperados nas conexões de rede do cluster. A única maneira garantida de remover essas regras é recarregar os nós ou encerrar todos os nós e reciclá-los. Para encerrar todos os nós, defina a contagem desejada do grupo de Auto Scaling como 0 e faça backup para o número desejado ou simplesmente encerre os nós.