Secrets in Kubernetes
What are Kubernetes Secrets?
Kubernetes Secrets are objects that help manage sensitive information such as passwords, OAuth tokens, SSH keys, and other confidential data. They provide a way to separate sensitive configuration data from pod and container definitions, enhancing security and flexibility in application deployment.
Types of Kubernetes Secrets
Kubernetes supports several types of secrets to accommodate different use cases:
| Secret Type |
Description |
Common Use Cases |
| Opaque |
Default secret type |
Generic key-value pairs |
| Docker Registry |
Store credentials for container registries |
Pulling private images |
| TLS |
Store TLS certificates |
HTTPS configurations |
| Service Account |
Authentication tokens |
Cluster access management |
Secret Management Workflow
graph TD
A[Create Sensitive Data] --> B[Encode Data]
B --> C[Create Kubernetes Secret]
C --> D[Mount Secret in Pod]
D --> E[Access Secret in Container]
Key Characteristics
- Secrets are namespace-scoped
- Data is base64 encoded
- Can be created manually or automatically
- Support multiple ways of consumption
Example: Creating a Basic Secret
## Create a secret from literal values
kubectl create secret generic db-credentials \
--from-literal=username=admin \
--from-literal=password=mysecretpassword
## Create a secret from files
kubectl create secret generic ssl-cert \
--from-file=./tls.crt \
--from-file=./tls.key
Security Considerations
- Secrets are stored in etcd and can be encrypted at rest
- Recommended to use RBAC to limit secret access
- Consider using external secret management tools for advanced scenarios
LabEx Recommendation
For hands-on practice with Kubernetes Secrets, LabEx provides interactive environments that allow you to experiment with secret creation and management in a safe, controlled setting.