5 Nisan 2023 Çarşamba

ConfigMap'i Environment Olarak Kullanma

Giriş
1. Pod envfrom/configMapRef ile istenilen ConfigMap'in tamamını environment olarak yükler.
2. Pod env/valueFrom/configMapKeyRef ile istenilen ConfigMap'in bir alanını environment olarak yükler.

1. envfrom
Örnek
Şöyle yaparız. envfrom başlığı altında configMapRef kullanılıyor
apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql-config
data:
  MYSQL_ROOT_HOST: root
  MYSQL_ROOT_PASSWORD: password

#Inject entire configmap to the pod
apiVersion: v1
kind: Pod
metadata:
 labels:
   app: mysql-db
 name: mysql-db
spec:
 containers:
 - image: mysql
   name: mysql-db
   envFrom:
     - configMapRef:
         name: mysql-config
Örnek
Şöyle yaparızenvfrom başlığı altında configMapRef kullanılıyor. Burada aynı zamanda configmap volume olarak ta yükleniyor ama bence gereksiz.
apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  DATABASE_URL: jdbc:mysql://localhost:3306/mydb
  DATABASE_USERNAME: myuser
  DATABASE_PASSWORD: mypassword
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  template:
    spec:
      containers:
        - name: my-container
          image: my-image
          envFrom:
            - configMapRef:
                name: my-config
          volumeMounts:
            - name: config-volume
              mountPath: /config
      volumes:
        - name: config-volume
          configMap:
            name: my-config
SpringBoot projesinde şöyle yaparız
spring:
  datasource:
    url: ${DATABASE_URL}
    username: ${DATABASE_USERNAME}
    password: ${DATABASE_PASSWORD}
2. env
Eğer tüm configmap yerine içindeki bazı key değerleri kullanmak istersek şöyle yaparızenvfrom yerine env başlığı altında configMapKeyRef kullanılıyor
# Inject only the necessary environment varible from a configmap to the pod
apiVersion: v1
kind: Pod
metadata:
  labels:
    app: mysql-db
  name: mysql-db
spec:
  containers:
  - image: mysql
    name: mysql-db
    env:
      - name: MYSQL_ROOT_PASSWORD
        valueFrom:
          configMapKeyRef:
             name: mysql-config
             key: MYSQL_ROOT_PASSWORD
Eğer bazı key değeleri birkaç farklı ConfigMap'ten almak istersek şöyle yaparız
# Inject environment varible from multiple configmaps to the pod
apiVersion: v1
kind: Pod
metadata:
  labels:
    app: mysql-db
  name: mysql-db
spec:
  containers:
  - image: mysql
    name: mysql-db
    env:
      - name: MYSQL_ROOT_PASSWORD
        valueFrom:
          configMapKeyRef:
             name: mysql-config
             key: MYSQL_ROOT_PASSWORD
      - name: APP_STATE
        valueFrom:
          configMapKeyRef:
             name: app-config
             key: APP_STATE

Hiç yorum yok:

Yorum Gönder

Cluster Propotional Autoscaler - ReplicaSet Ekler/Siler

Giriş Açıklaması şöyle CPA aims to horizontally scale the number of Pod replicas based on the cluster’s scale. A common example is DNS ser...