Mitomex Blog

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-srvsrv は 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 のメイン部分。

portClusterIP 自身のポート番号。

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行が表示される。

image01

1行目が Deployment を適用した結果。今回は変更していないので unchanged

2行目が ClusterIP を適用した結果。 craeted と表示されている。

Kubernetes が Deployment と ClusterIP をそれぞれ分けて判別しているのがわかる。