Skip to content

Commit ca5a499

Browse files
committed
Adding an example for the admin external secret implementation
1 parent 992ea01 commit ca5a499

File tree

4 files changed

+74
-0
lines changed

4 files changed

+74
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Providing an external secret for default user credentials
2+
3+
By default admin credentials for a RabbitmqCluster cluster are stored in a Kubernetes secret called INSTANCE-default-user, where INSTANCE is the name of the RabbitmqCluster object.
4+
5+
There are some cases where you want to have the flexibility to specify your own credentials in a different secret. For example you may need to use tools like ExternalSecret operator which reads information from external APIs (like a Cloud secret provider) and automatically injects the values into a Kubernetes Secret.
6+
7+
The creation of this secret can delay, so the RabbitMQ cluster statefulset need to delay till the secret is not created.
8+
9+
To do this we provide an option in the CRD called externalsecret like:
10+
11+
```
12+
apiVersion: rabbitmq.com/v1beta1
13+
kind: RabbitmqCluster
14+
metadata:
15+
name: external-secret-user
16+
spec:
17+
service:
18+
type: LoadBalancer
19+
replicas: 1
20+
secretBackend:
21+
externalSecret:
22+
name: "my-secret"
23+
```
24+
25+
When this externalSecret field is specified the default secret will not be generated by the cluster operator but the statefulset will wait until my-secret will be generated.
26+
27+
The secret needs to be in the same format as our default-user secret (info are specified in base64 in this case) so like:
28+
29+
```
30+
apiVersion: v1
31+
data:
32+
default_user.conf: ZGVmYXVsdF91c2VyID0gZGVmYXVsdF91c2VyX2htR1pGaGRld3E2NVA0ZElkeDcKZGVmYXVsdF9wYXNzID0gcWM5OG40aUdEN01ZWE1CVkZjSU8ybXRCNXZvRHVWX24K
33+
host: dmF1bHQtZGVmYXVsdC11c2VyLmRlZmF1bHQuc3Zj
34+
password: cWM5OG40aUdEN01ZWE1CVkZjSU8ybXRCNXZvRHVWX24=
35+
port: NTY3Mg==
36+
provider: cmFiYml0bXE=
37+
type: cmFiYml0bXE=
38+
username: ZGVmYXVsdF91c2VyX2htR1pGaGRld3E2NVA0ZElkeDc=
39+
kind: Secret
40+
metadata:
41+
name: my-secret
42+
namespace: rabbitmq-system
43+
type: Opaque
44+
```
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: v1
2+
data:
3+
default_user.conf: ZGVmYXVsdF91c2VyID0gZGVmYXVsdF91c2VyX2htR1pGaGRld3E2NVA0ZElkeDcKZGVmYXVsdF9wYXNzID0gcWM5OG40aUdEN01ZWE1CVkZjSU8ybXRCNXZvRHVWX24K
4+
host: dmF1bHQtZGVmYXVsdC11c2VyLmRlZmF1bHQuc3Zj
5+
password: cWM5OG40aUdEN01ZWE1CVkZjSU8ybXRCNXZvRHVWX24=
6+
port: NTY3Mg==
7+
provider: cmFiYml0bXE=
8+
type: cmFiYml0bXE=
9+
username: ZGVmYXVsdF91c2VyX2htR1pGaGRld3E2NVA0ZElkeDc=
10+
kind: Secret
11+
metadata:
12+
name: my-secret
13+
type: Opaque
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: rabbitmq.com/v1beta1
2+
kind: RabbitmqCluster
3+
metadata:
4+
name: external-secret-user
5+
spec:
6+
service:
7+
type: LoadBalancer
8+
replicas: 1
9+
secretBackend:
10+
externalSecret:
11+
name: "my-secret"
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/bin/bash
2+
set -eo pipefail
3+
4+
echo "Creating external secret"
5+
6+
kubectl create -f my-secret.yml

0 commit comments

Comments
 (0)