
こんにちは。よっしーです(^^)
今日は、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
nginx-deployment.yaml
ファイル内容は下記になります。
apiVersion: apps/v1
kind: Deployment
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
name: nginx
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: nginx
strategy:
type: Recreate
template:
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.network/kompose-sample-net: "true"
io.kompose.service: nginx
spec:
containers:
- image: kompose_sample/nginx:0.0.1
name: nginx
ports:
- containerPort: 80
resources: {}
volumeMounts:
- mountPath: /etc/nginx/conf.d/default.conf
name: nginx-hostpath0
restartPolicy: Always
volumes:
- hostPath:
path: /xxx/kompose_sample/nginx/default.conf
name: nginx-hostpath0
status: {}
このコードは、Kubernetesのデプロイメント(Deployment)リソースを定義するためのYAMLファイルです。以下では各セクションごとに解説します。
apiVersion: apps/v1
kind: Deployment
この部分は、APIバージョンとリソースの種類を指定しています。このコードはKubernetesのDeploymentリソースを作成するためのものであり、apps/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
name: nginx
metadataセクションでは、Deploymentリソースのメタデータを指定します。annotationsは注釈情報であり、このDeploymentが作成される際に使用されたコマンドやバージョンなどの追加情報を示します。creationTimestampは作成時刻を表すタイムスタンプです。labelsはキーバリューペアの形式でラベルを指定し、このDeploymentを識別するために使用されます。nameはDeploymentの名前を指定します。
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: nginx
strategy:
type: Recreate
specセクションでは、Deploymentの仕様を指定します。replicasはデプロイするポッドのレプリカ数を指定します。selectorは、このDeploymentが管理するポッドのセレクターを指定します。この場合、io.kompose.service: nginxというラベルを持つポッドが選択されます。strategyはDeploymentのアップデート戦略を指定します。type: Recreateは、新しいバージョンのポッドを作成して古いバージョンのポッドを削除することを意味します。
containers:
- image: kompose_sample/nginx:0.0.1
name: nginx
ports:
- containerPort: 80
resources: {}
volumeMounts:
- mountPath: /etc/nginx/conf.d/default.conf
name: nginx-hostpath0
spec.template.spec.containersセクションでは、ポッド内のコンテナの設定を指定します。この例では、1つのコンテナが定義されています。imageは使用するコンテナイメージを指定します。nameはコンテナの名前を指定します。portsはコンテナが公開するポート番号を指定します。この場合、ポート番号80が指定されています。
resourcesはコンテナへのリソースの制限や要求を指定するためのセクションですが、この例では空の設定となっています。
volumeMountsはコンテナにマウントするボリュームの設定を指定します。mountPathはボリュームをマウントするパスを指定します。nameはボリュームの名前を指定します。
restartPolicy: Always
volumes:
- hostPath:
path: /xxx/kompose_sample/nginx/default.conf
name: nginx-hostpath0
spec.template.spec.restartPolicyは、ポッドの再起動ポリシーを指定します。Alwaysはポッドがクラッシュした場合やノードが再起動した場合に常に再起動されることを意味します。
volumesはポッドにマウントするボリュームのリストを指定します。この例では、ホスト上のファイルシステムの特定のパスにあるファイルをマウントしています。
最後のstatusセクションは空の状態を示しており、現在のDeploymentのステータスを追跡するために使用されます。
このコードは、名前が”nginx”でラベルが”io.kompose.service: nginx”と一致するポッドを1つ作成するDeploymentを定義しています。そのポッドには、”kompose_sample/nginx:0.0.1″というイメージが使用され、ポート番号80が公開されます。また、特定のファイルがホスト上のパスにマウントされます。
おわりに
今日は、Komposeで作成されたnginx-deployment.yamlについてご紹介しました。次回も、Komposeで作成されたファイルを解説していきたいと思います。

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


コメント