LoginSignup
6
3

More than 5 years have passed since last update.

yamlのアンカー機能でDeploymentのラベル付を少し楽にする

Posted at

目的

  • 運用管理のためにリソースにlabel付を強制したい
  • Deploymentではdeployment.metadata.labelだけでなくdeployment.spec.template.metadata.labelにもラベルを付けたい
    • Deploymentが作成するReplicaSetやPodなどにもラベルをつけるためにdeployment.spec.template.metadata.labelのラベル付が必要
    • 絶対忘れるのでdeployment.metadata.labelを設定するだけで良いようにしたい

対策

  • label付強制の方法は別途検討(OPAなどのvalidationを利用)
  • deployment.spec.template.metadata.labelにラベルつけ忘れる問題に対しては、yamlのアンカー機能を利用する

yamlのアンカー機能とは

やってみる

  • deployment.metadata.labelのラベルをdeployment.spec.template.metadata.labelで参照するようにする
apiVersion: apps/v1
kind: Deployment
metadata:
  labels: &top_labels
    name: paper2
    version: v1.0
    app: nginx
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        <<: *top_labels
    spec:
      containers:
      - image: nginx
        name: nginx

これをKubernetesに適用すると以下のような結果になります。

⇒ kubectl get all --show-labels
NAME                        READY   STATUS    RESTARTS   AGE   LABELS
pod/nginx-dfcb86c9c-twzks   1/1     Running   0          19m   app=nginx,name=paper2,pod-template-hash=dfcb86c9c,version=v1.0
...

NAME                    READY   UP-TO-DATE   AVAILABLE   AGE   LABELS
deployment.apps/nginx   1/1     1            1           19m   app=nginx,name=paper2,version=v1.0

NAME                              DESIRED   CURRENT   READY   AGE   LABELS
replicaset.apps/nginx-dfcb86c9c   1         1         1       19m   app=nginx,name=paper2,pod-template-hash=dfcb86c9c,version=v1.0

deployment.spec.template.metadata.labelにlabelを付けているのでpodやreplicasetにもラベルが付きました。
この設定により、ラベルを指定したpodの選択ができたりします。ツールによってはpodのラベルを指定するようなツールもあるので利用できます。

⇒ kubectl get po -l app=nginx
NAME                   READY   STATUS    RESTARTS   AGE
nginx-5c7588df-8f8fz   1/1     Running   0          2m6s

まとめ

アンカー機能を用いてDeploymentのラベル付を簡易化しました。付け忘れ防止にもつながると考えています。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3