Skip to content

Kubernetes ManifestからInfrastructure Adapterへの変換

既存のKubernetes ManifestをInfrastructure Adapterに変換する方法を解説します。本機能によって、0からInfrastructure Adapterを書かずに、既に動作確認ができているKubernetes Manifestを活用して、Qmonus Value StreamのCI/CDパイプラインを素早く作り上げることが可能です。

事前準備として、ツールのインストール手順に従って、Qmonus Value Stream CLI qvsctlをインストールしてください。本ガイドで紹介するコマンドの詳細は、CLIリファレンスを参照してください。

また、Cloud Native Adapterのパッケージ仕様に従って、cue.mod/module.cueを使ったモジュール定義ができているリポジトリで作業をしてください。

ImportコマンドによるInfrastructure Adapterの生成

Qmonus Value Stream CLIのImportコマンドを実行して、Kubernetes ManifestからInfrastructure Adapterを作成します。以下のとおり、入力Manifestのファイルまたはディレクトリパス、および出力するInfrastructure Adapterファイル名を指定して実行します。

bash
qvsctl adapter import -f ${inputFileOrDir} -o ${outputFileOrDir}

例えば、manifest.yamlを読み込み、k8s/api/main.cueを作成するためには、以下のとおり実行します。

bash
qvsctl adapter import -f manifest.yaml -o k8s/api/main.cue

ここで生成したInfrastructure Adapterは、以下のように読み出したManifestをそれぞれresource0resource1resource2、・・・、とIDをインクリメントしてリソースIDとして付与します。

package REPLACE_ME

DesignPattern: {
  name:        "REPLACE_ME"
  description: "REPLACE_ME"
  resources: {
    app: {
      resource0: ...  // インポートしたManifest#1
      resource1: ...  // インポートしたManifest#2
      resource2: ...  // インポートしたManifest#2
      ...
    }
  }
}

Infrastructure Adapterのパッケージ名を付与

前手順で作成されたInfrastructure Adapterはパッケージ名がREPLACE_MEとなっています。ここで、REPLACE_MEを置換して、任意のパッケージ名を付与します。

bash
vi ${outputDesignPattern}
# REPLACE_MEを適切なパッケージパスに変更

例えば、パッケージ名をapiとしたい場合、以下のように編集します。

bash
vi k8s/api/main.cue
cue
package api                          // パッケージ名

DesignPattern: {
  name:        "k8s/api"             // Infrastructure Adapter short name
  description: "Sample API Service"  // Infrastructure Adapterの説明
  resources:   ...                   // インポートされたManifest
}

作業しているリポジトリのモジュールパスがgithub.com/qmonus/sample-moduleである場合、上記例で作成したInfrastructure Adapterのインポートパスはgithub.com/qmonus/sampel-module/k8s/apiとなります。 詳しくは、Cloud Native Adapterのパッケージ仕様を参照してください。