こんにちは。よっしーです(^^)
今日は、Komposeで作成されたファイルについてご紹介します。
背景
この記事は、komposeコマンドを使用して、Docker ComposeファイルからKubernetesマニフェストに変換されたファイルについて解説しています。komposeコマンドで変換したときの記事は下記を御覧ください。
https://yossi-note.com/migrating_from_docker_compose_with_kompose/
作成されたファイル一覧
Komposeによって作成されたファイルは下記になります。
kompose-sample-net-networkpolicy.yaml
nginx-deployment.yaml
nginx-tcp-service.yaml
php-fpm-deployment.yaml
php-fpm-service.yaml
php-fpm-service.yaml
ファイル内容は下記になります。
apiVersion: v1
kind: Service
metadata:
annotations:
kompose.cmd: kompose convert -f ../kompose_sample/compose.yml --volumes=hostPath
kompose.version: 1.28.0 (c4137012e)
creationTimestamp: null
labels:
io.kompose.service: php-fpm
name: php-fpm
spec:
ports:
- name: "9000"
port: 9000
targetPort: 9000
selector:
io.kompose.service: php-fpm
status:
loadBalancer: {}
このコードは、KubernetesのServiceリソースを定義するためのYAMLファイルです。以下では各セクションごとに解説します。
apiVersion: v1
kind: Service
この部分は、APIバージョンとリソースの種類を指定しています。このコードはKubernetesのServiceリソースを作成するためのものであり、v1のAPIバージョンを使用しています。
metadata:
annotations:
kompose.cmd: kompose convert -f ../kompose_sample/compose.yml --volumes=hostPath
kompose.version: 1.28.0 (c4137012e)
creationTimestamp: null
labels:
io.kompose.service: php-fpm
name: php-fpm
metadata
セクションでは、Serviceリソースのメタデータを指定します。annotations
は注釈情報であり、このServiceが作成される際に使用されたコマンドやバージョンなどの追加情報を示します。creationTimestamp
は作成時刻を表すタイムスタンプです。labels
はキーバリューペアの形式でラベルを指定し、このServiceを識別するために使用されます。name
はServiceの名前を指定します。
spec:
ports:
- name: "9000"
port: 9000
targetPort: 9000
selector:
io.kompose.service: php-fpm
spec
セクションでは、Serviceの仕様を指定します。ports
セクションでは、このServiceが公開するポートの設定を行います。この例では、ポート番号9000を公開しており、name
は”9000″となっています。port
はServiceが外部に公開するポート番号を指定し、targetPort
はServiceがバックエンドのPodに転送するポート番号を指定します。
selector
は、このServiceがトラフィックを転送する対象となるPodを選択するためのセレクターを指定します。この例では、ラベルが”io.kompose.service: php-fpm”と一致するPodを選択しています。
status:
loadBalancer: {}
status
セクションはServiceの状態を示します。この例では、loadBalancer
は空のオブジェクトとなっています。Serviceが外部ロードバランサーを使用する場合、ここにロードバランサーの情報が記録されます。
このように定義されたServiceは、Kubernetesクラスタ内のPodに対してトラフィックの負荷分散や内部的な名前解決などの機能を提供します。外部からアクセスする場合、Serviceが公開するポート番号を使用してアクセスすることができます。
この具体的なコードでは、”php-fpm”という名前のServiceが定義されており、ポート番号9000でアクセス可能です。また、selector
を使用してラベルが”io.kompose.service: php-fpm”と一致するPodにトラフィックを転送します。
このServiceは、DeploymentやPodと組み合わせて使用されることが一般的であり、外部からのトラフィックを受け入れるエンドポイントとして機能します。
おわりに
今日は、Komposeで作成されたphp-fpm-service.yamlについてご紹介しました。
何か質問や相談があれば、遠慮なくコメントしてください。また、エンジニア案件についても、いつでも相談にのっていますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント