2.8. Provisionamento de rede da OI para conexões do GDC

Tempo estimado para a conclusão: 6 a 8 horas

Proprietário do componente operacional: PNET

2.8.1. Visão geral

Esta etapa do processo provisiona arquivos de configuração que permitem que as redes da infraestrutura do Operations Suite (OI) e do GDC estabeleçam conectividade.

Essas etapas exigem acesso a alguns arquivos do GDC e conectividade com o cluster de administrador raiz da instância do GDC para que as informações de rede de tempo de execução sejam recuperadas.

2.8.2. Antes de começar

Nesta etapa do processo de implantação, as seguintes condições precisam ser verdadeiras:

  1. Os dois switches OIR estão conectados por cabo, ligados, atualizados para a versão adequada e têm configurações de base e ACL aplicadas.

  2. Os dois firewalls OIF estão conectados por cabo, ligados, atualizados para a versão adequada, ativados para o modo FIPS-CC e têm a configuração básica aplicada.

  3. Para concluir todo o provisionamento de conectividade do GDC, a instância do GDC precisa ter concluído a inicialização da rede e saído do cluster kind para o cluster de administrador raiz.

2.8.3. Preparação

Prepare o ambiente para as próximas etapas coletando as seguintes informações e definindo as variáveis de ambiente.

O OI pode ser conectado de duas maneiras: local ou remota. Uma conexão local conecta o OI ao GDC diretamente usando conexões de fibra entre racks no mesmo data center. Uma conexão remota se conecta a um local diferente usando transporte de longa distância. Essa especificação pode ser fornecida no arquivo interconnect.yaml, que é necessário para provisionar configurações de interconexão do GDC. Esse arquivo contém todas as informações necessárias para configurar as interconexões do GDC.

2.8.3.1. Especificação YAML da interconexão

Attribute
Descrição
Exemplo
zones
[ ] map
Informações sobre a célula do GDC a que a implantação do OI precisa se conectar.

Para se conectar a uma lista de células do GDC,
especifique uma lista de zones com informações de cada célula do GDC em cada zona. Opções de zona
Exemplo:
zones:
- zoneName: kb
- uplinkSpeed: 10
localInstanceIDs: 2

remoteInstanceIDs:
- 1
- cellCfg: path/to/cellcfg

- zoneName: ah
- uplinkSpeed: 100
localInstanceIDs: 3

- cellCfg: path/to/cellcfg

2.8.3.2. Opções de zona

Contém informações sobre uma célula do GDC no arquivo interconnect.yaml:

Attribute
Descrição
Uso
zoneName
string
A abreviação da célula do GDC a que a implantação da OI precisa se conectar.
zones:
- zoneName: kb
uplinkSpeed
uint32
(Opcional) Fornece a velocidade de uplink da conexão: (10 ou 100). Valores:10, 100
Padrão: 10

uplinkSpeed: 100
localInstance
int
O InstanceID do site de implantação do OI no arquivo ocit.yaml.
Uma conexão local conecta o site do rack principal da infraestrutura da Suite de operações (OIR) ao GDC diretamente usando conexões de fibra entre racks no mesmo data center.
zones:
- zoneName: kb
localInstanceIDs: 1
remoteInstance
[ ] int
InstanceID(s) do site de implantação da OI no arquivo ocit.yaml.
Uma conexão remota se conecta a um ou mais locais diferentes usando transporte de longa distância. É possível fornecer uma lista de valores remoteInstance para que as configurações de todos os sites do OIR sejam geradas para se conectar a determinadas células do GDC.
zones:
- zoneName: kb
remoteInstanceIDs:
- 1



zones:
- zoneName: kb
remoteInstanceIDs:
- 1

- 2

- 3



cellCfg
string
Caminho da configuração da célula do GDC, que contém todas as informações sobre interconexões. Isso será usado para gerar todas as configurações de interconexão para o OIR.\ Se o `cellCfg` não for fornecido no arquivo interconnect.yaml, a ferramenta occonfig usará a API Kubernetes no bootstrap da célula do GDC para buscar informações de interconexão se `zoneName` corresponder à abreviação da célula do GDC.
zones:
- cellCfg: /path/to/cellcfg

Se for uma conexão local, configure o arquivo interconnect.yaml da seguinte maneira:

zones:
  - zoneName: ah
    uplinkSpeed: 100
    localInstanceID: 1
    cellCfg: /path/to/cellcfg

Se for uma conexão remota, configure o arquivo interconnect.yaml da seguinte maneira:

zones:
  - zoneName: ah
    uplinkSpeed: 100
      remoteInstanceIDs:
      - 2
    cellCfg: /path/to/cellcfg

Para implantações de OI em vários sites, especifique o arquivo interconnect.yaml como:

zones:
  - zoneName: ah
    uplinkSpeed: 100
    localInstanceID: 1
    remoteInstanceIDs:
      - 2
    cellCfg: /path/to/cellcfg

2.8.3.3. Opções de WAN

A tabela a seguir inclui informações sobre a L3-WAN no arquivo interconnect.yaml.

Se você provisionar as configurações de L3-WAN, verifique se as configurações de base geradas têm a flag de recurso L3-WAN ativada e o ASN wan-transit declarado.

Atributo Tipo Descrição
wanName string Nome da WAN da camada 3 que se conecta ao OIC. Isso é usado para descrições em interfaces e vizinhanças do BGP.
operationsCIDRs [ ] CIDR Conjunto de blocos CIDR esperados pela WAN da camada 3 e permitidos pelo OIC. Isso ajuda a configurar a conexão entre o NOC do cliente e o OC-WORKSTATIONS.
instâncias Configuração de cada instância que precisa se conectar à L3-WAN.
instanceID int ID da instância do OIC para a qual as configurações serão geradas para se conectar à L3-WAN fornecida.
bgp Configuração do BGP da WAN da camada 3.
asn int ASN do BGP dos nós PE da WAN da camada 3 para configurar conexões eBGP.
dispositivos Configuração específica para cada switch OCCORE.
deviceName string Nome do dispositivo, usado em descrições. Precisa ser igual ao nome do arquivo de configuração gerado pelo arquivo ocit.yaml (ocit config generation).
uplinks Configuração específica para portas que se conectam a nós PE da WAN L3.
uplinkName string Nome da interface usado para a descrição dela.
bgpPassword string Senha do BGP para o peering em texto não criptografado.
ip string Endereço IPv4 da porta local que se conecta ao nó PE da L3-WAN.
gateway string Endereço IPv4 da porta remota que se conecta ao nó PE, também usado para o endereço do vizinho BGP.
sub-rede string Definição de sub-rede da interface que se conecta ao nó PE.
porta int Número da porta física no switch OCCORE usado para se conectar ao nó PE.
subinterface int ID da subinterface (tag dot1q) usada na porta física (se houver).

2.8.3.3.1. Exemplos de configurações

O exemplo a seguir mostra um arquivo interconnect.yaml em que o rack principal da infraestrutura da Operations Suite (OIR) faz peering com uma WAN da camada 3, com dois uplinks em occoresw01 e um uplink em occoresw02:

zones:
  - zoneName: kb
    uplinkSpeed: 10
    localInstanceID: 1
    cellCfg: /path/to/cellcfg
wan:
  - wanName:L3WANName
    operationsCIDRs:
      - ipFamily: IPv4
        ipv4: 172.22.48.0/24
      - ipFamily: IPv4
        ipv4: 172.22.49.0/24
      - ipFamily: IPv4
        ipv4: 172.22.50.0/24
      - ipFamily: IPv4
        ipv4: 172.22.51.0/24
    instances:
    - instanceID: 1
      bgp:
        asn: 65515
      devices:
        - deviceName: occoresw101
          uplinks:
          - uplinkName: AA
            bgpPassword: admin!123
            numberedIpGroup:
              ipFamily: IPv4
              ipv4:
                ip: 10.1.0.1
                subnet:
                  gateway: 10.1.0.0
                  subnet: 10.1.0.0/31
            port:
              port: 33
          - uplinkName: AB
            bgpPassword: admin!123
            numberedIpGroup:
              ipFamily: IPv4
              ipv4:
                ip: 10.1.0.3
                subnet:
                  gateway: 10.1.0.2
                  subnet: 10.1.0.2/31
            port:
              port: 34
              subinterface: 100
        - deviceName: occoresw102
          uplinks:
          - uplinkName: AC
            bgpPassword: admin!123
            numberedIpGroup:
              ipFamily: IPv4
              ipv4:
                ip: 10.2.0.3
                subnet:
                  gateway: 10.2.0.2
                  subnet: 10.2.0.2/31
            port:
              port: 35

2.8.4. Gerar configurações de switch

Essas etapas geram configurações de patch para aplicar aos dispositivos de rede e provisionar a conectividade com o GDC.

Gere as configurações do switch:

occonfigtool generate cell config -c /path/to/interconnect.yaml -o path/to/ocit.yaml

Isso gera os seguintes arquivos de configuração para cada site:

Arquivos de configuração Dispositivo Função
occoresw101.incremental occoresw101 Configuração para corrigir o dispositivo e permitir a conectividade com a instância do GDC
occoresw101.acl occoresw101 Configuração para corrigir as ACLs para aplicação de tráfego com as redes do GDC.
occoresw102.incremental occoresw102 Configuração para corrigir o dispositivo e permitir a conectividade com a instância do GDC
occoresw102.acl occoresw102 Configuração para corrigir as ACLs para aplicação de tráfego com as redes do GDC.
ocsw101.incremental ocs1w01 Configuração para corrigir o dispositivo e permitir a conectividade com a instância do GDC
ocsw101.acl ocsw101 Configuração para corrigir as ACLs para aplicação de tráfego com as redes do GDC.
ocsw102.incremental ocsw102 Configuração para corrigir o dispositivo e permitir a conectividade com a instância do GDC
ocsw102.acl ocsw102 Configuração para corrigir as ACLs para aplicação de tráfego com as redes do GDC.

2.8.5. Gerar políticas de firewall

Para gerar as regras de firewall, o occonfigtool precisa acessar a API Kubernetes do cluster de administrador raiz. Verifique se a variável de ambiente KUBECONFIG está definida como root-admin-kubeconfig:

export KUBECONFIG=/root/release/root-admin/root-admin-kubeconfig
export OCIT_CONFIG_FILE=/path/to/ocit.yaml
export OCIT_INTERCONNECT_CONFIG_FILE=/path/to/interconnect.yaml

Gere as regras de firewall executando o seguinte comando:

occonfigtool generate fwrules -c ${OCIT_INTERCONNECT_CONFIG_FILE:?} -o ${OCIT_CONFIG_FILE:?}
Arquivos de configuração Dispositivo Função
firewall-rules.base occorefw01 Configuração para corrigir o dispositivo e permitir a conectividade com a instância do GDC

2.8.6. Aplicar configurações

Usando os arquivos de saída, aplique a configuração aos respectivos dispositivos de rede usando o mesmo procedimento da etapa anterior para switches e firewalls.

2.8.7. Atualizar recursos do GDC RoutePolicy

O GDC usa a política de roteamento para aplicar quais redes podem ser divulgadas na tabela de roteamento.

Ao adicionar o OI como uma rede externa, é necessário atualizar os recursos personalizados RoutePolicy para esperar as novas redes.

Isso requer o acesso ao cluster de administrador raiz usando kubectl. Verifique se a variável KUBECONFIG apropriada está definida:

export KUBECONFIG=/root/deploy/root-admin/root-admin-kubeconfig

Para confirmar, faça o seguinte:

kubectl get routepolicy -n gpc-system

A seguinte saída, ou algo parecido, vai aparecer:

NAME                                     AGE
customerpeering-routepolicy              19d
datacenter-routepolicy                   19d
mgmtnetworkoperationcenter-routepolicy   19d
networkoperationcenter-routepolicy       19d

Para essas etapas, vamos examinar os elementos networkoperationcenter-routepolicy e mgmtnetworkoperationcenter-routepolicy.

2.8.7.1. Adicionar patch às políticas de rotas de rede de dados

Na ocinfo.opscenter.local.txt, recupere as seguintes sub-redes (incluindo a rede e o tamanho do prefixo).

  • OCCORE-SERVERS, usado no exemplo a seguir como $OCCORE_SERVERS_NET
  • OC-WORKSTATIONS, usado no exemplo a seguir como $OC_WORKSTATIONS_NET

Use esses valores para ajustar as políticas de roteamento preenchendo as seguintes variáveis:

export OCCORE_SERVERS_NET=$OCCORE_SERVERS_NET
export OC_WORKSTATIONS_NET=$OC_WORKSTATIONS_NET

Exemplo:

export OCCORE_SERVERS_NET=172.21.0.0/24
export OC_WORKSTATIONS_NET=172.21.32.0/24

Depois que as variáveis de ambiente forem definidas, execute os seguintes comandos kubectl para atualizar as políticas de rotas:

kubectl patch routepolicy/networkoperationcenter-routepolicy -n gpc-system \
  --type=json -p="[
    {
        'op': 'add',
        'path': '/spec/in/ipPrefixList/0',
        'value': {
            'action': 'Permit',
            'ipPrefix': '${OCCORE_SERVERS_NET:?}',
            'prefixLengthMatchers': [
                {
                    'operator': 'LE',
                    'prefixLength': 32
                }
            ]
        }
    }
]"

kubectl patch routepolicy/networkoperationcenter-routepolicy -n gpc-system \
  --type=json -p="[
    {
        'op': 'add',
        'path': '/spec/in/ipPrefixList/0',
        'value': {
            'action': 'Permit',
            'ipPrefix': '${OC_WORKSTATIONS_NET:?}',
            'prefixLengthMatchers': [
                {
                    'operator': 'LE',
                    'prefixLength': 32
                }
            ]
        }
    }
]"

Exemplo de saída:

routepolicy.system.private.gdc.goog/networkoperationcenter-routepolicy patched

2.8.7.2. Políticas de rota de rede de gerenciamento de patches

Na ocinfo.opscenter.local.txt, recupere as seguintes sub-redes (incluindo a rede e o tamanho do prefixo).

  • OCCORE-JUMPHOSTS, usado no exemplo a seguir como $OCCORE_JUMPHOSTS_NET
  • OCCORE-ILOS, usado no exemplo a seguir como $OCCORE_ILOS_NET

Use esses valores para ajustar as políticas de roteamento preenchendo as seguintes variáveis:

export OCCORE_JUMPHOSTS_NET=$OCCORE_JUMPHOSTS_NET
export OCCORE_ILOS_NET=$OCCORE_ILOS_NET

Exemplo:

export OCCORE_JUMPHOSTS_NET=172.21.2.0/27
export OCCORE_ILOS_NET=172.21.2.32/27

Depois que as variáveis de ambiente forem definidas, execute os seguintes comandos kubectl para atualizar as políticas de roteamento:

kubectl patch routepolicy/mgmtnetworkoperationcenter-routepolicy -n gpc-system \
  --type=json -p="[
    {
        'op': 'add',
        'path': '/spec/in/ipPrefixList/0',
        'value': {
            'action': 'Permit',
            'ipPrefix': '${OCCORE_JUMPHOSTS_NET:?}',
            'prefixLengthMatchers': [
                {
                    'operator': 'LE',
                    'prefixLength': 32
                }
            ]
        }
    }
]"

kubectl patch routepolicy/mgmtnetworkoperationcenter-routepolicy -n gpc-system \
  --type=json -p="[
    {
        'op': 'add',
        'path': '/spec/in/ipPrefixList/0',
        'value': {
            'action': 'Permit',
            'ipPrefix': '${OCCORE_ILOS_NET:?}',
            'prefixLengthMatchers': [
                {
                    'operator': 'LE',
                    'prefixLength': 32
                }
            ]
        }
    }
]"

Exemplo de saída:

routepolicy.system.private.gdc.goog/mgmtnetworkoperationcenter-routepolicy patched