Kubernetes の Cluster IP Service を作るために必要な yaml ファイルの書き方
Jan 15, 2021
記述例
apiVersion: v1
kind: Service
metadata:
name: event-bus-srv
spec:
selector:
app: event-bus
ports:
- name: event-bus
protocol: TCP
port: 4005
targetPort: 4005apiVersion
apiVersion は表示させたい Kubernetes Object のセットを指定する。
kind
kind は apiVersion で指定した Kubernetes Object セットの中から使いたいタイプを指定する。
metadata
metadata はオブジェクトの情報を指定する。名前など。
posts-srv の srv は service の略。
spec
オブジェクトに適用するものを指定する。
spec は specification の略で、仕様書の意味。
type
type は Service のどのタイプかを指定。今回は ClusterIP 。
type のデフォルトの設定が ClusterIP であるため、ClusterIP を指定する場合 type は省略可能。
上記記述例では省略している。
selector
selector はどの Pod との通信を管理するのかを指定する。
今回は app: event-bus を指定。ここで指定されたものを Deployment Object の template にある labels から探してくる。
ports
ports が ClusterIP のメイン部分。
port が ClusterIP 自身のポート番号。
targetPort が通信する Pod のポート番号。Pod 内で稼働しているアプリが受け付けているポート番号。
ClusterIP を記述する場所
ClusterIP は Pod と密接なつながりがあるため、 Deployment の yaml ファイルに書く。
記述例
apiVersion: apps/v1
kind: Deployment
metadata:
name: event-bus-depl
spec:
replicas: 1
selector:
matchLabels:
app: event-bus
template:
metadata:
labels:
app: event-bus
spec:
containers:
- name: event-bus
image: mitomex/event-bus
---
apiVersion: v1
kind: Service
metadata:
name: event-bus-srv
spec:
selector:
app: event-bus
ports:
- name: event-bus
protocol: TCP
port: 4005
targetPort: 4005Deployment と ClusterIP の区切りを --- ダッシュ3つで行う。
これは yaml の書式。
ClusterIP を Kubernetes に適用する
NodePort を Kubernetes に適用するには、yaml ファイルがあるディレクトリで以下のコマンドを実行する。
kubectl apply -f <yaml ファイル名>今回は event-bus-depl.yaml に ClusterIP の設定も記述しているので
kubectl apply -f event-bus-depl.yamlとなる。
実行すると以下のような2行が表示される。
1行目が Deployment を適用した結果。今回は変更していないので unchanged 。
2行目が ClusterIP を適用した結果。 craeted と表示されている。
Kubernetes が Deployment と ClusterIP をそれぞれ分けて判別しているのがわかる。