こんにちは。よっしーです(^^)
今日は、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-deployment.yaml
ファイル内容は下記になります。
apiVersion: apps/v1
kind: Deployment
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:
replicas: 1
selector:
matchLabels:
io.kompose.service: php-fpm
strategy:
type: Recreate
template:
metadata:
annotations:
kompose.cmd: kompose convert -f ../kompose_sample/compose.yml --volumes=hostPath
kompose.version: 1.28.0 (c4137012e)
creationTimestamp: null
labels:
io.kompose.network/kompose-sample-net: "true"
io.kompose.service: php-fpm
spec:
containers:
- image: kompose_sample/php-fpm:0.0.1
name: php-fpm
ports:
- containerPort: 9000
resources: {}
volumeMounts:
- mountPath: /var/www/html/info.php
name: php-fpm-hostpath0
restartPolicy: Always
volumes:
- hostPath:
path: /.../kompose_sample/php-fpm/info.php
name: php-fpm-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.version: 1.28.0 (c4137012e)
creationTimestamp: null
labels:
io.kompose.service: php-fpm
name: php-fpm
metadata
セクションでは、Deploymentリソースのメタデータを指定します。annotations
は注釈情報であり、このDeploymentが作成される際に使用されたコマンドやバージョンなどの追加情報を示します。creationTimestamp
は作成時刻を表すタイムスタンプです。labels
はキーバリューペアの形式でラベルを指定し、このDeploymentを識別するために使用されます。name
はDeploymentの名前を指定します。
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: php-fpm
strategy:
type: Recreate
template:
metadata:
annotations:
kompose.cmd: kompose convert -f ../kompose_sample/compose.yml --volumes=hostPath
kompose.version: 1.28.0 (c4137012e)
creationTimestamp: null
labels:
io.kompose.network/kompose-sample-net: "true"
io.kompose.service: php-fpm
spec:
containers:
- image: kompose_sample/php-fpm:0.0.1
name: php-fpm
ports:
- containerPort: 9000
resources: {}
volumeMounts:
- mountPath: /var/www/html/info.php
name: php-fpm-hostpath0
restartPolicy: Always
volumes:
- hostPath:
path: /.../kompose_sample/php-fpm/info.php
name: php-fpm-hostpath0
strategy
セクションでは、Deploymentのアップデート戦略を指定します。この例ではRecreate
となっており、新しいバージョンのポッドを作成して古いポッドを削除する方法を使用します。
template
セクションはDeploymentが管理するポッドのテンプレートを定義します。metadata
内のannotations
は注釈情報を示し、Deploymentが作成される際のコマンドやバージョンなどの追加情報を提供します。labels
はDeployment内のポッドを識別するためのラベルを指定します。
containers
では、ポッド内で実行されるコンテナの設定を指定します。この例では、kompose_sample/php-fpm:0.0.1
というイメージを使用し、コンテナ名をphp-fpm
としています。ports
セクションでは、コンテナが公開するポート番号9000を指定しています。
volumeMounts
では、コンテナ内のファイルシステムへのボリュームのマウントポイントを指定します。この例では、/var/www/html/info.php
へのマウントポイントを設定しています。
restartPolicy
は、ポッドが停止した場合の再起動ポリシーを指定します。Always
は常に再起動することを意味します。
volumes
セクションでは、ポッド内で使用されるボリュームの設定を指定します。この例では、ホストマシンの/.../kompose_sample/php-fpm/info.php
パスにあるファイルをボリュームとして使用します。
status: {}
status
セクションはDeploymentの状態を示します。この例では空のオブジェクトが指定されていますが、デプロイメントが作成されると、Kubernetesクラスタ内で実行中のポッドの情報やスケーリング状態などがこのセクションに記録されます。
このコードは、名前が”php-fpm”でラベルが”io.kompose.service: php-fpm”と一致するポッドを1つ作成するDeploymentを定義しています。また、Deployment内のポッドは”kompose_sample/php-fpm:0.0.1″というイメージを使用し、ポート番号9000でトラフィックを受け入れるように設定されています。さらに、ホストマシン上の/.../kompose_sample/php-fpm/info.php
というパスのファイルをポッド内の/var/www/html/info.php
にマウントするボリュームも定義されています。
このようなDeploymentを使用することで、Kubernetesクラスタ上でアプリケーションをデプロイし、スケーリングやローリングアップデートなどの機能を利用することができます。
おわりに
今日は、Komposeで作成されたphp-fpm-deployment.yamlについてご紹介しました。次回も、Komposeで作成されたファイルを解説していきたいと思います。
何か質問や相談があれば、遠慮なくコメントしてください。また、エンジニア案件についても、いつでも相談にのっていますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント