Kubernetes入門:Komposeで作成されたファイルの解説(php-fpm-deployment.yaml)

スポンサーリンク
Kubernetes入門:Komposeで作成されたファイルの解説(php-fpm-deployment.yaml) 用語解説
Kubernetes入門:Komposeで作成されたファイルの解説(php-fpm-deployment.yaml)
この記事は約8分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、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で作成されたファイルを解説していきたいと思います。

よっしー
よっしー

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

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました