Skip to content

OSC Shoot Peering Extension

Introduction

The osc-gardener-extension-peering service provides a self-service capability for customers to initiate a peering connection between nodes subnets. The service is responsible to ensure proper reconciliation of shootPeering CRs based on the provided extension provider configuration in the Shoot CR.

Supported peering types

  • Shoot peering

ShootPeering

ShootPeering is intended as peering between two or more Shoots running on same Seed or different Seed's within the same Garden cluster.

To properly enable a peering between two or more Shoots, you need to configure for each peered Shoot pair:

  • Shoot B as a peering target on Shoot A
  • Shoot A as a peering target on Shoot B

Enabling the ShootPeering extension

For enabling this extension for a Shoot cluster, the extension service named osc-peering-service needs to be added to the extensions in the Shoot Custom Resource manifest:

apiVersion: core.gardener.cloud/v1beta1
kind: Shoot
spec:
  extensions:
    - type: osc-peering-service
      providerConfig:
        apiVersion: service.peering.extensions.osc.t-systems.com/v1
        kind: PeeringConfig
        shootPeerings:
        - name: <peered target Shoot>
          # garden project name in which Shoot was created
          namespace: garden-<project>
          # Seed name on which Shoot hosted
          seed: <Seed name>
        - name: <another peered target Shoot>
          # garden project name in which Shoot was created
          namespace: garden-<project>
          # Seed name on which Shoot hosted
          seed: <Seed name>

Possible fields:

  • name: the name of the target shoot.
  • namespace: the namespace of the project. It uses the prefix garden- followed by the <project name>.
  • seed: the name of the Seed cluster configured for the shoot resource.

Example of Shoot YAML manifests for multiple peers:

Let assume of three Shoots: peer1, peer2 and peer3 and and the requirement to establish the following peerings:

  • Shoot peer1 with Shoot peer2 (hosted on the same Seed and project)
  • Shoot peer2 with Shoot peer3 (hosted on the different Seed and project)
#Shoot peer1 extension definition - project A Seed A
apiVersion: core.gardener.cloud/v1beta1
kind: Shoot
spec:
  extensions:
    - type: osc-peering-service
      providerConfig:
        apiVersion: service.peering.extensions.osc.t-systems.com/v1
        kind: PeeringConfig
        ShootPeerings:
          - name: peer2
            # namespace of peer2 Shoot: garden-<project name>
            namespace: garden-projectA
            # Seed name on which Shoot "peer2" hosted
            seed: fsA1-0
#Shoot `peer2` extension definition - project A Seed A
apiVersion: core.gardener.cloud/v1beta1
kind: Shoot
spec:
  extensions:
    - type: osc-peering-service
      providerConfig:
        apiVersion: service.peering.extensions.osc.t-systems.com/v1
        kind: PeeringConfig
        ShootPeerings:
          - name: peer1
            # namespace of Shoot peer1: garden-<project name>
            namespace: projectA
            # Seed name on which shoot "peer1" hosted
            seed: fsA1-0
          - name: peer3
            # namespace of Shoot "peer3": garden-<project name>
            namespace: projectB
            # Seed name on which Shoot "peer3" hosted
            seed: fsB2-0
#Shoot `peer3` extension definition - in project B Seed B
apiVersion: core.gardener.cloud/v1beta1
kind: Shoot
spec:
  extensions:
    - type: osc-peering-service
      providerConfig:
        apiVersion: service.peering.extensions.osc.t-systems.com/v1
        kind: PeeringConfig
        ShootPeerings:
          - name: peer2
            # namespace of Shoot "peer2": garden-<project name>
            namespace: garden-projectA
            # Seed name on which Shoot "peer2" hosted
            seed: fsA1-0

Limitations and restrictions

  • No cross-Garden peering:

    Shoot clusters managed by different Garden clusters cannot be peered together.

  • CIDR conflicts:

    • Peering will not work between Shoots with the same node subnet (nodeCIDR).
    • When one Shoot use a default nodeCIDR, peering may only work in one direction (from the Shoot with default CIDR to the Shoot with custom CIDR).
  • Seed Migration Issue:

    Shoot peering may break or behave improperly when Shoot has been migrated to a different Seed cluster.

  • Duplicate peering conflicts:

    Attempting to configure a peering via the extension will result in reconciliation failures if the same peering already exists (not created via osc-shoot-peering-extension). To enable the peering via the extension, the existing manually configured peering have to be removed.

Tips

  • Clean Up Deleted Shoot:

    When a peered Shoot is deleted, update all Shoots that has peering configuration to it.

  • Consistent Naming:

    Use consistent naming conventions for Shoot to avoid configuration errors.

  • CIDR Planning:

    Double check NodeCIDR carefully to avoid overlapping networks that can prevent proper peering.