external-secrets
by
external-secrets

Description: External Secrets Operator reads information from a third-party service like AWS Secrets Manager and automatically injects the values as Kubernetes Secrets.

View external-secrets/external-secrets on GitHub ↗

Summary Information

Updated 42 minutes ago
Added to GitGenius on August 14th, 2025
Created on November 17th, 2020
Open Issues/Pull Requests: 187 (+1)
Number of forks: 1,248
Total Stargazers: 6,517 (+0)
Total Subscribers: 61 (+0)

Detailed Description

External Secrets Operator (ESO) is a Kubernetes operator designed to securely manage and synchronize secrets from external secret stores with Kubernetes Secrets. It addresses the challenge of avoiding hardcoding sensitive information directly into Kubernetes manifests or storing it in unencrypted Git repositories. Instead, ESO fetches secrets from providers like AWS Secrets Manager, Azure Key Vault, Google Cloud Secret Manager, HashiCorp Vault, and others, and automatically updates corresponding Kubernetes Secrets. This significantly improves security and simplifies secret management workflows.

The core functionality revolves around a custom resource definition (CRD) called `ExternalSecret`. Users define `ExternalSecret` resources specifying the external secret store, the secret key to retrieve, and how to map that key to a Kubernetes Secret. ESO then continuously reconciles these resources, fetching the latest secret values from the external store and updating the Kubernetes Secret accordingly. This reconciliation happens automatically, ensuring Kubernetes applications always have access to the most current secret data without manual intervention. ESO supports various features like secret transformations (e.g., renaming keys, applying default values), selective secret retrieval (fetching only specific keys from a larger secret), and remote secret references, allowing secrets to be dynamically composed from other secrets.

ESO’s architecture consists of a controller that watches for `ExternalSecret` resources. When a new `ExternalSecret` is created or an existing one is updated, the controller triggers a process to authenticate with the configured external secret store. It then retrieves the specified secret, transforms it if necessary, and creates or updates a Kubernetes Secret in the same namespace. The operator utilizes a flexible provider interface, allowing new secret store integrations to be added without modifying the core operator code. This extensibility is a key strength, enabling support for a wide range of secret management solutions. ESO also incorporates features like caching to reduce load on external secret stores and supports different refresh intervals to balance between data freshness and performance.

A significant benefit of ESO is its declarative approach. Users define the *desired state* of their secrets – which secrets should exist in Kubernetes and where they come from – and ESO handles the complexities of fetching, updating, and managing those secrets. This aligns well with Kubernetes’ overall declarative philosophy. Furthermore, ESO integrates seamlessly with existing Kubernetes tooling like Helm and Kustomize, making it easy to incorporate into existing deployment pipelines. Role-Based Access Control (RBAC) is crucial; ESO leverages Kubernetes RBAC to control which users and service accounts can access and manage `ExternalSecret` resources.

The repository provides comprehensive documentation, including installation guides, usage examples, and detailed explanations of the various configuration options. It also includes a growing collection of providers, covering popular secret stores. The project is actively maintained and has a vibrant community, contributing to its ongoing development and improvement. ESO is a powerful tool for organizations looking to enhance the security and automation of their Kubernetes secret management practices, reducing the risk of exposing sensitive data and simplifying operational overhead.

external-secrets
by
external-secretsexternal-secrets/external-secrets

Repository Details

Fetching additional details & charts...