Skip to content

Commit

Permalink
Merge branch 'release/v0.10.1' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
robertauer authored and cesmarvin committed Jan 10, 2024
2 parents d4854a8 + 4dd2f17 commit aba6aca
Show file tree
Hide file tree
Showing 11 changed files with 400 additions and 223 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [v0.10.1] - 2024-01-10
### Fixed
- [#27] Added missing watch permission for statefulsets.
- This is used when waiting for the etcd on maintenance switch.

### Changed
- [#14] Updated docs for installing and configuring `k8s-longhorn` and `k8s-velero`.

## [v0.10.0] - 2023-12-19
### Added
- [#23] Added docs for installing the operator in an existent Cloudogu EcoSystem and on an empty cluster.
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ RUN make compile-generic
FROM gcr.io/distroless/static:nonroot
LABEL maintainer="[email protected]" \
NAME="k8s-backup-operator" \
VERSION="0.10.0"
VERSION="0.10.1"

WORKDIR /
COPY --from=builder /workspace/target/k8s-backup-operator .
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Set these to the desired values
ARTIFACT_ID=k8s-backup-operator
VERSION=0.10.0
VERSION=0.10.1
IMAGE=cloudogu/${ARTIFACT_ID}:${VERSION}
GOTAG?=1.21
MAKEFILES_VERSION=9.0.1
Expand Down
161 changes: 127 additions & 34 deletions docs/operations/backup_operator_installation_de.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,45 @@ Dafür muss eine Custom Resource `Component` für den Backup-Operator und seine
### Abhängigkeiten

Vorher sollten aber die Abhängigkeiten des Operators installiert werden. Der Backup-Operator benötigt einen Backup-Provider.
Aktuell wird `velero` als Provider unterstützt.
Aktuell wird `velero` als Provider unterstützt.
Ist in dem Cluster keine Snapshot-API verfügbar muss ebenfalls ein Snapshot-Controller installiert werden.
Das Gleiche gilt für den Storage-Provisioner.

#### Backup-Speicher

Die Speicherung der Backups erfolgt in einem S3-kompatiblen Objektspeicher, z.B. [Minio](https://min.io/).
Dieser Speicher sollte sich außerhalb des Kubernetes Clusters befinden, damit bei einem Ausfall des Clusters die Backups weiterhin vorhanden und sicher sind.
Daher muss die Installation und der Betrieb des Backup-Speichers separat vom CES durchgeführt werden.

### Storage-Provisioner

Falls im Cluster kein Storage-Provisioner existiert kann `longhorn` installiert und verwendet werden.
Mit dem Attribute `valuesYamlOverwrite` können für die Backups URL und Credentials zu einem S3-Storage konfiguriert werden.

#### Secret für den Backup-Speicher erstellen

Longhorn-Backups werden im oben beschriebenen Backup-Speicher abgelegt. Dazu benötigt `longhorn` Zugriff auf den Speicher.
Die dafür benötigten Parameter müssen in einem Kubernetes-Secret abgelegt werden:

| Secret Key | Beschreibung |
|-----------------------|---------------------------------------|
| AWS_ENDPOINTS | Die URL des Backup-Speicher |
| AWS_ACCESS_KEY_ID | Die ID des AccessKey für Longhorn |
| AWS_SECRET_ACCESS_KEY | Das Secret zum AccessKey für Longhorn |

Das Secret kann beispielsweise mit diesem Befehl angelegt werden:

```shell
kubectl create secret generic longhorn-backup-target --namespace=longhorn-system \
--from-literal=AWS_ENDPOINTS=https://192.168.56.1:9000 \
--from-literal=AWS_ACCESS_KEY_ID=MY-ACCESS-KEY \
--from-literal=AWS_SECRET_ACCESS_KEY=MY-ACCESS-SECRET123
```

Das Secret muss im selben Kubernetes-Namespace wie `longhorn` angelegt werden.

#### Longhorn konfigurieren

Mit dem Attribut `valuesYamlOverwrite` können für die Backups URL und Credentials zu dem Backup-Speicher konfiguriert werden.

```yaml
apiVersion: k8s.cloudogu.com/v1
Expand All @@ -29,15 +60,21 @@ spec:
deployNamespace: longhorn-system
namespace: k8s
valuesYamlOverwrite: |
backup:
target:
secret:
# aws_endpoint is just the server url to the s3 compatible storage.
aws_endpoint: http://192.168.56.1:9001 # Insert your s3 url here. Ensure that the bucket `longhorn` exists in the Storage
aws_access_key_id: abcd1234
aws_secret_access_key: abcc1234
longhorn:
defaultSettings:
backupTarget: s3://longhorn@dummyregion/
backupTargetCredentialSecret: longhorn-backup-target
```
Für das Backup sind folgende Parameter in der `valuesYamlOverwrite` relevant:

| Parameter | Beschreibung |
|---------------------------------------------------------|------------------------------------------------------------------------------------------------------|
| `longhorn.defaultSettings.backupTarget` | Die Adresse des Speicherorts (Buckets) innerhalb des Backup-Speichers: `s3://<BUCKET_NAME>@<REGION>` |
| `longhorn.defaultSettings.backupTargetCredentialSecret` | Der Name des oben erstellten Secrets, dass die Zugangsdaten zum Backup-Speicher enthält |

Die erstellte `yaml`-Datei für die Longhorn-Komponente kann mit folgendem Befehl angewendet werden:

`kubectl --namespace ecosystem apply -f k8s-longhorn.yaml`

#### Snapshot-API
Expand Down Expand Up @@ -74,7 +111,38 @@ Installation:
#### Velero

Velero benötigt zur Ablage der Backups ebenfalls Konfiguration.
Diese beinhaltet den Access-Key, Secret-Key und die URL des S3-Storage.

#### Secret für den Backup-Speicher erstellen

Velero-Backups werden ebenfalls im oben beschriebenen Backup-Speicher abgelegt. Dazu benötigt Velero Zugriff auf den Speicher.
Die dafür benötigten Parameter müssen in einem Kubernetes-Secret abgelegt werden:

| Secret Key | Beschreibung |
|-----------------------|-------------------------------------|
| aws_access_key_id | Die ID des AccessKey für Velero |
| aws_secret_access_key | Das Secret zum AccessKey für Velero |

Das Secret für wird als Datei in Velero verwendet und muss daher nach folgendem Beispiel angelegt werden:

```shell
kubectl apply --namespace=ecosystem -f - <<EOF
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: velero-backup-target
stringData:
cloud: |
[default]
aws_access_key_id=MY-VELERO-ACCESS-KEY
aws_secret_access_key=MY-VELERO.ACCESS-SECRET123
EOF
```

Das Secret muss im selben Kubernetes-Namespace wie `velero` angelegt werden.

#### Velero konfigurieren

Mit dem Attribut `valuesYamlOverwrite` lassen sich auch hier beliebige Konfigurationen hinzufügen oder überschreiben:

```yaml
Expand All @@ -89,11 +157,7 @@ spec:
velero:
credentials:
useSecret: true
secretContents:
cloud: |
[default]
aws_access_key_id=abcd1234
aws_secret_access_key=abcc1234
existingSecret: "velero-backup-target" # Name of a pre-existing secret in the Velero namespace
configuration:
backupStorageLocation:
- name: default
Expand All @@ -103,13 +167,23 @@ spec:
config:
region: minio-default
s3ForcePathStyle: true
s3Url: http://192.168.56.1:9001 # Insert your url here
publicUrl: http://localhost:9001 # Insert your url here
s3Url: http://192.168.56.1:9000 # Insert your url here
publicUrl: http://localhost:9000 # Insert your url here
```
Die folgenden Parameter in der `valuesYamlOverwrite` sind für die Backup-Konfiguration relevant:

| Parameter | Beschreibung |
|------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------|
| `velero.credentials.existingSecret` | Der Name des oben erstellen Secrets, dass die Zugangsdaten für Velero zum Backup-Speicher enthält |
| `velero.configuration.backupStorageLocation[default].bucket` | Der Name des Buckets für Velero innerhalb des Backup-Speichers |
| `velero.configuration.backupStorageLocation[default].config.s3Url` | Die URL des Backup-Speichers |
| `velero.configuration.backupStorageLocation[default].config.publicUrl` | Die öffentliche URL des Backup-Speichers |

Die Felder `aws_access_key_id`, `aws_secret_access_key_id`, `s3Url` und `publicUrl` sind dementsprechend anzupassen.
Die erstellte `yaml`-Datei für die Velero-Komponente kann mit folgendem Befehl angewendet werden:

`kubectl --namespace ecosystem apply -f k8s-velero.yaml`
```shell
kubectl --namespace ecosystem apply -f k8s-velero.yaml
```

### Installation Backup-Operator

Expand Down Expand Up @@ -185,16 +259,22 @@ Da in einem bestehenden Cluster der Komponenten-Operator Credentials für die He

### Storage-Provisioner

Erstellung des Longhorn-Secrets für den Backup-Speicher:

```shell
kubectl create secret generic longhorn-backup-target --namespace=longhorn-system \
--from-literal=AWS_ENDPOINTS=https://192.168.56.1:9000 \
--from-literal=AWS_ACCESS_KEY_ID=MY-ACCESS-KEY \
--from-literal=AWS_SECRET_ACCESS_KEY=MY-ACCESS-SECRET123
```

Konfiguration k8s-longhorn-values.yaml:

```yaml
backup:
target:
secret:
# aws_endpoint is just the server url to the s3 compatible storage.
aws_endpoint: http://192.168.56.1:9001 # Insert your s3 url here. Ensure that the bucket `longhorn` exists in the Storage
aws_access_key_id: abcd1234
aws_secret_access_key: abcc1234
longhorn:
defaultSettings:
backupTarget: s3://longhorn@dummyregion/
backupTargetCredentialSecret: long-backup-target
```

Installation:
Expand All @@ -211,15 +291,30 @@ Installation:

### Velero

Erstellung des Velero-Secrets für den Backup-Speicher:

```shell
kubectl apply --namespace=ecosystem -f - <<EOF
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: velero-backup-target
stringData:
cloud: |
[default]
aws_access_key_id=MY-VELERO-ACCESS-KEY
aws_secret_access_key=MY-VELERO.ACCESS-SECRET123
EOF
```

Konfiguration values.yaml:

```yaml
velero:
credentials:
useSecret: true
secretContents:
cloud: |
[default]
aws_access_key_id=abcd1234
aws_secret_access_key=abcc1234
existingSecret: "velero-backup-target" # Name of a pre-existing secret in the Velero namespace
configuration:
backupStorageLocation:
- name: default
Expand All @@ -233,9 +328,7 @@ velero:
publicUrl: http://localhost:9001 # Insert your url here
```
Die Felder `aws_access_key_id`, `aws_secret_access_key_id`, `s3Url` und `publicUrl` sind dementsprechend anzupassen.

`helm install k8s-velero oci://registry.cloudogu.com/k8s/k8s-velero --version 5.0.2-4 -f k8s-velero-values.yaml --namespace ecosystem`
`helm install k8s-velero oci://registry.cloudogu.com/k8s/k8s-velero --version 5.0.2-4 -f values.yaml --namespace ecosystem`

### Installation Backup-Operator

Expand Down
Loading

0 comments on commit aba6aca

Please sign in to comment.