-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
added docs for external secret operator plugin
- Loading branch information
1 parent
22109ff
commit 07a69e8
Showing
1 changed file
with
72 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
--- | ||
title: External Secret Operator plugin | ||
sidebar_label: External Secret Operator | ||
sidebar_position: 3 | ||
sidebar_class_name: pro | ||
--- | ||
|
||
import ProAdmonition from '@site/vcluster/_partials/admonitions/pro-admonition.mdx' | ||
|
||
<ProAdmonition/> | ||
|
||
This documents the use of the External Secret Operator (ESO) plugin for vCluster. | ||
This plugin allows you to mutualise the host cluster's external secret operator, and seamlessly use existing stores inside virtual clusters. | ||
|
||
## Prerequisites | ||
|
||
Before proceeding, ensure you have the following: | ||
- Kubernetes CLI (kubectl) installed and configured | ||
- Helm 3.x installed | ||
- Access to two Kubernetes clusters (one for the control plane and one for the workloads), with ESO installed | ||
- Basic familiarity with Kubernetes concepts like namespaces, contexts, and YAML configurations | ||
|
||
## Part 1: Deploy ESO on the host cluster. | ||
|
||
To install ESO on your kubernetes cluster, you can run | ||
|
||
```shell | ||
helm repo add external-secrets https://charts.external-secrets.io | ||
|
||
helm install external-secrets \ | ||
external-secrets/external-secrets \ | ||
-n external-secrets \ | ||
--create-namespace | ||
``` | ||
|
||
or follow the steps from ESO documentation [here](https://external-secrets.io/latest/introduction/getting-started/) | ||
|
||
## Part 2: Create your virtual cluster using the ESO plugin | ||
Once the operator is installed, you can create a virtual cluster using the following `vcluster.yaml` file. | ||
|
||
```yaml | ||
plugins: | ||
eso: | ||
image: ghcr.io/loft-sh/eso-plugin | ||
rbac: | ||
role: | ||
extraRules: | ||
- apiGroups: ["external-secrets.io"] | ||
resources: ["*"] | ||
verbs: ["create", "delete", "patch", "update", "get", "list", "watch"] | ||
clusterRole: | ||
extraRules: | ||
- apiGroups: ["apiextensions.k8s.io"] | ||
resources: ["customresourcedefinitions"] | ||
verbs: ["get", "list", "watch"] | ||
- apiGroups: ["external-secrets.io"] | ||
resources: ["clustersecretstores"] | ||
verbs: ["get", "list", "watch"] | ||
# Make sure the cluster role is enabled or otherwise the plugin won't be able to watch custom | ||
# resource definitions. | ||
rbac: | ||
clusterRole: | ||
enabled: true | ||
``` | ||
and then run `vcluster create my-vcluster -f vcluster.yaml` | ||
|
||
## Part 3: Configuration | ||
|
||
Once your virtual cluster is up and running, the plugin should have installed the relevant CRDs, and synchronized ClusterSecretStores into your virtual cluster. | ||
|
||
To add namespaced SecretStores into your virtual cluster, you will have to chose whether you want them to be converted into ClusterSecretStores inside the virtual cluster, or put into specific namespaces. To add a namespaced store as a ClusterSecretStore, just add the following annotation to it `loft.sh/convert-to-cluster-store: <name>`. To add it to multiple namespaces as namespaced stores, add the following annotation `loft.sh/to-namespaces: <namespace-1>,<namespace-2>`, the value of the annotation being a comma separated list of destination namespaces. The two annotations are mutually exclusive, and the cluster store annotation will have precedence over namespaced one. |