Appearance
Kubernetes ManifestからInfrastructure Adapterへの変換
既存のKubernetes ManifestをInfrastructure Adapterに変換する方法を解説します。本機能によって、0からInfrastructure Adapterを書かずに、既に動作確認ができているKubernetes Manifestを活用して、Qmonus Value StreamのCI/CDパイプラインを素早く作り上げることが可能です。
事前準備として、Qmonus Value Stream CLI のインストールに従って、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をそれぞれresource0
、resource1
、resource2
、・・・、と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のパッケージ仕様を参照してください。