Skip to content

Commit

Permalink
Add e2e example manifests for LoadBalancer (#1137)
Browse files Browse the repository at this point in the history
* e2e example manifests for loadbalancer

* refactoring with ephemeral objects
  • Loading branch information
ushabelgur authored Oct 28, 2024
1 parent 8ea3843 commit 0b54805
Show file tree
Hide file tree
Showing 7 changed files with 163 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
resources:
- network.yaml
- machine1.yaml
- machine2.yaml
- loadbalancer.yaml
14 changes: 14 additions & 0 deletions config/samples/e2e/bases/loadbalancer-public/loadbalancer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
apiVersion: networking.ironcore.dev/v1alpha1
kind: LoadBalancer
metadata:
name: loadbalancer-sample
spec:
type: Public
ipFamilies: [IPv4]
networkRef:
name: network-sample
networkInterfaceSelector:
matchLabels:
app: web
ports:
- port: 80
40 changes: 40 additions & 0 deletions config/samples/e2e/bases/loadbalancer-public/machine1.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
apiVersion: compute.ironcore.dev/v1alpha1
kind: Machine
metadata:
name: machine-sample1
spec:
machineClassRef:
name: machineclass-sample
ignitionRef:
name: ignition
key: ignition.yaml
networkInterfaces:
- name: primary
ephemeral:
networkInterfaceTemplate:
metadata:
labels:
app: web
spec:
ipFamilies:
- IPv4
ips:
- value: 10.0.0.1
networkRef:
name: network-sample
virtualIP:
ephemeral:
virtualIPTemplate:
spec:
type: Public
ipFamily: IPv4
volumes:
- name: root-disk-1
ephemeral:
volumeTemplate:
spec:
volumeClassRef:
name: volumeclass-sample
image: gardenlinux:rootfs-image
resources:
storage: 10Gi
40 changes: 40 additions & 0 deletions config/samples/e2e/bases/loadbalancer-public/machine2.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
apiVersion: compute.ironcore.dev/v1alpha1
kind: Machine
metadata:
name: machine-sample2
spec:
machineClassRef:
name: machineclass-sample
ignitionRef:
name: ignition
key: ignition.yaml
networkInterfaces:
- name: primary
ephemeral:
networkInterfaceTemplate:
metadata:
labels:
app: web
spec:
ipFamilies:
- IPv4
ips:
- value: 10.0.0.2
networkRef:
name: network-sample
virtualIP:
ephemeral:
virtualIPTemplate:
spec:
type: Public
ipFamily: IPv4
volumes:
- name: root-disk-1
ephemeral:
volumeTemplate:
spec:
volumeClassRef:
name: volumeclass-sample
image: gardenlinux:rootfs-image
resources:
storage: 10Gi
4 changes: 4 additions & 0 deletions config/samples/e2e/bases/loadbalancer-public/network.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
apiVersion: networking.ironcore.dev/v1alpha1
kind: Network
metadata:
name: network-sample
52 changes: 52 additions & 0 deletions config/samples/e2e/loadbalancer-public/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# `LoadBalancer` of `type: Public`

This example deploys a `LoadBalancer` of `type: Public` by selecting two target `NetworkInterface`s via a `networkInterfaceSelector` `metav1.LabelSelector`. These two `NetworkInterface`s are referencing to same `Network` and will be attached to two different `Machine`s.

The following artifacts will be deployed in your namespace:
- IronCore `LoadBalancer`
- IronCore `Network`, `NetworkInterface`s and `VirtualIP`s
- IronCore `Machine`s
- IronCore `Volume`s
- Secret containing the `ignition`

## Prerequisites

- [Butane](https://coreos.github.io/butane/)

## Usage
1. Adapt the `namespace` in `kustomization.yaml`
2. Replace `your-user`, `your-pw-hash` and `your-ssh-key`s in the `ignition/ignition.yaml`
3. Run `ignition/regenerate-ignition.sh`
4. Create the below `patch-machine.yaml` in `loadbalancer-public` folder with the desired `machineClassRef`, `machinePoolRef`, `volumeClassRef`, `volumePoolRef`, `image` etc. as per your environment

```
apiVersion: compute.ironcore.dev/v1alpha1
kind: Machine
metadata:
name: machine-sample
spec:
machineClassRef:
name: new-machineClass
machinePoolRef:
name: new-machinePool
volumes:
- name: root-disk-1
ephemeral:
volumeTemplate:
spec:
volumeClassRef:
name: new-volumeClass
volumePoolRef:
name: new-volumePool
image: gardenlinux:rootfs-dev-20231025
resources:
storage: 15Gi
```

5. Update the `kustomization.yaml` with below content
```
patches:
- path: patch-machine.yaml
```

6. Run (`kubectl apply -k ./`)
8 changes: 8 additions & 0 deletions config/samples/e2e/loadbalancer-public/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: test

resources:
- ../bases/ignition
- ../bases/loadbalancer-public

0 comments on commit 0b54805

Please sign in to comment.