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/name
Gö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: Japan
ve 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-566b7a8ed6ac
Volume 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