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: 4005
apiVersion
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: 4005
Deployment と 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 をそれぞれ分けて判別しているのがわかる。