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

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

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

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

よっしー
よっしー

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

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

コメント

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