diff --git a/docs.json b/docs.json index 642dfd5..5f9e0af 100644 --- a/docs.json +++ b/docs.json @@ -29,6 +29,14 @@ "docs/enterprise/externalsecrets/tutorials/dynamic-credentials" ] }, + { + "icon": "engine", + "group": "Installation", + "pages": [ + "docs/enterprise/externalsecrets/installation/bundle", + "docs/enterprise/externalsecrets/installation/enterprise" + ] + }, { "icon": "wind-turbine", "group": "Generators", diff --git a/docs/enterprise/externalsecrets/get-started.mdx b/docs/enterprise/externalsecrets/get-started.mdx index 2509bed..78fc4e7 100644 --- a/docs/enterprise/externalsecrets/get-started.mdx +++ b/docs/enterprise/externalsecrets/get-started.mdx @@ -6,6 +6,11 @@ import { Accordion, CodeBlock } from '@mintlify/components' Welcome to External Secrets Enterprise! This guide will walk you through the process of setting up a local environment to try out the product. + +This quickstart guide uses our `bundle` chart to install all of External Secrets Enterprise components. +If you want to install only the External Secrets Enterprise Core Component, see the [Installation](./installation/enterprise) guide. + + ## Prerequisites Before you begin, make sure you have the following tools installed: @@ -41,9 +46,15 @@ helm install esi-bundle \ --create-namespace \ --set global.trialLicenseAccepted=true \ --set global.waitForReady=true \ + --set traefik.enabled=true \ --timeout 10m \ oci://oci.externalsecrets.com/external-secrets-inc-registry/public/charts/esi-bundle ``` + +By default, the bundle helm chart does not install an ingress controller. +You can add one by adding the `--set traefik.enabled=true` flag to your helm install + + If you are installing from `external-secrets-operator`, there is a path for a safe upgrade. @@ -58,9 +69,14 @@ helm upgrade $ESO_RELEASE_NAME \ --set external-secrets.namespaceOverride=$ESO_RELEASE_NAMESPACE \ --set global.trialLicenseAccepted=true \ --set global.waitForReady=true \ + --set traefik.enabled=true \ --timeout 10m \ oci://oci.externalsecrets.com/external-secrets-inc-registry/public/charts/esi-bundle ``` + +By default, the bundle helm chart does not install an ingress controller. +You can add one by adding the `--set traefik.enabled=true` flag to your helm install + diff --git a/docs/enterprise/externalsecrets/installation/bundle.mdx b/docs/enterprise/externalsecrets/installation/bundle.mdx new file mode 100644 index 0000000..72d8419 --- /dev/null +++ b/docs/enterprise/externalsecrets/installation/bundle.mdx @@ -0,0 +1,228 @@ +# Installing the External Secrets Enterprise Bundle + +This document provides instructions for installing the External Secrets Enterprise bundle, which includes both the External Secrets Operator and the Enterprise UI. + +## What's Included + +The bundle installs the following components: + +* **External Secrets Enterprise**: The core component for managing secrets and enterprise edition of External Secrets Operator. +* **Enterprise UI**: A graphical user interface for managing secrets. +* **Enterprise Backend components**: handling authentication, authorization, and other enterprise features. +* **Ingress Controller**: Traefik is installed as an Ingress controller to expose the UI. + +## Installation Commands + + + + +Install the External Secrets Enterprise bundle using our Helm chart. This chart includes all the necessary components, including the web UI. + +```bash +helm install esi-bundle \ + --namespace esi-bundle \ + --create-namespace \ + --set global.trialLicenseAccepted=true \ + --set global.waitForReady=true \ + --timeout 10m \ + oci://oci.externalsecrets.com/external-secrets-inc-registry/public/charts/esi-bundle +``` + + +If you are installing from `external-secrets-operator`, there is a path for a safe upgrade. + +All you need to do is to use the same `releaseName` and `namespace` as you used for the `external-secrets-operator` release: +```bash +ESO_RELEASE_NAME=external-secrets +ESO_RELEASE_NAMESPACE=external-secrets +helm upgrade $ESO_RELEASE_NAME \ + --namespace $ESO_RELEASE_NAMESPACE \ + --set global.namespaces.externalSecrets.createNamespace=false \ + --set external-secrets.namespaceOverride=$ESO_RELEASE_NAMESPACE \ + --set global.trialLicenseAccepted=true \ + --set global.waitForReady=true \ + --timeout 10m \ + oci://oci.externalsecrets.com/external-secrets-inc-registry/public/charts/esi-bundle +``` + + + + +The Helm installation will wait until everything is up and running. +This can take up to 10 minutes due to image downloads. + +You can disable this behavior by setting `global.waitForReady=false`. + + +## Helm Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| audit-listener.enabled | bool | `false` | | +| audit-listener.fullnameOverride | string | `"audit-listener"` | | +| audit-listener.host | string | `"grpc.prod.externalsecrets.com"` | | +| audit-listener.image.pullPolicy | string | `"IfNotPresent"` | | +| audit-listener.image.repository | string | `"us-central1-docker.pkg.dev/external-secrets-inc-registry/public/audit-listener"` | | +| audit-listener.listenerId | string | `"test-listener"` | | +| audit-listener.namespaceOverride | string | `"audit-listener"` | | +| audit-listener.port | int | `443` | | +| audit-listener.pullSecret.create | bool | `true` | | +| audit-listener.pullSecret.email | string | `""` | | +| audit-listener.pullSecret.name | string | `"esi-registry-credentials"` | | +| audit-listener.pullSecret.value | string | `""` | | +| audit-listener.tenantId | string | `"test-tenant"` | | +| audit-poc-backend.affinity | object | `{}` | | +| audit-poc-backend.autoscaling.enabled | bool | `false` | | +| audit-poc-backend.database.enabled | bool | `true` | | +| audit-poc-backend.database.type | string | `"postgresql"` | | +| audit-poc-backend.db.adminDB.value | string | `"admin"` | | +| audit-poc-backend.db.database.value | string | `"admin"` | | +| audit-poc-backend.db.enabled | bool | `true` | | +| audit-poc-backend.db.host.value | string | `"mongodb"` | | +| audit-poc-backend.db.password.value | string | `"audit_poc"` | | +| audit-poc-backend.db.port.value | int | `27017` | | +| audit-poc-backend.db.user.value | string | `"audit_poc"` | | +| audit-poc-backend.enabled | bool | `true` | | +| audit-poc-backend.fullnameOverride | string | `"audit-backend"` | | +| audit-poc-backend.image.pullPolicy | string | `"IfNotPresent"` | | +| audit-poc-backend.image.repository | string | `"us-central1-docker.pkg.dev/external-secrets-inc-registry/public/audit-poc-backend"` | | +| audit-poc-backend.livenessProbe | object | `{}` | | +| audit-poc-backend.metrics.enabled | bool | `false` | | +| audit-poc-backend.namespaceOverride | string | `"audit-backend"` | | +| audit-poc-backend.nodeSelector | object | `{}` | | +| audit-poc-backend.podMonitor.enabled | bool | `false` | | +| audit-poc-backend.readinessProbe | object | `{}` | | +| audit-poc-backend.resources | object | `{}` | | +| audit-poc-backend.tolerations | list | `[]` | | +| audit-poc-backend.volumeMounts | list | `[]` | | +| audit-poc-backend.volumes | list | `[]` | | +| eso-server.enabled | bool | `true` | | +| eso-server.fullnameOverride | string | `"eso-server"` | | +| eso-server.image.pullPolicy | string | `"IfNotPresent"` | | +| eso-server.image.repository | string | `"us-central1-docker.pkg.dev/external-secrets-inc-registry/public/eso-server"` | | +| eso-server.namespaceOverride | string | `"eso-server"` | | +| eso-server.podMonitor.enabled | bool | `false` | | +| eso-server.service.port | int | `8080` | | +| eso-server.service.type | string | `"ClusterIP"` | | +| eso-server.tenantManager.url | string | `"http://tenant-manager.tenant-manager:8080"` | | +| external-secrets.certController.image.repository | string | `"us-central1-docker.pkg.dev/external-secrets-inc-registry/public/external-secrets"` | | +| external-secrets.controller.replicas | int | `1` | | +| external-secrets.enabled | bool | `true` | | +| external-secrets.fullnameOverride | string | `"external-secrets"` | | +| external-secrets.image.repository | string | `"us-central1-docker.pkg.dev/external-secrets-inc-registry/public/external-secrets"` | | +| external-secrets.namespaceOverride | string | `"external-secrets"` | | +| external-secrets.podMonitor.enabled | bool | `false` | | +| external-secrets.serviceMonitor.enabled | bool | `false` | | +| external-secrets.webhook.enabled | bool | `true` | | +| external-secrets.webhook.image.repository | string | `"us-central1-docker.pkg.dev/external-secrets-inc-registry/public/external-secrets"` | | +| global.certificate.enabled | bool | `false` | | +| global.certificate.issuerRef.kind | string | `"Issuer"` | | +| global.certificate.issuerRef.name | string | `"you-issuer-name"` | | +| global.certificate.issuerRef.namespace | string | `"your-issuer-namespace"` | | +| global.certificate.secretName | string | `"ingress-tls"` | | +| global.createNamespaces | bool | `true` | | +| global.domains.auditBackend | string | `"audit-backend.external-secrets.127.0.0.1.sslip.io"` | | +| global.domains.esoServer | string | `"eso-server.external-secrets.127.0.0.1.sslip.io"` | | +| global.domains.tenantManager | string | `"tenant-manager.external-secrets.127.0.0.1.sslip.io"` | | +| global.domains.webUi | string | `"ui.external-secrets.127.0.0.1.sslip.io"` | | +| global.ingress.enabled | bool | `true` | | +| global.ingressPort | int | `8080` | | +| global.ingressSecurePort | int | `8443` | | +| global.licenseFile | string | `"# your-enterprise-license-goes-here\n"` | | +| global.namespace | string | `"esi"` | | +| global.namespaces.externalSecrets.createNamespace | bool | `true` | | +| global.trialLicenseAccepted | bool | `false` | | +| global.waitForReady | bool | `false` | | +| mongodb.auth.database | string | `"admin"` | | +| mongodb.auth.enabled | bool | `true` | | +| mongodb.auth.password | string | `"audit_poc"` | | +| mongodb.auth.rootPassword | string | `"admin123"` | | +| mongodb.auth.rootUser | string | `"admin"` | | +| mongodb.auth.username | string | `"audit_poc"` | | +| mongodb.enabled | bool | `true` | | +| mongodb.external.adminDatabase | string | `"admin"` | | +| mongodb.external.database | string | `"admin"` | | +| mongodb.external.host | string | `"localhost"` | | +| mongodb.external.password | string | `"audit_poc"` | | +| mongodb.external.port | int | `27017` | | +| mongodb.external.username | string | `"audit_poc"` | | +| mongodb.fullnameOverride | string | `"mongodb"` | | +| mongodb.global.fullnameOverride | string | `"mongodb"` | | +| mongodb.global.namespaceOverride | string | `"audit-backend"` | | +| mongodb.namespaceOverride | string | `"audit-backend"` | | +| mongodb.persistence.enabled | bool | `true` | | +| mongodb.persistence.size | string | `"8Gi"` | | +| mongodb.service.ports.mongodb | int | `27017` | | +| mongodb.service.type | string | `"ClusterIP"` | | +| postgresql.auth.database | string | `"tenant_manager"` | | +| postgresql.auth.enablePostgresUser | bool | `true` | | +| postgresql.auth.password | string | `"tenant_manager"` | | +| postgresql.auth.postgresPassword | string | `"postgres123"` | | +| postgresql.auth.username | string | `"tenant_manager"` | | +| postgresql.enabled | bool | `true` | | +| postgresql.external.database | string | `"tenant_manager"` | | +| postgresql.external.host | string | `"localhost"` | | +| postgresql.external.password | string | `"tenant_manager"` | | +| postgresql.external.port | int | `5432` | | +| postgresql.external.username | string | `"tenant_manager"` | | +| postgresql.fullnameOverride | string | `"postgresql"` | | +| postgresql.global.fullnameOverride | string | `"postgresql"` | | +| postgresql.global.namespaceOverride | string | `"tenant-manager"` | | +| postgresql.namespaceOverride | string | `"tenant-manager"` | | +| postgresql.primary.persistence.enabled | bool | `true` | | +| postgresql.primary.persistence.size | string | `"8Gi"` | | +| postgresql.primary.service.ports.postgresql | int | `5432` | | +| postgresql.primary.service.type | string | `"ClusterIP"` | | +| reloader.enabled | bool | `true` | | +| reloader.fullnameOverride | string | `"reloader"` | | +| reloader.image.repository | string | `"ghcr.io/external-secrets-inc/reloader"` | | +| reloader.namespaceOverride | string | `"reloader"` | | +| reloader.podMonitor.enabled | bool | `false` | | +| tenant-manager.affinity | object | `{}` | | +| tenant-manager.bootstrap.roles.created_user.policies[0].action | string | `"read"` | | +| tenant-manager.bootstrap.roles.created_user.policies[0].attr | string | `"*"` | | +| tenant-manager.bootstrap.roles.created_user.policies[0].rego | string | `"package authz\nallow = true\n"` | | +| tenant-manager.bootstrap.roles.created_user.policies[0].resource | string | `"*"` | | +| tenant-manager.bootstrap.roles.created_user.policies[0].role | string | `"created_user_reader"` | | +| tenant-manager.bootstrap.roles.created_user.policies[1].action | string | `"GET"` | | +| tenant-manager.bootstrap.roles.created_user.policies[1].attr | string | `"*"` | | +| tenant-manager.bootstrap.roles.created_user.policies[1].rego | string | `"package authz\nallow = true\n"` | | +| tenant-manager.bootstrap.roles.created_user.policies[1].resource | string | `"*"` | | +| tenant-manager.bootstrap.roles.created_user.policies[1].role | string | `"created_user_getter"` | | +| tenant-manager.bootstrap.roles.created_user.policies[2].action | string | `"POST"` | | +| tenant-manager.bootstrap.roles.created_user.policies[2].attr | string | `"*"` | | +| tenant-manager.bootstrap.roles.created_user.policies[2].rego | string | `"package authz\nallow = true\n"` | | +| tenant-manager.bootstrap.roles.created_user.policies[2].resource | string | `"/api/authz/check"` | | +| tenant-manager.bootstrap.roles.created_user.policies[2].role | string | `"check_authz"` | | +| tenant-manager.bootstrap.roles.signup_user.policies[0].action | string | `"*"` | | +| tenant-manager.bootstrap.roles.signup_user.policies[0].attr | string | `"*"` | | +| tenant-manager.bootstrap.roles.signup_user.policies[0].rego | string | `"package authz\nallow = true\n"` | | +| tenant-manager.bootstrap.roles.signup_user.policies[0].resource | string | `"*"` | | +| tenant-manager.bootstrap.roles.signup_user.policies[0].role | string | `"signup_user_admin"` | | +| tenant-manager.enabled | bool | `true` | | +| tenant-manager.fullnameOverride | string | `"tenant-manager"` | | +| tenant-manager.image.pullPolicy | string | `"IfNotPresent"` | | +| tenant-manager.image.repository | string | `"us-central1-docker.pkg.dev/external-secrets-inc-registry/public/tenant-manager"` | | +| tenant-manager.livenessProbe | object | `{}` | | +| tenant-manager.metrics.enabled | bool | `false` | | +| tenant-manager.namespaceOverride | string | `"tenant-manager"` | | +| tenant-manager.nodeSelector | object | `{}` | | +| tenant-manager.podMonitor.enabled | bool | `false` | | +| tenant-manager.readinessProbe | object | `{}` | | +| tenant-manager.resources | object | `{}` | | +| tenant-manager.sql.enabled | bool | `true` | | +| tenant-manager.sql.host.value | string | `"postgresql"` | | +| tenant-manager.sqlProxy.enabled | bool | `false` | | +| tenant-manager.tolerations | list | `[]` | | +| tenant-manager.volumeMounts | list | `[]` | | +| tenant-manager.volumes | list | `[]` | | +| traefik.enabled | bool | `false` | | +| traefik.fullnameOverride | string | `"traefik"` | | +| traefik.namespaceOverride | string | `"traefik"` | | +| traefik.service.type | string | `"LoadBalancer"` | | +| web-ui.enabled | bool | `true` | | +| web-ui.fullnameOverride | string | `"web-ui"` | | +| web-ui.image.pullPolicy | string | `"IfNotPresent"` | | +| web-ui.image.repository | string | `"us-central1-docker.pkg.dev/external-secrets-inc-registry/public/web-ui"` | | +| web-ui.namespaceOverride | string | `"web-ui"` | | +| web-ui.podMonitor.enabled | bool | `false` | | diff --git a/docs/enterprise/externalsecrets/installation/enterprise.mdx b/docs/enterprise/externalsecrets/installation/enterprise.mdx new file mode 100644 index 0000000..2fc286c --- /dev/null +++ b/docs/enterprise/externalsecrets/installation/enterprise.mdx @@ -0,0 +1,37 @@ +# Installing External Secrets Enterprise + +This document provides instructions for installing External Secrets Enterprise without the UI components. + +## What's Included + +This installation method only install External Secrets Enterprise - a drop-in replacement for +external-secrets operator and adds all of the CRDs below: +* Workflows +* Scans +* Targets +* Federation + +## Installation Commands +Install the External Secrets Enterprise using our Helm chart. + + + +```bash +helm install external-secrets \ + --namespace external-secrets \ + --create-namespace \ + oci://oci.externalsecrets.com/external-secrets-inc-registry/public/charts/external-secrets +``` + + + +To upgrade your existing `external-secrets` operator installation, simply replace the release names to match: +```bash +ESO_RELEASE_NAME=external-secrets +ESO_RELEASE_NAMESPACE=external-secrets +helm upgrade $ESO_RELEASE_NAME \ + --namespace $ESO_RELEASE_NAMESPACE \ + oci://oci.externalsecrets.com/external-secrets-inc-registry/public/charts/external-secrets +``` + +