Incluindo rotas estáticas em nós do trabalhador

Crie rotas estáticas em seus nós do trabalhador, ativando o complemento de rotas estáticas para clusters IBM Cloud® Kubernetes Service.

Sobre as rotas estáticas

Ao configurar sua rede de clusters para se comunicar com outras redes sobre a rede privada, pode ser necessário incluir rotas estáticas customizadas em seus nós do trabalhador. As rotas estáticas permitem que nós do trabalhador roteiem novamente pacotes de resposta com sucesso do seu cluster para um endereço IP em data center no local por meio de uma VPN ou de um dispositivo de gateway.

Por exemplo, você pode usar uma VPN para conectar seu cluster a um centro de dados no local sobre a rede privada. Além disso, sua conexão VPN privada preserva o endereço IP de origem em solicitações entre o cluster e o data center.

Quando um serviço no local envia uma solicitação para um app em seu cluster, o nó do trabalhador no qual seu pod do app está elimina a resposta devido à RPF filtragem de caminho reverso). A RPF é um recurso do kernel do Linux que elimina quaisquer respostas para endereços IP que não estão listados nas tabelas de roteamento do nó do trabalhador. A resposta é eliminada porque o endereço IP no local que foi preservado na solicitação não é roteável pelo nó do trabalhador.

Nesse caso, você pode criar uma rota estática para que, quando o endereço IP de origem de uma solicitação for de uma de suas sub-redes locais, a resposta seja enviada para o endereço IP do gateway de VPN. Ao incluir essa rota estática nas tabelas de roteamento dos nós do trabalhador, você assegura o seguinte:

  • Os pacotes de resposta não são eliminados devido à RPF, porque uma regra de roteamento que aponta para o endereço IP no local existe.
  • Os pacotes de resposta são roteados com sucesso primeiro por meio do endereço IP de gateway de VPN e, em seguida, redirecionados para o seu endereço IP no local.

O complemento do cluster de rota estática pode ser usado para aplicar e gerenciar rotas estáticas apenas. Você é responsável por configurar e gerenciar sua própria VPN, seu dispositivo de gateway ou a conexão do IBM Cloud® Direct Link.

Ativando o complemento de rota estática

Para começar a usar as rotas estáticas no IBM Cloud Kubernetes Service, ative o complemento de rota estática.

Antes de Iniciar

Ativando o complemento de rota estática no console

Para usar o console do IBM Cloud, siga estas etapas.

  1. Em seu painel de cluster, clique no nome do cluster em que você deseja instalar o complemento de rota estática.
  2. Na placa Rota estática, clique em Instalar.
  3. Clique em Instalar novamente.
  4. Na placa Rota estática, verifique se o complemento está listado.

Ativando o complemento de rota estática com a CLI

Para usar a CLI, siga estas etapas.

  1. Atualize o plug-in “ container-service ” para a versão mais recente.

    ibmcloud update && ibmcloud plugin update container-service
    
  2. Ative o complemento static-route.

    ibmcloud ks cluster addon enable static-route --cluster CLUSTER_NAME_OR_ID
    
  3. Verifique se o add-on de rota estática tem um status de Addon Ready.

    ibmcloud ks cluster addon ls --cluster CLUSTER_NAME_OR_ID
    

    Saída de exemplo

    Name              Version     Health State   Health Status
    static-route      1.0.0       normal         Addon Ready
    

Criando rotas estáticas

Após você ativar o complemento de rota estática, será possível criar e aplicar recursos para rotas customizadas.

  1. Crie um arquivo YAML para um recurso de rota estática.

    apiVersion: static-route.ibm.com/v1
    kind: StaticRoute
    metadata:
      name: <route_name>
    spec:
      subnet: "<subnet_CIDR>"
      gateway: "<gateway_IP>"
      selectors:
        - key: "<label_key>"
          values:
            - "<label_value>"
          operator: In
    

    Exemplo

    apiVersion: static-route.ibm.com/v1
    kind: StaticRoute
    metadata:
      name: mystaticroute
    spec:
      subnet: "192.168.0.0/24"
      gateway: "10.0.0.1"
      selectors:
        - key: "kubernetes.io/arch"
          values:
            - "amd64"
          operator: In
    
    subnet
    Especifique o CIDR da sub-rede externa da qual são enviadas as solicitações para os nós do trabalhador, como uma sub-rede em uma rede no local. A sub-rede externa não pode estar nos seguintes intervalos reservados. O intervalo de interconexão do dispositivo, 198.18.0.0/15, é permitido.
    • 10.0.0.0/8
    • 172.16.0.0/16
    • 172.18.0.0/16
    • 172.19.0.0/16
    • 172.20.0.0/16
    gateway
    Se o endereço IP de gateway existir na mesma sub-rede que os nós do trabalhador, especifique o endereço IP do gateway. Se o endereço IP de gateway existir em outra sub-rede na rede privada da IBM Cloud, não inclua este campo. Nesse caso, os nós do trabalhador enviam respostas para o roteador de back-end da rede privada, e o roteador envia a resposta para o gateway na outra sub-rede. Quando a rota estática é criada, o endereço IP do roteador de back-end no intervalo 10.0.0.0/8 é designado automaticamente como um gateway padrão.
    selectors
    Para criar a rota estática apenas em determinados nós do trabalhador com base em rótulos do nó do trabalhador, inclua a key e values para o rótulo.
  2. Crie as rotas estáticas, aplicando o arquivo YAML em seu cluster.

    kubectl apply -f <route_name>.yaml
    
  3. Verifique se a rota estática foi criada. Na saída, verifique o node_status para cada nó do trabalhador no qual você cria a rota estática.

    kubectl get staticroute <route_name> -o yaml
    

    Saída de exemplo

    apiVersion: static-route.ibm.com/v1
    kind: StaticRoute
    metadata:
        annotations:
          kubectl.kubernetes.io/last-applied-configuration: |
        {"apiVersion":"static-route.ibm.com/v1","kind":"StaticRoute","metadata":{"annotations":{},"name":"mystaticroute"},"spec":{"selectors":[{"key":"kubernetes.io/arch","operator":"In","values":["amd64"]}],"subnet":"10.94.227.46/24"}}
    creationTimestamp: "2020-05-20T16:43:12Z"
    finalizers:
    - finalizer.static-route.ibm.com
    generation: 1
    name: mystaticroute
    resourceVersion: "3753886"
    selfLink: /apis/static-route.ibm.com/v1/staticroutes/mystaticroute
    uid: f284359f-9d13-4e27-9d3a-8fb38cbc7a5c
      spec:
        selectors:
        - key: kubernetes.io/arch
          operator: In
          values:
          - amd64
        subnet: 10.94.227.46/24
      status:
        nodeStatus:
        - error: ""
          hostname: 10.94.227.19
          state:
            gateway: 10.94.227.1
            selectors:
            - key: kubernetes.io/arch
              operator: In
              values:
              - amd64
            subnet: 10.94.227.46/24
        - error: ""
          hostname: 10.94.227.22
          state:
            gateway: 10.94.227.1
            selectors:
            - key: kubernetes.io/arch
              operator: In
              values:
              - amd64
            subnet: 10.94.227.46/24