2.8. OI-Netzwerk stellt GDC-Verbindungen bereit

Geschätzte Dauer: 6–8 Stunden

Eigentümer der betriebsbereiten Komponente: PNET

2.8.1. Übersicht

In diesem Schritt werden Konfigurationsdateien bereitgestellt, die es den Netzwerken der Operations Suite Infrastructure (OI) und GDC ermöglichen, eine Verbindung herzustellen.

Für diese Schritte ist der Zugriff auf einige GDC-Dateien sowie die Verbindung zum Root-Administratorcluster der GDC-Instanz erforderlich, damit Laufzeitnetzwerkinformationen abgerufen werden können.

2.8.2. Hinweise

In dieser Phase des Bereitstellungsprozesses muss Folgendes zutreffen:

  1. Beide OIR-Switches sind verkabelt, eingeschaltet, auf die entsprechende Version aktualisiert und haben Basis- und ACL-Konfigurationen.

  2. Beide OIF-Firewalls sind verkabelt, eingeschaltet, auf die entsprechende Version aktualisiert, für den FIPS-CC-Modus aktiviert und haben die Basiskonfiguration angewendet.

  3. Damit die gesamte GDC-Verbindungsbereitstellung abgeschlossen werden kann, muss die GDC-Instanz das Netzwerk-Bootstraping abgeschlossen und den Kind-Cluster verlassen haben und sich im Administrator-Root-Cluster befinden.

2.8.3. Vorbereitung

Bereiten Sie die Umgebung für die folgenden Schritte vor, indem Sie die folgenden Informationen zusammentragen und die Umgebungsvariablen festlegen.

OI kann auf zwei Arten verbunden werden: lokal oder per Fernzugriff. Bei einer lokalen Verbindung wird OI direkt über Glasfaserverbindungen zwischen Racks im selben Rechenzentrum mit GDC verbunden. Bei einer Remote-Verbindung wird über einen Long-Haul-Transport eine Verbindung zu einem anderen Standort hergestellt. Diese Spezifikation kann in der interconnect.yaml-Datei angegeben werden, die zum Bereitstellen von GDC-Verbindungen erforderlich ist. Diese Datei enthält alle Informationen, die zum Konfigurieren der GDC-Verbindungen erforderlich sind.

2.8.3.1. YAML-Spezifikation für Interconnect-Verbindungen

Attribut
Beschreibung
Beispiel
zones
[ ] map
Informationen zur GDC-Zelle, mit der die OI-Bereitstellung verbunden werden muss.

Wenn Sie eine Verbindung zu einer Liste von GDC-Zellen herstellen möchten,
geben Sie eine Liste von zones mit Informationen zu jeder GDC-Zelle in jeder Zone an. Zonenoptionen
Beispiel:
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. Zonenoptionen

Enthält Informationen zu einer GDC-Zelle in der Datei interconnect.yaml:

Attribut
Beschreibung
Nutzung
zoneName
String
Abkürzung der GDC-Zelle, mit der die OI-Bereitstellung verbunden werden muss.
zones:
- zoneName: kb
uplinkSpeed
uint32
Optional: Gibt die Uplink-Geschwindigkeit der Verbindung an (10 oder 100). Werte:10, 100
Standard: 10

uplinkSpeed: 100
localInstance
int
Die InstanceID der OI-Bereitstellungswebsite aus der ocit.yaml-Datei.
Über eine lokale Verbindung wird der Standort des Operations Suite Infrastructure Core Rack (OIR) direkt mit dem GDC verbunden. Dazu werden Glasfaserverbindungen zwischen Racks im selben Rechenzentrum verwendet.
zones:
- zoneName: kb
localInstanceIDs: 1
remoteInstance
[ ] int
InstanceID(s) des OI-Bereitstellungsorts aus der ocit.yaml-Datei.
Bei einer Remote-Verbindung wird über Langstreckentransporte eine Verbindung zu einem oder mehreren anderen Standorten hergestellt. Es kann eine Liste von remoteInstance-Werten angegeben werden, sodass Konfigurationen für alle OIR-Websites generiert werden, um eine Verbindung zu den angegebenen GDC-Zellen herzustellen.
zones:
- zoneName: kb
remoteInstanceIDs:
- 1



zones:
- zoneName: kb
remoteInstanceIDs:
- 1

- 2

- 3



cellCfg
String
GDC-Zellenkonfigurationspfad, der alle Informationen zu Interconnects enthält. Damit werden alle Interconnect-Konfigurationen für OIR generiert.\ Wenn `cellCfg` nicht in der Datei „interconnect.yaml“ angegeben ist, verwendet das Tool „occonfig“ die Kubernetes API im GDC-Zellen-Bootstrapper, um Interconnect-Informationen abzurufen, wenn `zoneName` mit der GDC-Zellenabkürzung übereinstimmt.
zones:
- cellCfg: /path/to/cellcfg

Wenn es sich um eine lokale Verbindung handelt, konfigurieren Sie die Datei interconnect.yaml so:

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

Wenn es sich um eine Remote-Verbindung handelt, konfigurieren Sie die Datei interconnect.yaml so:

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

Geben Sie für OI-Bereitstellungen an mehreren Standorten die interconnect.yaml-Datei so an:

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

2.8.3.3. WAN-Optionen

Die folgende Tabelle enthält Informationen zum L3-WAN in der Datei interconnect.yaml.

Wenn Sie die L3-WAN-Konfigurationen bereitstellen, achten Sie darauf, dass für die generierten Basiskonfigurationen das Feature-Flag L3-WAN aktiviert und die ASN wan-transit deklariert ist.

Attribut Typ Beschreibung
wanName String Name des L3-WAN, das eine Verbindung zu OIC herstellt. Dieser Wert wird für Beschreibungen in Schnittstellen und BGP-Nachbarschaften verwendet.
operationsCIDRs [ ] CIDR Eine Reihe von CIDR-Blöcken, die vom L3-WAN erwartet werden und vom OIC zugelassen werden. So wird die Verbindung zwischen dem NOC des Kunden und OC-WORKSTATIONS eingerichtet.
Instanzen Konfiguration jeder Instanz, die eine Verbindung zum L3-WAN herstellen muss.
instanceID int Instanz-ID der OIC-Instanz, für die Konfigurationen zum Herstellen einer Verbindung zum bereitgestellten L3-WAN generiert werden sollen.
bgp BGP-Konfiguration des L3-WAN.
asn int BGP-ASN der L3-WAN-PE-Knoten zum Einrichten von eBGP-Verbindungen.
Geräte Spezifische Konfiguration für jeden OCCORE-Switch.
deviceName String Gerätename, der in Beschreibungen verwendet wird. Sollte mit dem Namen der Konfigurationsdatei übereinstimmen, die aus der Datei ocit.yaml generiert wurde (ocit config generation).
Uplinks Spezifische Konfiguration für Ports, die mit L3-WAN-PE-Knoten verbunden sind.
uplinkName String Schnittstellenname, der für die Schnittstellenbeschreibung verwendet wird.
bgpPassword String BGP-Passwort für das Peering im Klartext.
ip String IPv4-Adresse des lokalen Ports, der mit dem PE-Knoten des L3-WAN verbunden ist.
Gateway String Die IPv4-Adresse des Remote-Ports, der mit dem PE-Knoten verbunden ist. Sie wird auch für die BGP-Nachbaradresse verwendet.
Subnetz String Subnetzdefinition der Schnittstelle, die mit dem PE-Knoten verbunden ist.
Port int Physische Portnummer auf dem OCCORE-Switch, die für die Verbindung mit dem PE-Knoten verwendet wird.
Unterschnittstelle int Subinterface-ID (dot1q-Tag), die zusätzlich zum physischen Port verwendet wird (falls vorhanden).

2.8.3.3.1. Beispielkonfigurationen

Das folgende Beispiel zeigt eine interconnect.yaml-Datei, in der das Operations Suite Infrastructure Core Rack (OIR) mit einem L3-WAN verbunden ist. Es gibt zwei Uplinks auf occoresw01 und einen Uplink auf 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. Switch-Konfigurationen generieren

Bei diesen Schritten werden Patchkonfigurationen generiert, die auf die Netzwerkgeräte angewendet werden, um die Verbindung zu GDC bereitzustellen.

Schalterkonfigurationen generieren:

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

Dadurch werden die folgenden Konfigurationsdateien für jede Website generiert:

Konfigurationsdatei(en) Gerät Funktion
occoresw101.incremental occoresw101 Konfiguration zum Patchen des Geräts für die Verbindung zur GDC-Instanz
occoresw101.acl occoresw101 Konfiguration zum Patchen der ACLs für die Traffic-Durchsetzung mit den GDC-Netzwerken.
occoresw102.incremental occoresw102 Konfiguration zum Patchen des Geräts für die Verbindung zur GDC-Instanz
occoresw102.acl occoresw102 Konfiguration zum Patchen der ACLs für die Traffic-Durchsetzung mit den GDC-Netzwerken.
ocsw101.incremental ocs1w01 Konfiguration zum Patchen des Geräts für die Verbindung zur GDC-Instanz
ocsw101.acl ocsw101 Konfiguration zum Patchen der ACLs für die Traffic-Durchsetzung mit den GDC-Netzwerken.
ocsw102.incremental ocsw102 Konfiguration zum Patchen des Geräts für die Verbindung zur GDC-Instanz
ocsw102.acl ocsw102 Konfiguration zum Patchen der ACLs für die Traffic-Durchsetzung mit den GDC-Netzwerken.

2.8.5. Firewallrichtlinien generieren

Damit die Firewallregeln generiert werden können, muss occonfigtool auf die Kubernetes API für den Root-Administratorcluster zugreifen. Prüfen Sie, ob die Umgebungsvariable KUBECONFIG auf root-admin-kubeconfig festgelegt ist:

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

Generieren Sie die Firewallregeln mit diesem Befehl:

occonfigtool generate fwrules -c ${OCIT_INTERCONNECT_CONFIG_FILE:?} -o ${OCIT_CONFIG_FILE:?}
Konfigurationsdatei(en) Gerät Funktion
firewall-rules.base occorefw01 Konfiguration zum Patchen des Geräts für die Verbindung zur GDC-Instanz

2.8.6. Konfigurationen anwenden

Wenden Sie die Konfiguration mit den Ausgabedateien auf die entsprechenden Netzwerkgeräte an. Gehen Sie dabei genauso vor wie im vorherigen Schritt für Switches und Firewalls.

2.8.7. GDC-Ressourcen für RoutePolicy aktualisieren

GDC verwendet Routenrichtlinien, um zu erzwingen, welche Netzwerke in der Routingtabelle beworben werden dürfen.

Wenn Sie OI als externes Netzwerk hinzufügen, müssen wir die benutzerdefinierten RoutePolicy-Ressourcen aktualisieren, damit sie die neuen Netzwerke berücksichtigen.

Dazu müssen Sie mit kubectl auf den Root-Administratorcluster zugreifen. Prüfen Sie, ob die entsprechende KUBECONFIG-Variable festgelegt ist:

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

So bestätigen Sie das Problem:

kubectl get routepolicy -n gpc-system

Die folgende oder eine ähnliche Ausgabe sollte angezeigt werden:

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

In diesen Schritten werden die networkoperationcenter-routepolicy und mgmtnetworkoperationcenter-routepolicy untersucht.

2.8.7.1. Patch-Datennetzwerk-Routenrichtlinien

Rufen Sie aus ocinfo.opscenter.local.txt die folgenden Subnetze ab (einschließlich Netzwerk und Präfixlänge).

  • OCCORE-SERVERS, im folgenden Beispiel als $OCCORE_SERVERS_NET verwendet
  • OC-WORKSTATIONS, im folgenden Beispiel als $OC_WORKSTATIONS_NET verwendet

Verwenden Sie diese Werte, um die Routenrichtlinien anzupassen, indem Sie die folgenden Variablen ausfüllen:

export OCCORE_SERVERS_NET=$OCCORE_SERVERS_NET
export OC_WORKSTATIONS_NET=$OC_WORKSTATIONS_NET

Beispiel:

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

Nachdem die Umgebungsvariablen festgelegt wurden, führen Sie die folgenden kubectl-Befehle aus, um die Routenrichtlinien zu aktualisieren:

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
                }
            ]
        }
    }
]"

Beispielausgabe:

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

2.8.7.2. Netzwerkroutenrichtlinien für die Patchverwaltung

Rufen Sie aus ocinfo.opscenter.local.txt die folgenden Subnetze ab (einschließlich Netzwerk und Präfixlänge).

  • OCCORE-JUMPHOSTS, im folgenden Beispiel als $OCCORE_JUMPHOSTS_NET verwendet
  • OCCORE-ILOS, im folgenden Beispiel als $OCCORE_ILOS_NET verwendet

Verwenden Sie diese Werte, um die Routenrichtlinien anzupassen, indem Sie die folgenden Variablen ausfüllen:

export OCCORE_JUMPHOSTS_NET=$OCCORE_JUMPHOSTS_NET
export OCCORE_ILOS_NET=$OCCORE_ILOS_NET

Beispiel:

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

Nachdem die Umgebungsvariablen festgelegt wurden, führen Sie die folgenden kubectl-Befehle aus, um die Routenrichtlinien zu aktualisieren:

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
                }
            ]
        }
    }
]"

Beispielausgabe:

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