[kubernates] 006. ConfigMap vs Secret

Understanding "ConfigMap & Secret" via Application

hpyYh avatar
  • hpyYh
  • 1 min read
Photo by Gemini
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: anotherclass-123
  name: api-tester-1231-properties
  labels:
    part-of: k8s-anotherclass
    component: backend-server
    name: api-tester
    instance: api-tester-1231
    version: 1.0.0
    managed-by: dashboard
data:
  spring_profiles_active: "dev"
  application_role: "ALL"
  postgresql_filepath: "/usr/src/myapp/datasource/postgresql-info.yaml"
---
apiVersion: v1
kind: Secret
metadata:
  namespace: anotherclass-123
  name: api-tester-1231-postgresql
  labels:
    part-of: k8s-anotherclass
    component: backend-server
    name: api-tester
    instance: api-tester-1231
    version: 1.0.0
    managed-by: dashboard
stringData:
  postgresql-info.yaml: |
    driver-class-name: "org.postgresql.Driver"
    url: "jdbc:postgresql://postgresql:5431"
    username: "dev"
    password: "dev123"

Configmap

  • ConfigMap data is injected into Pods as environment variables.
  • java example : java -Dspring.profiles.active=${spring_profiles_active}
  • It is better to avoid using ConfigMaps for sensitive information, as they can lead to accidental exposure.

Secret

  • It is encoded in Base64 and can be decoded.
  • type
    • Opaque : Default type (same configmap)
    • docker-registry : for private docker registry
    • tls : for pod certificate