Configurar políticas de rede do Kubernetes

Este tópico explica como usar as políticas de rede do Kubernetes para proteger os pods do Cassandra e do Redis num cluster híbrido do Apigee .

Vista geral

Quando quiser controlar o fluxo de tráfego ao nível do endereço IP ou da porta (camada OSI 3 ou 4), pode usar políticas de rede do Kubernetes para aplicações no seu cluster. As políticas de rede são uma construção centrada na aplicação que pode usar para especificar como um pod tem autorização para comunicar com outros pods no seu cluster.

No Apigee hybrid, pode usar políticas de rede do Kubernetes para isolar pods do Cassandra, de modo que apenas os pods destinados a comunicar com o Cassandra tenham autorização para o fazer, como os pods do Runtime, do Synchronizer e do Mart. Outros pods no cluster, como os pods Ingres e Watcher, que não precisam de comunicar com o Cassandra, são impedidos de o fazer.

Se não tiver restrições sobre os pods que podem interagir no seu cluster, não precisa de usar políticas de rede do Kubernetes.

Pré-requisitos

Procedimento

Transfira e extraia o pacote de lançamento apigeectl.

Linux

curl -LO \
  https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.11.2/apigeectl_linux_64.tar.gz

Mac OS

curl -LO \
  https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.11.2/apigeectl_mac_64.tar.gz

Windows

curl -LO ^
   https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.11.2/apigeectl_windows_64.zip

Os ficheiros de configuração das políticas de rede do Kubernetes para o Cassandra e o Redis encontram-se na seguinte estrutura de diretórios no diretório apigeectl:

  └── apigeectl
      └── examples
          └── network-policies
              └── securing-cassandra-redis-pods
                  ├── README.md
                  ├── base
                  │   └── cluster-scoped-communication
                  │       ├── cassandra
                  │       │   ├── kustomization.yaml
                  │       │   ├── networkpolicy-cassandra-allow-controller.yaml
                  │       │   ├── networkpolicy-cassandra-allow-intranode.yaml
                  │       │   ├── networkpolicy-cassandra-allow-mart.yaml
                  │       │   ├── networkpolicy-cassandra-allow-runtime.yaml
                  │       │   ├── networkpolicy-cassandra-alow-sync.yaml
                  │       │   ├── networkpolicy-cassandra-create-user.yaml
                  │       │   ├── networkpolicy-cassandra-monitoring.yaml
                  │       │   └── networkpolicy-cassandra-remove-dc.yaml
                  │       └── redis
                  │           ├── kustomization.yaml
                  │           ├── networkpolicy-redis-envoy.yaml
                  │           └── networkpolicy-redis.yaml
                  └── overlays
                      └── ORG_NAME
                          └── kustomization.yaml

Em que ORG_NAME é o nome da sua organização do Apigee.

  1. Etiquete o espaço de nomes com o seguinte comando:
    kubectl label namespace APIGEE_NAMESPACE app=apigee
  2. Aplique as políticas de rede com o seguinte comando:
    kubectl apply -k ${APIGEECTL_HOME}/examples/network-policies/securing-cassandra-redis-pods/overlays/ORG_NAME
  3. Valide se as políticas de rede foram aplicadas com o seguinte comando:
    kubectl get netpol -n APIGEE_NAMESPACE

    As seguintes políticas de rede devem ser criadas no espaço de nomes APIGEE_NAMESPACE:

          NAME                        POD-SELECTOR              AGE
          cassandra-from-mart         app=apigee-cassandra      4d5h
          cassandra-from-runtime      app=apigee-cassandra      4d5h
          cassandra-from-sync         app=apigee-cassandra      4d5h
          cassandra-to-cassandra      app=apigee-cassandra      4d5h
          controller-to-cassandra     app=apigee-cassandra      4d5h
          redis-from-redisenvoy       app=apigee-redis          3d18h
          redisenvoy-from-runtime     app=apigee-redis-envoy    3d18h