Giriş
1. volume ile ConfigMap volume haline getirilir
2. Pod volumeMounts/mountPath ile bu volume'u yükler. 3. volumeMounts/mountPath bir dizin ismi ise ConfigMap'teki her data satırı ayrı bir dosya gibidir
Örnek - Çoklu Dosya
Şöyle yaparız. Burada ConfigMap bir volume'a yükleniyor. Her Key/Value satırı ayrı bir dosya gibidir.
apiVersion: v1
kind: ConfigMap
metadata:
name: my-configmap
data:
env: prod
welcomeMessage: "Hello, welcome to kubernetes in a nutshell"
--
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
volumes:
- name: my-volume
configMap:
name: my-configmap
containers:
- name: basic-app
image: nginx
volumeMounts:
- name: my-volume
mountPath: /etc/nameGörmek için şöyle yaparız
> kubectl exec my-app — cat /etc/name/env prod > kubectl exec my-app — cat /etc/name/welcomeMessage Hello, welcome to kubernetes in a nutshell
Örnek - Çoklu Dosya
Elimizde şöyle bir dizim olsun
root/config-files/
|- user-data.txt
|- admin-info.txt
# user-data.txt
username: superuser
password: admin123
# admin-info.txt
city: Nobeoka
state: Miyazaki
country: Japanve tüm dosyaları ConfigMap yapalım
# Configmap with directory k create configmap user-config --from-file=/root/config-files
ConfigMap'e bakalım. Çıktısı şöyle. Burada user-config bir volume ve içinde de iki tane dosya var
> k get configmap user-config -o yaml
apiVersion: v1
data:
admin-info.txt: |
username: superuser
password: admin123
user-data.txt: |
city: Nobeoka
state: Miyazaki
country: Japan
kind: ConfigMap
metadata:
creationTimestamp: "2022-08-07T09:38:22Z"
name: user-config
namespace: default
resourceVersion: "2007"
uid: 915e805a-cb55-4309-977a-566b7a8ed6acVolume olarak yüklemek için şöyle yaparız
# Pod-definition with configmap mounted as a volume into the pod apiVersion: v1 kind: Pod metadata: name: web-server spec: containers: - name: wordpress image: wordpress volumeMounts: - name: config-volume mountPath: /etc/config # Directory where files will be mounted volumes: - name: config-volume configMap: name: user-config
Artık pod'un /etc/config dizininde admin-info.txt ve user-data.txt isimli iki tane dosya var. Eğer tüm dosyaları değil de sadece bazı dosyaları kullanmak istersek şöyle yaparız. Burada items ile ConfigMap üzerindeki dosya ismi ve Pod üzerindeki ismi belirtiliyor
# Pod-definition with configmap. Importing only the necessary files into the pods. # e.g: user-data.txt apiVersion: v1 kind: Pod metadata: name: web-server spec: containers: - name: wordpress image: wordpress volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: name: user-config items: - key: user-data.txt # filename on configmap path: pod-user-data.txt # filename on pod
Örnek - Tek Dosya
Şöyle yaparız. Burada file.conf isimli tek bir dosya var. subPath ile volume üzerindeki dosya belirtilir. mountPath ile de dosyanın pod üzerindeki yeri belirtilir. Normalde subPath'e gerek yok
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config-map
data:
file.conf: |
param1=value1
param2=value2
paramN=valueN
---
apiVersion: v1
kind: Deployment
metadata:
name: my-deployment
spec:
containers:
...
volumeMounts:
- name: config
mountPath: "path/in/the/pod/where/to/mount/the/file"
subPath: file.conf
volumes:
- name: config
configMap:
name: my-config-map
items:
- key: "file.conf" # filename on configmap
path: "file.conf" # filename on pod
Hiç yorum yok:
Yorum Gönder