
こんにちは。よっしーです(^^)
今日は、Komposeで作成されたファイルについてご紹介します。
背景
この記事は、komposeコマンドを使用して、Docker ComposeファイルからKubernetesマニフェストに変換されたファイルについて解説しています。komposeコマンドで変換したときの記事は下記を御覧ください。
作成されたファイル一覧
Komposeによって作成されたファイルは下記になります。
kompose-sample-net-networkpolicy.yaml
nginx-deployment.yaml
nginx-tcp-service.yaml
php-fpm-deployment.yaml
php-fpm-service.yaml
nginx-tcp-service.yaml
ファイル内容は下記になります。
apiVersion: v1
kind: Service
metadata:
annotations:
kompose.cmd: kompose convert -f ../kompose_sample/compose.yml --volumes=hostPath
kompose.service.type: LoadBalancer
kompose.version: 1.28.0 (c4137012e)
creationTimestamp: null
labels:
io.kompose.service: nginx-tcp
name: nginx-tcp
spec:
ports:
- name: "8080"
port: 8080
targetPort: 80
selector:
io.kompose.service: nginx
type: LoadBalancer
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.service.type: LoadBalancer
kompose.version: 1.28.0 (c4137012e)
creationTimestamp: null
labels:
io.kompose.service: nginx-tcp
name: nginx-tcp
metadataセクションでは、Serviceリソースのメタデータを指定します。annotationsは注釈情報であり、このServiceが作成される際に使用されたコマンドやバージョンなどの追加情報を示します。creationTimestampは作成時刻を表すタイムスタンプです。labelsはキーバリューペアの形式でラベルを指定し、このServiceを識別するために使用されます。nameはServiceの名前を指定します。
spec:
ports:
- name: "8080"
port: 8080
targetPort: 80
selector:
io.kompose.service: nginx
type: LoadBalancer
specセクションでは、Serviceの仕様を指定します。portsはServiceが公開するポートの設定を指定します。この例では、ポート番号8080を指定し、ターゲットポートとしてポート番号80を指定しています。
selectorはServiceが要求を転送するためのポッドのセレクターを指定します。この場合、io.kompose.service: nginxというラベルを持つポッドが選択されます。
typeはServiceのタイプを指定します。LoadBalancerは外部ロードバランサを使用してトラフィックを分散することを意味します。
status:
loadBalancer: {}
statusセクションはServiceのステータスを示します。この例では、loadBalancerが空のオブジェクトとなっています。このフィールドは実際のロードバランサの情報が入ることがありますが、このコードでは指定されていません。
このコードは、名前が”nginx-tcp”でラベルが”io.kompose.service: nginx”と一致するポッドへのトラフィックをポート8080からポート80に転送するServiceを定義しています。また、外部ロードバランサを使用してトラフィックを分散するように設定されています。
statusセクションのloadBalancerフィールドは、現在のServiceのロードバランサの状態を示します。この例では空のオブジェクトとなっていますが、実際のロードバランサが割り当てられると、その情報がここに反映されます。
このServiceは、外部からのトラフィックをポート8080で受け取り、ポート80に対して対応するポッドに転送します。このようにServiceを使用することで、ポッドのセレクターに基づいてトラフィックを転送し、アプリケーションの可用性とスケーラビリティを向上させることができます。
おわりに
今日は、Komposeで作成されたnginx-tcp-service.yamlについてご紹介しました。次回も、Komposeで作成されたファイルを解説していきたいと思います。

何か質問や相談があれば、遠慮なくコメントしてください。また、エンジニア案件についても、いつでも相談にのっていますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)


コメント