Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

22.3.2. ボリュームプラグインの使用

Downward API を使用するもう 1 つのメカニズムとしてボリュームプラグインを使用することができます。Downward API ボリュームプラグインは、ファイルに展開される設定済みのフィールドを使ってボリュームを作成します。VolumeSource API オブジェクトの metadata フィールドはこのボリュームを設定するために使用されます。プラグインは以下のフィールドをサポートします。

  • Pod の名前
  • Pod の namespace
  • Pod のアノテーション
  • Pod のラベル

例22.1 Downward API ボリュームプラグイン設定

spec:
  volumes:
    - name: podinfo
      downwardAPI:: 1
        items: 2
          -name: "labels" 3
           fieldRef:
              fieldPath: metadata.labels 4
1
ボリュームソースの metadata フィールドは Downward API ボリュームを設定します。
2
items フィールドはボリュームに展開するフィールドの一覧を保持します。
3
フィールドを展開するファイルの名前です。
4
展開するフィールドのセレクターです。

以下は例になります。

  1. volume-pod.yaml ファイルを作成します。

    kind: Pod
    apiVersion: v1
    metadata:
      labels:
        zone: us-east-coast
        cluster: downward-api-test-cluster1
        rack: rack-123
      name: dapi-volume-test-pod
      annotations:
        annotation1: "345"
        annotation2: "456"
    spec:
      containers:
        - name: volume-test-container
          image: gcr.io/google_containers/busybox
          command: ["sh", "-c", "cat /tmp/etc/pod_labels /tmp/etc/pod_annotations"]
          volumeMounts:
            - name: podinfo
              mountPath: /tmp/etc
              readOnly: false
      volumes:
      - name: podinfo
        downwardAPI:
          defaultMode: 420
          items:
          - fieldRef:
              fieldPath: metadata.name
            path: pod_name
          - fieldRef:
              fieldPath: metadata.namespace
            path: pod_namespace
          - fieldRef:
              fieldPath: metadata.labels
            path: pod_labels
          - fieldRef:
              fieldPath: metadata.annotations
            path: pod_annotations
      restartPolicy: Never
  2. volume-pod.yaml ファイルから Pod を作成します。

    $ oc create -f volume-pod.yaml
  3. コンテナーのログを確認し、設定されたフィールドの有無を確認します。

    $ oc logs -p dapi-volume-test-pod
    cluster=downward-api-test-cluster1
    rack=rack-123
    zone=us-east-coast
    annotation1=345
    annotation2=456
    kubernetes.io/config.source=api