ユースケースとしてマルチクラスタのKubernetesなどを利用している場合、同じPodであってもロケーションや役割によってびみょーにやりたいことや振る舞いを変えたいケースがあります。かといって少しづつ変更するのは面倒…。
たいていのケースの場合、マルチクラスタ管理する側で対象のNodeの属性などをlabelやannotationとしてpodに情報を追加してくれています。ですのでこれによって振る舞いを変えてみましょう。
全体像
sidecarやinit-container、振る舞いをかえるappについては省略します。。。(そんなに難しい話でもないので)
annotations/labelをマウントするmanifest
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 1 template: metadata: annotations: zone: zone-A role: test-role-A labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: - name: podinfo mountPath: /etc/podinfo volumes: - name: podinfo downwardAPI: items: - path: "annotations" fieldRef: fieldPath: metadata.annotations - path: "labels" fieldRef: fieldPath: metadata.labels