LabelとAnnotation
KubernetesにはDeploymentやServiceなどのリソースにLabelとAnnotationという識別子をつけることができます。
それぞれ役割があるので説明したいと思います。
Label
Labelは他のリソースから参照するときに使用します。
例えば、IngressからServiceにリクエスを流すとき、ServiceからDeploymentで設定しているLabelを指定することでリクエストを制御することができます。
まず、service.yamlのselectorでkey: app、value: sample-deploymentというLabelを作ります。
# service.yaml apiVersion: v1 kind: Service metadata: name: sample-service spec: selector: app: sample-deployment
次にdeployment.yamlにselector.matchLabelsにkey: app、value: sample-deploymentのLabelを追加するだけです。
# deployment.yaml apiVersion: v1 kind: Deployment metadata: name: sample-deployment spec: replicas: 1 selector: matchLabels: app: sample-deployment
これだけでリクエストをServiceからDeploymentに流せます。
Labelの使い方はこんな感じです。
Annotation
Annotationも識別子をつけるためなのですが、用途が少し違います。
下記ドキュメントにも書いてありますが、基本的にメタデータを保持させておきます。
https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
例えば、イメージのビルドID、リリース時のタイムスタンプなど、バージョンに関する情報を持たせたりします。
Annotationにはバージョン情報などのメタデータを持たせるので、CIでつけるのがいいかと思います。下記コマンドで付けることができます。
$ kubectl annotate --overwrite deployment sample-deployment image=BUILD_ID
おすすめ書籍
Dockerの使い方から説明されているので初心者の方も安心して学べる書籍です。
Kubernetesに関してはPod, Service, Deploymentなどを順を追って説明し、実際に動かすところまでを解説しているので非常に実践的な内容となっています。
これからKuebernetesを使ってサービスを開発してみたい方にとって最初のよい手助けとなると思います。是非読んでみてください。
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す