こんにちは。よっしーです(^^)
今日は、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で作成されたファイルを解説していきたいと思います。
何か質問や相談があれば、遠慮なくコメントしてください。また、エンジニア案件についても、いつでも相談にのっていますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント