Appearance
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をそれぞれ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.cuecue
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のパッケージ仕様を参照してください。
