projected позволяет объединить несколько различных источников в одном volume.
Поддерживается объединение:
- secret
- downwardAPI
- configMap
- serviceAccountToken
Все объединяемые ресурсы должны находится с подом в одном namespace.
Пример secret:
apiVersion: v1 kind: Secret metadata: name: user-password-secret namespace: volumes-sample type: Opaque data: user: YWRtaW51c2VyCg== password: YWRtaW5wYXNzd29yZAo=
Пример configMap:
apiVersion: v1 kind: ConfigMap metadata: name: example-txt namespace: volumes-sample data: example.txt: |- Пример configMap для видео на моём канале. config.yaml: |- any_body: params: param1: value1 param2: value2
Пример использования projected:
apiVersion: apps/v1 kind: Deployment metadata: name: openresty namespace: volumes-sample labels: app: openresty spec: replicas: 1 selector: matchLabels: app: openresty template: metadata: labels: app: openresty spec: containers: - name: openresty image: openresty/openresty:centos-rpm env: - name: NGINX_HOST valueFrom: fieldRef: fieldPath: metadata.name resources: limits: cpu: "0.2" memory: "300Mi" requests: cpu: "0.1" memory: "100Mi" ports: - containerPort: 80 name: http protocol: TCP volumeMounts: - mountPath: "/etc/pod-data" name: all-values readOnly: true volumes: - name: all-values projected: sources: - downwardAPI: items: - path: limits/cpu-millicore resourceFieldRef: containerName: openresty resource: limits.cpu divisor: 1m - path: limits/memory-kibibytes resourceFieldRef: containerName: openresty resource: limits.memory divisor: 1Ki - path: labels fieldRef: fieldPath: metadata.labels - secret: name: user-password-secret items: - key: user path: secret/user - key: password path: secret/password - configMap: name: example-txt items: - key: example.txt path: configs/example.txt - key: config.yaml path: configs/config.yaml
В примере (выделено синим цветом) в один volume объединяются: downwardAPI, secret и configMap.
При помощи параметра path определяется путь к ресурсу в подключенном volume.
Volume подключаются к точку монтирования /etc/pod-data в режиме только для чтения.
Посмотреть содержимое директории можно подключившись к контейнеру, указав правильное имя пода:
kubectl -n volumes-sample exec openresty-7cd79cfd94-5zjgl \ -i -t -- ls -R /etc/pod-data
<- Оглавление