LoginSignup
5
2

More than 3 years have passed since last update.

アノテーションとラベル

Last updated at Posted at 2020-03-06

はじめに

kubernetesでは、各リソースを分類するタグみたいなもの(メタデータ)を付けることができます。
そのタグには「アノテーション」と「ラベル」の二種類があるので、違いやユースケースをまとめます。

アノテーション

アノテーションは「metadata.annotations」に設定できるが、ユーザーが設定するというよりは、システムが自動で付与するもの。
※ユーザーが設定することもできる。

ユーザーが設定する

以下のようにyamlファイルに書いて設定できる。特に意味を持たないメモ書き的に利用することが多い。

sample-anno.yaml
apiVersion: v1
kind: Pod
metadata:
  name: sample-web1
  annotations:
    ann1: value1
    ann2: value2
spec:
  containers:
    - name: nginx
      image: nginx:latest

システムが自動で設定する

上記のyamlファイルでデプロイしたPodを確認すると、自動で設定されたアノテーションが確認できる。

$ kubectl get pod sample-web1 -o yaml
apiVersion: v1
kind: Pod
metadata:
  annotations:
    ann1: value1  <- ユーザが設定
    ann2: value2  <- ユーザが設定
    cni.projectcalico.org/podIP: 192.168.69.238/32  <- システムが設定
    cni.projectcalico.org/podIPs: 192.168.69.238/32  <- システムが設定
    kubectl.kubernetes.io/last-applied-configuration: <- システムが設定|
      {"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{"ann1":"value1","ann2":"value2"},"name":"sample-web1","namespace":"default"},"spec":{"containers":[{"image":"nginx:latest","name":"nginx"}]}}
  creationTimestamp: "2020-03-06T12:50:14Z"
  name: sample-web1
・・・

この特性を活かして、AWSはGCPなどのマネージドKubernetesサービスで利用されているらしい。(未確認)
Kubernetesは「Build once, run anywhere」(だっけ?)が求められるので、例えばAWSでビルドされたイメージはAWS以外でもデプロイできないといけないので、環境依存がある設定にアノテーションが使われている。

なので、ユーザー自身が何かしら環境依存のあるシステムで使わない限りは意識する必要がない(と理解した)。

ラベル

ラベルはその名の通り、各リソースにラベルを付けることができる。「metadata.labels」で設定する。

sample-label.yaml
apiVersion: v1
kind: Pod
metadata:
  name: sample-web2
  labels:
    label1: sysA
    label2: prd
spec:
  containers:
    - name: nginx
      image: nginx:latest
$ kubectl get pod -L label1,label2
NAME          READY   STATUS    RESTARTS   AGE   LABEL1   LABEL2
sample-web1   1/1     Running   0          25m
sample-web2   1/1     Running   0          52s   sysA     prd

ユースケースとしては、システムごと(sysA, sysB, sysCなど)、環境ごと(prd, stg, devなど)なんかが考えられる。

ラベルを基にReplicasetを作成したり、LBが転送したりするようなので、これらを試すときに意識しておこう。

5
2
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
5
2