Secret Manager selection is crucial for securing your application. Different
modes can be set up depending on the deployment type. Our system supports four
primary secret manager types.
The SecretManagerFactory is a utility class used to create instances of different types of secret managers. It leverages the Factory design pattern to abstract the creation logic based on the type of secret manager required. The factory supports creating instances of File, GCP, Kubernetes, and Vault Secret Managers.The SECRET_MANAGER_TYPE environment variable plays a crucial role in the SecretManagerFactory for determining the default type of secret manager to be instantiated when no specific type is provided in the method call.Functionality:Default Secret Manager: If the SECRET_MANAGER_TYPE environment variable is set, its value dictates the default type of secret manager that the factory will create.
The value of this variable should correspond to one of the types defined in SecretManagerTypes enum (FILE, AWS, GCP, K8S, VAULT, DB).Example Configuration:Setting SECRET_MANAGER_TYPE=GCP in the environment will make the factory create instances of GcpSecretManager by default.
If SECRET_MANAGER_TYPE is not set or is set to FILE, the factory defaults to creating instances of FileSecretManager.
This environment variable provides flexibility and ease of configuration, allowing different secret managers to be used in different environments or scenarios without code changes.
The FileSecretManager is a concrete implementation of the BaseSecretManager for managing secrets stored in the file system. It uses a specified directory (defaulting to ./) to read, write, and delete secret files.Configuration:Set the environment variable SECRET_MANAGER_DIRECTORY to specify the directory where secrets are stored. If not set, defaults to the current directory (./).Usage:
Secrets are stored as files in the specified directory.
Reading a secret involves fetching content from a file.
Writing a secret creates or updates a file with the given content.
The AwsSecretManager integrates with Amazon Web Services’ Secrets Manager service for secure secret management. It provides a robust solution for storing and managing secrets in AWS environments.Configuration:Required environment variables:
AWS_REGION: The AWS region where your secrets are stored
For local development:
AWS_ACCESS_KEY_ID: Your AWS access key
AWS_SECRET_ACCESS_KEY: Your AWS secret access key
Optional:
AWS_KMS_KEY_ID: The KMS key ID to use for encrypting secrets
AWS_SECRET_MANAGER_TAGS: Comma-separated list of tags to add to the secret in AWS Secrets Manager, e.g. key=value,key2=value2
AWS_SECRET_ROTATION_ENABLED: Set to true to enable automatic rotation of secrets (default: false)
AWS_SECRET_ROTATION_DAYS: Number of days between automatic rotations (default: 30)
AWS_SECRET_ROTATION_LAMBDA_ARN: ARN of the Lambda function to use for secret rotation, required if rotation is enabled
Usage:
Manages secrets using AWS Secrets Manager service
Supports creating, updating, reading, and deleting secrets
Can automatically configure secret rotation policies when creating new secrets
Secret rotation is a security best practice that automatically updates secrets at regular intervals. When enabled, Keep will configure newly created secrets with a rotation schedule.To use secret rotation:
Create a Lambda function for rotating your secrets (AWS provides blueprints for common rotation scenarios)
Set AWS_SECRET_ROTATION_ENABLED=true in your environment
Set AWS_SECRET_ROTATION_LAMBDA_ARN to the ARN of your rotation Lambda function
Optionally set AWS_SECRET_ROTATION_DAYS to customize the rotation interval
Example Lambda ARN format: arn:aws:lambda:region:account-id:function:function-nameNote: Different secret types (database credentials, API keys, etc.) require different rotation logic. Make sure your Lambda function is appropriate for the type of secrets you’re storing.
The KubernetesSecretManager interfaces with Kubernetes’ native secrets system.It manages secrets within a specified Kubernetes namespace and is designed to operate within a Kubernetes cluster.
K8S_NAMESPACE=keep - environment variable to specify the Kubernetes namespace. Defaults to .metadata.namespace if not set. Assumes Kubernetes configurations (like service account tokens) are properly set up when running within a cluster.
K8S_VERIFY_SSL_CERT=true - environment variable to specify whether to verify the SSL certificate of the Kubernetes API. Defaults to true.
Usage:
Secrets are stored as Kubernetes Secret objects.
Provides functionalities to create, retrieve, and delete Kubernetes secrets.
Handles base64 encoding and decoding as required by Kubernetes.
The Kubernetes Secret Manager integration allows Keep to fetch environment variables from Kubernetes Secrets.For sensitive environment variables, such as DATABASE_CONNECTION_STRING, it is recommended to store as a secret:
After creating the secret, update the values.yaml so the helm chart will inject the secret as env var:
backend: enabled: true waitForDatabase: true databaseConnectionStringFromSecret: enabled: true # Enable using secret for database connection secretName: "keep-db-secret" # Name of the secret we created secretKey: "connection_string" # Key in the secret containing our connection string
The GcpSecretManager utilizes Google Cloud’s Secret Manager service for secret management. It requires setting up with Google Cloud credentials and a project ID.Configuration:Ensure the environment variable GOOGLE_CLOUD_PROJECT is set with your Google Cloud project ID.Usage:
Secrets are managed using Google Cloud’s Secret Manager.
Supports operations to create, access, and delete secrets in the cloud.
Integrates with OpenTelemetry for tracing secret management operations.
The VaultSecretManager is tailored for Hashicorp Vault, a tool for managing sensitive data. It supports token-based authentication as well as Kubernetes-based authentication for Vault.Configuration:
Set HASHICORP_VAULT_ADDR to the Vault server address. Defaults to http://localhost:8200.
Use HASHICORP_VAULT_TOKEN for token-based authentication.
Set HASHICORP_VAULT_USE_K8S to True and provide HASHICORP_VAULT_K8S_ROLE for Kubernetes-based authentication.
Usage:
Manages secrets in a Hashicorp Vault server.
Provides methods to write, read, and delete secrets from Vault.
Supports different Vault authentication methods including static tokens and Kubernetes service account tokens.
The DbSecretManager is a concrete implementation of the BaseSecretManager for managing secrets stored in the DB. It uses table secret to read, write, and delete secret.Configuration:Ensure table secret exists.Usage:
Secrets are stored in table secret.
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Keep","colors":{"primary":"#FA9E34","light":"#FA9E34","dark":"#FF9F36"},"favicon":"https://mintcdn.com/keep-docs/V9QgKlxazxMQEv1i/favicon.svg?fit=max\u0026auto=format\u0026n=V9QgKlxazxMQEv1i\u0026q=85\u0026s=96514098e5e28bb0fa4f6598f84714bc","logo":{"light":"https://mintcdn.com/keep-docs/LjPasDs8HZ8u-5Qy/logo/light.png?fit=max\u0026auto=format\u0026n=LjPasDs8HZ8u-5Qy\u0026q=85\u0026s=906a0da7c13acde19b4fcc061b3ebfa2","dark":"https://mintcdn.com/keep-docs/LjPasDs8HZ8u-5Qy/logo/dark.png?fit=max\u0026auto=format\u0026n=LjPasDs8HZ8u-5Qy\u0026q=85\u0026s=20e5dff7dd3cfeccd363c3729ccd08f8"},"navbar":{"links":[{"label":"Platform","href":"https://platform.keephq.dev/"}],"primary":{"type":"github","href":"https://github.com/keephq/keep"}},"footer":{"socials":{"github":"https://github.com/keephq/keep"}},"integrations":{"posthog":{"apiKey":"phc_mYqciA4RO5g48K6KnmZtftn5xQa5625Aao7vsVC0gJ9"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"keep-docs","hasAudioNarration":false,"actualSubdomain":"keep-docs","customDomains":["docs.keephq.dev"],"gitSource":{"type":"github","owner":"keephq","repo":"keep","deployBranch":"main","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aeae7c6821d0792126ba2a5","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"Providers","count":127},{"language":"default","tag":"Supported Providers","count":123},{"language":"default","tag":"Keep CLI","count":32},{"language":"default","tag":"Commands","count":29},{"language":"default","tag":"Deployment","count":27},{"language":"default","tag":"Workflow Automation","count":16},{"language":"default","tag":"AIOps","count":13},{"language":"default","tag":"Authentication","count":11},{"language":"default","tag":"Overview","count":11},{"language":"default","tag":"Syntax","count":9}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"deployment/secret-store","slug":"/deployment/secret-store","pageMetadata":{"title":"Secret Store","sidebarTitle":"Secret Store","description":null,"href":"/deployment/secret-store"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Secret Manager selection is crucial for securing your application. Different\nmodes can be set up depending on the deployment type. Our system supports four\nprimary secret manager types.`})}),`\n`,_jsx(Heading,{level:`2`,id:`secret-manager-factory`,children:`Secret Manager Factory`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`SecretManagerFactory`}),` is a utility class used to create instances of different types of secret managers. It leverages the Factory design pattern to abstract the creation logic based on the type of secret manager required. The factory supports creating instances of File, GCP, Kubernetes, and Vault Secret Managers.`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`SECRET_MANAGER_TYPE`}),` environment variable plays a crucial role in the SecretManagerFactory for determining the default type of secret manager to be instantiated when no specific type is provided in the method call.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Functionality`}),`:`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Default Secret Manager`}),`: If the `,_jsx(_components.code,{children:`SECRET_MANAGER_TYPE`}),` environment variable is set, its value dictates the default type of secret manager that the factory will create.\nThe value of this variable should correspond to one of the types defined in SecretManagerTypes enum (`,_jsx(_components.code,{children:`FILE`}),`, `,_jsx(_components.code,{children:`AWS`}),`, `,_jsx(_components.code,{children:`GCP`}),`, `,_jsx(_components.code,{children:`K8S`}),`, `,_jsx(_components.code,{children:`VAULT`}),`, `,_jsx(_components.code,{children:`DB`}),`).`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Example Configuration`}),`:`]}),`\n`,_jsxs(_components.p,{children:[`Setting `,_jsx(_components.code,{children:`SECRET_MANAGER_TYPE=GCP`}),` in the environment will make the factory create instances of GcpSecretManager by default.\nIf `,_jsx(_components.code,{children:`SECRET_MANAGER_TYPE`}),` is not set or is set to `,_jsx(_components.code,{children:`FILE`}),`, the factory defaults to creating instances of FileSecretManager.\nThis environment variable provides flexibility and ease of configuration, allowing different secret managers to be used in different environments or scenarios without code changes.`]}),`\n`,_jsx(Heading,{level:`2`,id:`file-secret-manager`,children:`File Secret Manager`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`FileSecretManager`}),` is a concrete implementation of the BaseSecretManager for managing secrets stored in the file system. It uses a specified directory (defaulting to ./) to read, write, and delete secret files.`]}),`\n`,_jsx(_components.p,{children:`Configuration:`}),`\n`,_jsxs(_components.p,{children:[`Set the environment variable `,_jsx(_components.code,{children:`SECRET_MANAGER_DIRECTORY`}),` to specify the directory where secrets are stored. If not set, defaults to the current directory (./).`]}),`\n`,_jsx(_components.p,{children:`Usage:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Secrets are stored as files in the specified directory.`}),`\n`,_jsx(_components.li,{children:`Reading a secret involves fetching content from a file.`}),`\n`,_jsx(_components.li,{children:`Writing a secret creates or updates a file with the given content.`}),`\n`,_jsx(_components.li,{children:`Deleting a secret removes the corresponding file.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`aws-secret-manager`,children:`AWS Secret Manager`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`AwsSecretManager`}),` integrates with Amazon Web Services’ Secrets Manager service for secure secret management. It provides a robust solution for storing and managing secrets in AWS environments.`]}),`\n`,_jsx(_components.p,{children:`Configuration:`}),`\n`,_jsx(_components.p,{children:`Required environment variables:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`AWS_REGION`}),`: The AWS region where your secrets are stored`]}),`\n`,_jsxs(_components.li,{children:[`For local development:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`AWS_ACCESS_KEY_ID`}),`: Your AWS access key`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`AWS_SECRET_ACCESS_KEY`}),`: Your AWS secret access key\nOptional:`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`AWS_KMS_KEY_ID`}),`: The KMS key ID to use for encrypting secrets`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`AWS_SECRET_MANAGER_TAGS`}),`: Comma-separated list of tags to add to the secret in AWS Secrets Manager, e.g. `,_jsx(_components.code,{children:`key=value,key2=value2`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`AWS_SECRET_ROTATION_ENABLED`}),`: Set to `,_jsx(_components.code,{children:`true`}),` to enable automatic rotation of secrets (default: `,_jsx(_components.code,{children:`false`}),`)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`AWS_SECRET_ROTATION_DAYS`}),`: Number of days between automatic rotations (default: `,_jsx(_components.code,{children:`30`}),`)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`AWS_SECRET_ROTATION_LAMBDA_ARN`}),`: ARN of the Lambda function to use for secret rotation, required if rotation is enabled`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Usage:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Manages secrets using AWS Secrets Manager service`}),`\n`,_jsx(_components.li,{children:`Supports creating, updating, reading, and deleting secrets`}),`\n`,_jsx(_components.li,{children:`Can automatically configure secret rotation policies when creating new secrets`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`aws-secret-rotation`,children:`AWS Secret Rotation`}),`\n`,_jsx(_components.p,{children:`Secret rotation is a security best practice that automatically updates secrets at regular intervals. When enabled, Keep will configure newly created secrets with a rotation schedule.`}),`\n`,_jsx(_components.p,{children:`To use secret rotation:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Create a Lambda function for rotating your secrets (AWS provides blueprints for common rotation scenarios)`}),`\n`,_jsxs(_components.li,{children:[`Set `,_jsx(_components.code,{children:`AWS_SECRET_ROTATION_ENABLED=true`}),` in your environment`]}),`\n`,_jsxs(_components.li,{children:[`Set `,_jsx(_components.code,{children:`AWS_SECRET_ROTATION_LAMBDA_ARN`}),` to the ARN of your rotation Lambda function`]}),`\n`,_jsxs(_components.li,{children:[`Optionally set `,_jsx(_components.code,{children:`AWS_SECRET_ROTATION_DAYS`}),` to customize the rotation interval`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Example Lambda ARN format: `,_jsx(_components.code,{children:`arn:aws:lambda:region:account-id:function:function-name`})]}),`\n`,_jsx(_components.p,{children:`Note: Different secret types (database credentials, API keys, etc.) require different rotation logic. Make sure your Lambda function is appropriate for the type of secrets you’re storing.`}),`\n`,_jsx(Heading,{level:`2`,id:`kubernetes-secret-manager`,children:`Kubernetes Secret Manager`}),`\n`,_jsx(Heading,{level:`3`,id:`overview-2`,children:`Overview`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`KubernetesSecretManager`}),` interfaces with Kubernetes’ native secrets system.`]}),`\n`,_jsx(_components.p,{children:`It manages secrets within a specified Kubernetes namespace and is designed to operate within a Kubernetes cluster.`}),`\n`,_jsx(Heading,{level:`3`,id:`configuration`,children:`Configuration`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`SECRET_MANAGER_TYPE=k8s`})}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`K8S_NAMESPACE=keep`}),` - environment variable to specify the Kubernetes namespace. Defaults to `,_jsx(_components.code,{children:`.metadata.namespace`}),` if not set. Assumes Kubernetes configurations (like service account tokens) are properly set up when running within a cluster.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`K8S_VERIFY_SSL_CERT=true`}),` - environment variable to specify whether to verify the SSL certificate of the Kubernetes API. Defaults to `,_jsx(_components.code,{children:`true`}),`.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Usage:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Secrets are stored as Kubernetes Secret objects.`}),`\n`,_jsx(_components.li,{children:`Provides functionalities to create, retrieve, and delete Kubernetes secrets.`}),`\n`,_jsx(_components.li,{children:`Handles base64 encoding and decoding as required by Kubernetes.`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`environment-variables-from-secrets`,children:`Environment Variables From Secrets`}),`\n`,_jsx(_components.p,{children:`The Kubernetes Secret Manager integration allows Keep to fetch environment variables from Kubernetes Secrets.`}),`\n`,_jsxs(_components.p,{children:[`For sensitive environment variables, such as `,_jsx(_components.code,{children:`DATABASE_CONNECTION_STRING`}),`, it is recommended to store as a secret:`]}),`\n`,_jsx(Heading,{level:`4`,id:`creating-database-connection-secret`,children:`Creating Database Connection Secret`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`19`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`19`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Create the base64 encoded string without newline`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`CONNECTION_STRING_B64`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`$(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`echo`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"mysql+pymysql://user:password@host:3306/dbname\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` base64`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Create the Kubernetes secret`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`kubectl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` create`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` secret`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` generic`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` keep-db-secret`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --namespace=keep`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --from-literal=connection_string=$(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`echo`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -n `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"mysql+pymysql://user:password@host:3306/dbname\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` base64`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Or using a YAML file:`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`cat`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c\u003c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`EOF`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` kubectl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` apply`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -f`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` -`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`apiVersion: v1`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`kind: Secret`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`metadata:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` name: keep-db-secret`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` namespace: keep`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`type: Opaque`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`data:`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` connection_string: $(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`echo`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"mysql+pymysql://user:password@host:3306/dbname\" `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`|`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` base64`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`EOF`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`4`,id:`update-the-helm-values-yaml`,children:`Update the helm Values.yaml`}),`\n`,_jsxs(_components.p,{children:[`After creating the secret, update the `,_jsx(_components.code,{children:`values.yaml`}),` so the helm chart will inject the secret as env var:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`backend:`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` enabled:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` waitForDatabase:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` databaseConnectionStringFromSecret:`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` enabled:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Enable using secret for database connection`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` secretName:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"keep-db-secret\"`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Name of the secret we created`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` secretKey:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"connection_string\"`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Key in the secret containing our connection string`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`4`,id:`apply-with-helm`,children:`Apply with Helm`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# If installing for the first time`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`helm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` keep`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` keephq/keep`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -f`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` values.yaml`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --namespace`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` keep`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# If updating existing installation`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`helm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` upgrade`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` keep`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` keephq/keep`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -f`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` values.yaml`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --namespace`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` keep`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`4`,id:`verify-the-installation`,children:`Verify the installation`}),`\n`,_jsx(_components.p,{children:`Check if the secret is properly created:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`kubectl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` get`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` secret`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` keep-db-secret`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` keep`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Verify the content of the secret is correct:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`kubectl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` get`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` secret`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` keep-db-secret`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` keep`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -o`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` jsonpath='{.data.connection_string}'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` base64`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Verify the pod using the secret:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`kubectl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` get`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` pod`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` keep`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -l`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` app.kubernetes.io/component=backend`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -o`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` yaml`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` grep`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` DATABASE_CONNECTION_STRING`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -A`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 5`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`gcp-secret-manager`,children:`GCP Secret Manager`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`GcpSecretManager`}),` utilizes Google Cloud’s Secret Manager service for secret management. It requires setting up with Google Cloud credentials and a project ID.`]}),`\n`,_jsx(_components.p,{children:`Configuration:`}),`\n`,_jsxs(_components.p,{children:[`Ensure the environment variable `,_jsx(_components.code,{children:`GOOGLE_CLOUD_PROJECT`}),` is set with your Google Cloud project ID.`]}),`\n`,_jsx(_components.p,{children:`Usage:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Secrets are managed using Google Cloud’s Secret Manager.`}),`\n`,_jsx(_components.li,{children:`Supports operations to create, access, and delete secrets in the cloud.`}),`\n`,_jsx(_components.li,{children:`Integrates with OpenTelemetry for tracing secret management operations.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`hashicorp-vault-secret-manager`,children:`Hashicorp Vault Secret Manager`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`VaultSecretManager`}),` is tailored for Hashicorp Vault, a tool for managing sensitive data. It supports token-based authentication as well as Kubernetes-based authentication for Vault.`]}),`\n`,_jsx(_components.p,{children:`Configuration:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Set `,_jsx(_components.code,{children:`HASHICORP_VAULT_ADDR`}),` to the Vault server address. Defaults to `,_jsx(_components.a,{href:`http://localhost:8200`,children:`http://localhost:8200`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Use `,_jsx(_components.code,{children:`HASHICORP_VAULT_TOKEN`}),` for token-based authentication.`]}),`\n`,_jsxs(_components.li,{children:[`Set `,_jsx(_components.code,{children:`HASHICORP_VAULT_USE_K8S`}),` to True and provide `,_jsx(_components.code,{children:`HASHICORP_VAULT_K8S_ROLE`}),` for Kubernetes-based authentication.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Usage:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Manages secrets in a Hashicorp Vault server.`}),`\n`,_jsx(_components.li,{children:`Provides methods to write, read, and delete secrets from Vault.`}),`\n`,_jsx(_components.li,{children:`Supports different Vault authentication methods including static tokens and Kubernetes service account tokens.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`db-secret-manager`,children:`DB Secret Manager`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`DbSecretManager`}),` is a concrete implementation of the BaseSecretManager for managing secrets stored in the DB. It uses table `,_jsx(_components.code,{children:`secret`}),` to read, write, and delete secret.`]}),`\n`,_jsx(_components.p,{children:`Configuration:`}),`\n`,_jsxs(_components.p,{children:[`Ensure table `,_jsx(_components.code,{children:`secret`}),` exists.`]}),`\n`,_jsx(_components.p,{children:`Usage:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Secrets are stored in table `,_jsx(_components.code,{children:`secret`}),`.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Secret Store","sidebarTitle":"Secret Store","description":null,"href":"/deployment/secret-store"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"Secret Manager Factory","slug":"secret-manager-factory","depth":2,"children":[]},{"title":"File Secret Manager","slug":"file-secret-manager","depth":2,"children":[]},{"title":"AWS Secret Manager","slug":"aws-secret-manager","depth":2,"children":[{"title":"AWS Secret Rotation","slug":"aws-secret-rotation","depth":3,"children":[]}]},{"title":"Kubernetes Secret Manager","slug":"kubernetes-secret-manager","depth":2,"children":[{"title":"Overview","slug":"overview-2","depth":3,"children":[]},{"title":"Configuration","slug":"configuration","depth":3,"children":[]},{"title":"Environment Variables From Secrets","slug":"environment-variables-from-secrets","depth":3,"children":[]},{"title":"Creating Database Connection Secret","slug":"creating-database-connection-secret","depth":4,"children":[]},{"title":"Update the helm Values.yaml","slug":"update-the-helm-values-yaml","depth":4,"children":[]},{"title":"Apply with Helm","slug":"apply-with-helm","depth":4,"children":[]},{"title":"Verify the installation","slug":"verify-the-installation","depth":4,"children":[]}]},{"title":"GCP Secret Manager","slug":"gcp-secret-manager","depth":2,"children":[]},{"title":"Hashicorp Vault Secret Manager","slug":"hashicorp-vault-secret-manager","depth":2,"children":[]},{"title":"DB Secret Manager","slug":"db-secret-manager","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"keep-docs","siteName":"Keep","title":"Secret Store - Keep","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-01T09:44:28.328Z","originalFileLocation":"deployment/secret-store.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"Keep\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/keep-docs/kob5tqelqoTRa-nT/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/keep-docs/kob5tqelqoTRa-nT/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/keep-docs/kob5tqelqoTRa-nT/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/keep-docs/kob5tqelqoTRa-nT/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/keep-docs/kob5tqelqoTRa-nT/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/keep-docs/kob5tqelqoTRa-nT/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/keep-docs/kob5tqelqoTRa-nT/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/keep-docs/kob5tqelqoTRa-nT/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/keep-docs/kob5tqelqoTRa-nT/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Secret Store - Keep\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Keep\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.keephq.dev/deployment/secret-store\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://keep-docs.mintlify.site/_mintlify/api/og/v2?division=Deployment\u0026amp;title=Secret+Store\u0026amp;theme=2c2ccf92b7efca2a3a554ef2\u0026amp;signature=00bef9bd782ffc217073f6318341edb81270ae093230383f96890918e76852e7\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Secret Store - Keep\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://keep-docs.mintlify.site/_mintlify/api/og/v2?division=Deployment\u0026amp;title=Secret+Store\u0026amp;theme=2c2ccf92b7efca2a3a554ef2\u0026amp;signature=00bef9bd782ffc217073f6318341edb81270ae093230383f96890918e76852e7\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/keep-docs/kob5tqelqoTRa-nT/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Keep\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FA9E34\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.keephq.dev/deployment/secret-store\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/deployment/secret-store.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.keephq.dev/#organization\",\"name\":\"Keep\",\"url\":\"https://docs.keephq.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/keep-docs/LjPasDs8HZ8u-5Qy/logo/light.png?fit=max\u0026auto=format\u0026n=LjPasDs8HZ8u-5Qy\u0026q=85\u0026s=906a0da7c13acde19b4fcc061b3ebfa2\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.keephq.dev#website\",\"name\":\"Keep\",\"url\":\"https://docs.keephq.dev\",\"publisher\":{\"@id\":\"https://docs.keephq.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.keephq.dev/deployment/secret-store#webpage\",\"url\":\"https://docs.keephq.dev/deployment/secret-store\",\"name\":\"Secret Store\",\"dateModified\":\"2026-11-01T09:44:28.328Z\",\"isPartOf\":{\"@id\":\"https://docs.keephq.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.keephq.dev/deployment/secret-store#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.keephq.dev/deployment/secret-store#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Deployment\",\"item\":\"https://docs.keephq.dev/deployment/configuration\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Secret Store\",\"item\":\"https://docs.keephq.dev/deployment/secret-store\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.keephq.dev/deployment/secret-store#article\",\"headline\":\"Secret Store\",\"name\":\"Secret Store\",\"url\":\"https://docs.keephq.dev/deployment/secret-store\",\"mainEntityOfPage\":{\"@id\":\"https://docs.keephq.dev/deployment/secret-store#webpage\"},\"dateModified\":\"2026-11-01T09:44:28.328Z\",\"publisher\":{\"@id\":\"https://docs.keephq.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.keephq.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Keep\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Keep","nav":{"global":null,"groups":[{"group":"Overview","pages":[{"title":"Introduction","href":"/overview/introduction"},{"title":"Playground","href":"/overview/playground"},{"title":"Use Cases","href":"/overview/usecases"},{"group":"Key Concepts","pages":[{"title":"Glossary","href":"/overview/glossary"},{"title":"Common Expression Language (CEL)","href":"/overview/cel"},{"title":"Fingerprints","sidebarTitle":"Fingerprints","href":"/overview/fingerprints"},{"title":"Alerts Severity and Status","href":"/overview/alertseverityandstatus"},{"title":"Push vs Pull alerts","href":"/overview/howdoeskeepgetmyalerts"},{"title":"Comparison","href":"/overview/comparisons"}]},{"title":"Support","sidebarTitle":"Support","href":"/overview/support"},{"title":"FAQ","sidebarTitle":"FAQ","href":"/overview/faq"}]},{"group":"AIOps","pages":[{"group":"AI","pages":[{"title":"AI Incident Assistant","href":"/overview/ai-incident-assistant"},{"title":"AI Workflow Builder Assistant","href":"/overview/ai-workflow-assistant"},{"title":"AI Semi Automatic Correlation","href":"/overview/ai-semi-automatic-correlation"},{"title":"AI in Workflows","href":"/overview/ai-in-workflows"},{"title":"AI Correlation","href":"/overview/ai-correlation"}]},{"group":"Non-AI Correlation","pages":[{"title":"Manual Correlation Rules","href":"/overview/correlation-rules"},{"title":"Topology Correlation","href":"/overview/correlation-topology"}]},{"title":"Deduplication","href":"/overview/deduplication"},{"title":"Extraction","href":"/overview/enrichment/extraction"},{"title":"Mapping","href":"/overview/enrichment/mapping"},{"title":"Maintenance Windows","href":"/overview/maintenance-windows"},{"title":"Service Topology","href":"/overview/servicetopology"},{"title":"Workflows","href":"/overview/workflow-automation"}]},{"group":"Alerts","pages":[{"title":"Overview","href":"/alerts/overview"},{"title":"Alert Table","href":"/alerts/table"},{"title":"Action Menu","href":"/alerts/actionmenu"},{"title":"Alert Sidebar","href":"/alerts/sidebar"},{"title":"Customized Presets","href":"/alerts/presets"},{"title":"Sound Notifications","href":"/alerts/sound"}]},{"group":"Incidents","pages":[{"title":"Overview","href":"/incidents/overview"},{"title":null,"href":"/incidents/facets"}]},{"group":"Workflow Automation","pages":[{"title":"Overview","href":"/workflows/overview"},{"group":"Syntax","pages":[{"title":"Triggers","href":"/workflows/syntax/triggers"},{"title":"Permissions","href":"/workflows/syntax/permissions"},{"title":"Steps and Actions","href":"/workflows/syntax/steps-and-actions"},{"title":"Conditions","href":"/workflows/syntax/conditions"},{"title":"Functions","href":"/workflows/syntax/functions"},{"title":"Context","href":"/workflows/syntax/context"},{"title":"Providers","href":"/workflows/syntax/providers"},{"title":"Foreach","href":"/workflows/syntax/foreach"},{"title":"Enrichment","href":"/workflows/syntax/enrichment"}]},{"group":"Examples","pages":[{"title":"Suppressing Alerts Automatically","href":"/workflows/examples/autosupress"},{"title":"Executing Actions During Business Hours","href":"/workflows/examples/buisnesshours"},{"title":"Continue on Error","href":"/workflows/examples/continue-on-error"},{"title":"Creating ServiceNow Tickets for Alerts","href":"/workflows/examples/create-servicenow-tickets"},{"title":"Handling High-Severity Sentry Alerts","href":"/workflows/examples/highsev"},{"title":"Update ServiceNow Tickets","href":"/workflows/examples/update-servicenow-tickets"}]}]},{"group":"Alert Evaluation Engine","pages":[{"title":"Overview","href":"/alertevaluation/overview"},{"group":"Examples","pages":[{"title":"VictoriaMetrics Single Alert Example","href":"/alertevaluation/examples/victoriametricssingle"},{"title":"VictoriaMetrics Multi Alert Example","href":"/alertevaluation/examples/victoriametricsmulti"}]}]},{"group":"Providers","pages":[{"title":"Overview","sidebarTitle":"Overview","href":"/providers/overview"},{"title":"Linked providers","href":"/providers/linked-providers"},{"title":"Provider methods","sidebarTitle":"Provider Methods","href":"/providers/provider-methods"},{"group":"Supported Providers","pages":[{"title":"Airflow","sidebarTitle":"Airflow Provider","href":"/providers/documentation/airflow-provider"},{"title":"Azure AKS","href":"/providers/documentation/aks-provider"},{"title":"AmazonSQS Provider","sidebarTitle":"AmazonSQS Provider","href":"/providers/documentation/amazonsqs-provider"},{"title":"Anthropic Provider","href":"/providers/documentation/anthropic-provider"},{"title":"AppDynamics","sidebarTitle":"AppDynamics Provider","href":"/providers/documentation/appdynamics-provider"},{"title":"Asana","sidebarTitle":"Asana Provider","href":"/providers/documentation/asana-provider"},{"title":"AWS S3","sidebarTitle":"AWS S3 Provider","href":"/providers/documentation/s3-provider"},{"title":"ArgoCD Provider","sidebarTitle":"ArgoCD Provider","href":"/providers/documentation/argocd-provider"},{"title":"Auth0","sidebarTitle":"Auth0 Provider","href":"/providers/documentation/auth0-provider"},{"title":"Axiom Provider","href":"/providers/documentation/axiom-provider"},{"title":"Azure Monitor","sidebarTitle":"Azure Monitor Provider","href":"/providers/documentation/azuremonitoring-provider"},{"title":"Bash","sidebarTitle":"Bash Provider","href":"/providers/documentation/bash-provider"},{"title":"BigQuery","sidebarTitle":"BigQuery Provider","href":"/providers/documentation/bigquery-provider"},{"title":"Centreon","sidebarTitle":"Centreon Provider","href":"/providers/documentation/centreon-provider"},{"title":"Checkmk","sidebarTitle":"Checkmk Provider","href":"/providers/documentation/checkmk-provider"},{"title":"Checkly","sidebarTitle":"Checkly Provider","href":"/providers/documentation/checkly-provider"},{"title":"Cilium","sidebarTitle":"Cilium Provider","href":"/providers/documentation/cilium-provider"},{"title":"ClickHouse","sidebarTitle":"ClickHouse Provider","href":"/providers/documentation/clickhouse-provider"},{"title":"CloudWatch","sidebarTitle":"CloudWatch Provider","href":"/providers/documentation/cloudwatch-provider"},{"title":"Console","sidebarTitle":"Console Provider","href":"/providers/documentation/console-provider"},{"title":"Coralogix","sidebarTitle":"Coralogix Provider","href":"/providers/documentation/coralogix-provider"},{"title":"Dash0","sidebarTitle":"Dash0 Provider","href":"/providers/documentation/dash0-provider"},{"title":"Databend","sidebarTitle":"Databend Provider","href":"/providers/documentation/databend-provider"},{"title":"Datadog","sidebarTitle":"Datadog Provider","href":"/providers/documentation/datadog-provider"},{"title":"DeepSeek Provider","href":"/providers/documentation/deepseek-provider"},{"title":"Discord","sidebarTitle":"Discord Provider","href":"/providers/documentation/discord-provider"},{"title":"Dynatrace","sidebarTitle":"Dynatrace Provider","href":"/providers/documentation/dynatrace-provider"},{"title":"EKS Provider","href":"/providers/documentation/eks-provider"},{"title":"Elastic","sidebarTitle":"Elastic Provider","href":"/providers/documentation/elastic-provider"},{"title":"Flashduty","sidebarTitle":"Flashduty Provider","href":"/providers/documentation/flashduty-provider"},{"title":"Flux CD","sidebarTitle":"Flux CD Provider","href":"/providers/documentation/fluxcd-provider"},{"title":"GCP Monitoring","sidebarTitle":"GCP Monitoring Provider","href":"/providers/documentation/gcpmonitoring-provider"},{"title":"Gemini Provider","href":"/providers/documentation/gemini-provider"},{"title":"GitHub","sidebarTitle":"GitHub Provider","href":"/providers/documentation/github-provider"},{"title":"Github Workflows","sidebarTitle":"Github Workflows Provider","href":"/providers/documentation/github_workflows_provider"},{"title":"GitLab Provider","sidebarTitle":"GitLab Provider","href":"/providers/documentation/gitlab-provider"},{"title":"GitLab Pipelines","sidebarTitle":"GitLab Pipelines Provider","href":"/providers/documentation/gitlabpipelines-provider"},{"title":"Google Kubernetes Engine","sidebarTitle":"Google Kubernetes Engine Provider","href":"/providers/documentation/gke-provider"},{"title":"Google Chat","sidebarTitle":"Google Chat Provider","href":"/providers/documentation/google_chat-provider"},{"title":"Grafana Provider","href":"/providers/documentation/grafana-provider"},{"title":"Grafana Incident Provider","sidebarTitle":"Grafana Incident Provider","href":"/providers/documentation/grafana_incident-provider"},{"title":"Grafana Loki","sidebarTitle":"Grafana Loki Provider","href":"/providers/documentation/grafana_loki-provider"},{"title":"Grafana OnCall Provider","href":"/providers/documentation/grafana_oncall-provider"},{"title":"Graylog Provider","sidebarTitle":"Graylog Provider","href":"/providers/documentation/graylog-provider"},{"title":"Grok Provider","href":"/providers/documentation/grok-provider"},{"title":"HTTP Provider","href":"/providers/documentation/http-provider"},{"title":"Icinga2 Provider","sidebarTitle":"Icinga2","href":"/providers/documentation/icinga2-provider"},{"title":"ilert Provider","sidebarTitle":"ilert Provider","href":"/providers/documentation/ilert-provider"},{"title":"Incident.io Provider","sidebarTitle":"Incident.io Provider","href":"/providers/documentation/incidentio-provider"},{"title":"Incident Manager Provider","sidebarTitle":"Incident Manager Provider","href":"/providers/documentation/incidentmanager-provider"},{"title":"Jira On-Prem Provider","sidebarTitle":"Jira On-Prem Provider","href":"/providers/documentation/jira-on-prem-provider"},{"title":"Jira Cloud Provider","sidebarTitle":"Jira Cloud Provider","href":"/providers/documentation/jira-provider"},{"title":"Kafka","sidebarTitle":"Kafka Provider","href":"/providers/documentation/kafka-provider"},{"title":"Keep","sidebarTitle":"Keep Provider","href":"/providers/documentation/keep-provider"},{"title":"Kibana","sidebarTitle":"Kibana Provider","href":"/providers/documentation/kibana-provider"},{"title":"Kubernetes","href":"/providers/documentation/kubernetes-provider"},{"title":"LibreNMS","sidebarTitle":"LibreNMS Provider","href":"/providers/documentation/libre_nms-provider"},{"title":"Linear Provider","sidebarTitle":"Linear Provider","href":"/providers/documentation/linear_provider"},{"title":"LinearB","sidebarTitle":"LinearB Provider","href":"/providers/documentation/linearb-provider"},{"title":"LiteLLM Provider","href":"/providers/documentation/litellm-provider"},{"title":"Llama.cpp Provider","href":"/providers/documentation/llamacpp-provider"},{"title":"Mailgun Provider","href":"/providers/documentation/mailgun-provider"},{"title":"Mattermost Provider","sidebarTitle":"Mattermost Provider","href":"/providers/documentation/mattermost-provider"},{"title":"Mock","sidebarTitle":"Mock Provider","href":"/providers/documentation/mock-provider"},{"title":"Monday","href":"/providers/documentation/monday-provider"},{"title":"MongoDB","sidebarTitle":"MongoDB Provider","href":"/providers/documentation/mongodb-provider"},{"title":"MySQL","sidebarTitle":"MySQL Provider","href":"/providers/documentation/mysql-provider"},{"title":"NetBox","sidebarTitle":"NetBox Provider","href":"/providers/documentation/netbox-provider"},{"title":"Netdata","sidebarTitle":"Netdata Provider","href":"/providers/documentation/netdata-provider"},{"title":"New Relic","sidebarTitle":"New Relic Provider","href":"/providers/documentation/new-relic-provider"},{"title":"Ntfy.sh","sidebarTitle":"Ntfy.sh Provider","href":"/providers/documentation/ntfy-provider"},{"title":"Ollama Provider","href":"/providers/documentation/ollama-provider"},{"title":"OpenAI Provider","href":"/providers/documentation/openai-provider"},{"title":"OpenObserve","sidebarTitle":"OpenObserve Provider","href":"/providers/documentation/openobserve-provider"},{"title":"OpenSearch Serverless","sidebarTitle":"OpenSearchServerless Provider","href":"/providers/documentation/opensearchserverless-provider"},{"title":"Openshift","href":"/providers/documentation/openshift-provider"},{"title":"Opsgenie Provider","href":"/providers/documentation/opsgenie-provider"},{"title":"PagerDuty Provider","href":"/providers/documentation/pagerduty-provider"},{"title":"Pagertree Provider","href":"/providers/documentation/pagertree-provider"},{"title":"Parseable","sidebarTitle":"Parseable Provider","href":"/providers/documentation/parseable-provider"},{"title":"Pingdom","sidebarTitle":"Pingdom Provider","href":"/providers/documentation/pingdom-provider"},{"title":"PostHog","sidebarTitle":"PostHog Provider","href":"/providers/documentation/posthog-provider"},{"title":"Microsoft Planner Provider","href":"/providers/documentation/planner-provider"},{"title":"PostgreSQL","sidebarTitle":"PostgreSQL Provider","href":"/providers/documentation/postgresql-provider"},{"title":"Prometheus","sidebarTitle":"Prometheus Provider","href":"/providers/documentation/prometheus-provider"},{"title":"Pushover","sidebarTitle":"Pushover Provider","href":"/providers/documentation/pushover-provider"},{"title":"Python","sidebarTitle":"Python Provider","href":"/providers/documentation/python-provider"},{"title":"QuickChart Provider","sidebarTitle":"QuickChart Provider","href":"/providers/documentation/quickchart-provider"},{"title":"Redmine","sidebarTitle":"Redmine Provider","href":"/providers/documentation/redmine-provider"},{"title":"Resend","sidebarTitle":"Resend Provider","href":"/providers/documentation/resend-provider"},{"title":"Rollbar","sidebarTitle":"Rollbar Provider","href":"/providers/documentation/rollbar-provider"},{"title":"SendGrid","sidebarTitle":"SendGrid Provider","href":"/providers/documentation/sendgrid-provider"},{"title":"Sentry","sidebarTitle":"Sentry Provider","href":"/providers/documentation/sentry-provider"},{"title":"Service Now","sidebarTitle":"Service Now Provider","href":"/providers/documentation/service-now-provider"},{"title":"SignalFX","sidebarTitle":"SignalFX Provider","href":"/providers/documentation/signalfx-provider"},{"title":"SIGNL4 Provider","href":"/providers/documentation/signl4-provider"},{"title":"Site24x7 Provider","href":"/providers/documentation/site24x7-provider"},{"title":"Keep's integration for Slack","sidebarTitle":"Integration for Slack","href":"/providers/documentation/slack-provider"},{"title":"SMTP","sidebarTitle":"SMTP Provider","href":"/providers/documentation/smtp-provider"},{"title":"Snowflake","sidebarTitle":"Snowflake Provider","href":"/providers/documentation/snowflake-provider"},{"title":"Splunk","sidebarTitle":"Splunk Provider","href":"/providers/documentation/splunk-provider"},{"title":"Squadcast Provider","sidebarTitle":"Squadcast Provider","href":"/providers/documentation/squadcast-provider"},{"title":"SSH","sidebarTitle":"SSH Provider","href":"/providers/documentation/ssh-provider"},{"title":"StatusCake","sidebarTitle":"StatusCake Provider","href":"/providers/documentation/statuscake-provider"},{"title":"SumoLogic Provider","sidebarTitle":"SumoLogic Provider","href":"/providers/documentation/sumologic-provider"},{"title":"Microsoft Teams Provider","sidebarTitle":"Microsoft Teams Provider","href":"/providers/documentation/teams-provider"},{"title":"Telegram Provider","href":"/providers/documentation/telegram-provider"},{"title":"Template","href":"/providers/documentation/template"},{"title":"ThousandEyes","sidebarTitle":"ThousandEyes Provider","href":"/providers/documentation/thousandeyes-provider"},{"title":"Trello","sidebarTitle":"Trello Provider","href":"/providers/documentation/trello-provider"},{"title":"Twilio Provider","href":"/providers/documentation/twilio-provider"},{"title":"UptimeKuma","sidebarTitle":"UptimeKuma Provider","href":"/providers/documentation/uptimekuma-provider"},{"title":"VictoriaLogs","sidebarTitle":"VictoriaLogs Provider","href":"/providers/documentation/victorialogs-provider"},{"title":"Victoriametrics Provider","sidebarTitle":"Victoriametrics Provider","href":"/providers/documentation/victoriametrics-provider"},{"title":"vLLM Provider","href":"/providers/documentation/vllm-provider"},{"title":"Wazuh","sidebarTitle":"Wazuh Provider","href":"/providers/documentation/wazuh-provider"},{"title":"Webhook","sidebarTitle":"Webhook Provider","href":"/providers/documentation/webhook-provider"},{"title":"Websocket","href":"/providers/documentation/websocket-provider"},{"title":"YouTrack","sidebarTitle":"YouTrack Provider","href":"/providers/documentation/youtrack-provider"},{"title":"Zabbix","sidebarTitle":"Zabbix Provider","href":"/providers/documentation/zabbix-provider"},{"title":"Zenduty","sidebarTitle":"Zenduty Provider","href":"/providers/documentation/zenduty-provider"},{"title":"Zoom","sidebarTitle":"Zoom Provider","href":"/providers/documentation/zoom-provider"},{"title":"Zoom Chat","sidebarTitle":"Zoom Chat Provider","href":"/providers/documentation/zoom_chat-provider"}]},{"title":"Adding a new Provider","sidebarTitle":"Adding a New Provider","href":"/providers/adding-a-new-provider"}]},{"group":"Deployment","pages":[{"title":"Configuration","sidebarTitle":"Configuration","href":"/deployment/configuration"},{"title":"Monitoring","sidebarTitle":"Monitoring","href":"/deployment/monitoring"},{"group":"Authentication","pages":[{"title":"Overview","href":"/deployment/authentication/overview"},{"title":"No Authentication","href":"/deployment/authentication/no-auth"},{"title":"DB Authentication","href":"/deployment/authentication/db-auth"},{"title":"Auth0 Authentication","href":"/deployment/authentication/auth0-auth"},{"title":"Azure AD Authentication","href":"/deployment/authentication/azuread-auth"},{"title":"Keycloak Authentication","href":"/deployment/authentication/keycloak-auth"},{"title":"OAuth2Proxy Authentication","href":"/deployment/authentication/oauth2proxy-auth"},{"title":"Example: OAuth2‑Proxy + Keep + GitLab SSO","href":"/deployment/authentication/oauth2-proxy-gitlab"},{"title":"Okta Authentication","href":"/deployment/authentication/okta-auth"},{"title":"OneLogin Authentication","href":"/deployment/authentication/onelogin-auth"},{"title":"Generic OIDC Authentication","href":"/deployment/authentication/oidc-auth"}]},{"group":"Provision","pages":[{"title":"Overview","href":"/deployment/provision/overview"},{"title":"Providers Provisioning","href":"/deployment/provision/provider"},{"title":"Workflow Provisioning","href":"/deployment/provision/workflow"},{"title":"Dashboard Provisioning","href":"/deployment/provision/dashboard"},{"title":"Mapping Rule Provisioning","description":null,"href":"/deployment/provision/mapping"}]},{"title":"Secret Store","sidebarTitle":"Secret Store","href":"/deployment/secret-store"},{"group":"Deploy On","pages":[{"title":"Docker","sidebarTitle":"Docker","description":null,"href":"/deployment/docker"},{"group":"Kubernetes","pages":[{"title":"Overview","sidebarTitle":"Overview","href":"/deployment/kubernetes/overview"},{"title":"Installation","sidebarTitle":"Installation","href":"/deployment/kubernetes/installation"},{"title":"Architecture","sidebarTitle":"Architecture","href":"/deployment/kubernetes/architecture"},{"title":"Openshift","sidebarTitle":"Openshift","href":"/deployment/kubernetes/openshift"}]},{"title":"AWS ECS","sidebarTitle":"AWS ECS","href":"/deployment/ecs"}]},{"group":"Local LLM","pages":[{"title":"Running Keep with LiteLLM","href":"/deployment/local-llm/keep-with-litellm"}]},{"title":null,"sidebarTitle":"Specifications","href":"/deployment/stress-testing"}]},{"group":"Development","pages":[{"title":"Getting started","sidebarTitle":"Getting started","href":"/development/getting-started"},{"title":"Keep with an external URL","sidebarTitle":"Keep with an external URL","href":"/development/external-url"}]},{"group":"Keep CLI","pages":[{"title":"Overview","href":"/cli/overview"},{"title":"Installation","href":"/cli/installation"},{"title":"Sync Keep Workflows With Github Action","href":"/cli/github-actions"},{"group":"Commands","pages":[{"group":"keep alert","pages":[{"title":null,"href":"/cli/commands/cli-alert"},{"sidebarTitle":"keep alert enrich","title":null,"href":"/cli/commands/alert-enrich"},{"sidebarTitle":"keep alert get","title":null,"href":"/cli/commands/alert-get"},{"sidebarTitle":"keep alert list","title":null,"href":"/cli/commands/alert-list"}]},{"group":"keep provider","pages":[{"title":null,"href":"/cli/commands/cli-provider"},{"sidebarTitle":"keep provider connect","title":null,"href":"/cli/commands/provider-connect"},{"sidebarTitle":"keep provider delete","title":null,"href":"/cli/commands/provider-delete"},{"sidebarTitle":"keep provider list","title":null,"href":"/cli/commands/provider-list"}]},{"group":"keep workflow","pages":[{"title":null,"href":"/cli/commands/cli-workflow"},{"sidebarTitle":"keep workflow apply","title":null,"href":"/cli/commands/workflow-apply"},{"sidebarTitle":"keep workflow list","title":null,"href":"/cli/commands/workflow-list"},{"sidebarTitle":"keep workflow run","title":null,"href":"/cli/commands/workflow-run"},{"sidebarTitle":"keep workflow runs","title":null,"href":"/cli/commands/workflow-runs"},{"group":"keep workflow runs","pages":[{"sidebarTitle":"keep workflow runs logs","title":null,"href":"/cli/commands/runs-logs"},{"sidebarTitle":"keep workflow runs list","title":null,"href":"/cli/commands/runs-list"}]}]},{"group":"keep mappings","pages":[{"sidebarTitle":"keep mappings list","title":null,"href":"/cli/commands/mappings-list"},{"sidebarTitle":"keep mappings create","title":null,"href":"/cli/commands/mappings-create"},{"sidebarTitle":"keep mappings delete","title":null,"href":"/cli/commands/mappings-delete"}]},{"group":"keep extractions","pages":[{"sidebarTitle":"keep extraction create","title":null,"href":"/cli/commands/extraction-create"},{"sidebarTitle":"keep extraction delete","title":null,"href":"/cli/commands/extraction-delete"},{"sidebarTitle":"keep extraction list","title":null,"href":"/cli/commands/extractions-list"}]},{"title":null,"href":"/cli/commands/cli"},{"title":"api","sidebarTitle":"keep api","href":"/cli/commands/cli-api"},{"sidebarTitle":"keep config new","title":null,"href":"/cli/commands/cli-config-new"},{"sidebarTitle":"keep config show","title":null,"href":"/cli/commands/cli-config-show"},{"title":"run","sidebarTitle":"keep run","href":"/cli/commands/cli-run"},{"title":"config","sidebarTitle":"keep config","href":"/cli/commands/cli-config"},{"title":"version","sidebarTitle":"keep version","href":"/cli/commands/cli-version"},{"title":"whoami","sidebarTitle":"keep whoami","href":"/cli/commands/cli-whoami"}]}]}]},"basePath":"","title":"Secret Store - Keep","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":[],"chunks":[]}