Appearance
What is QVS Config
Qmonus Value Streamは、Cloud Native Adapter等を指定する設定ファイルである QVS Config (旧称 Application Config) を読み込むことで、アプリケーションのビルド・デプロイ・試験を実施します。 ここでは、QVS Configの配置場所、およびCloud Native Adapterの指定方法について説明します。
QVS Configの配置場所
QVS Configは、アプリケーションのGitリポジトリに配置します。配置例は、以下のとおりです。
Application repository
├── .valuestream/
│ └── qvs.yaml
Cloud Native Adapterの指定方法
Cloud Native Adapterの指定例は、以下のとおりです。
params
:アプリケーションが利用するパラメータの一覧を宣言します。modules
:Cloud Native Adapterを読み出すGitリポジトリを指定します。designPatterns
:利用するCloud Native Adapterとそれに渡すパラメータを宣言します。
なお、利用するCloud Native Adapterの宣言では、Cloud Native Adapterが所属するパッケージ名を指定します。QVS Configは、指定されたパッケージの中からDesignPattern
という名前の構造体/オブジェクトを探し出し、Cloud Native Adapterとして読み出します。 パッケージの詳細については、Cloud Native Adapterのパッケージ仕様を参照してください。
yaml
params:
- name: version
type: string
- name: replicas
type: int
- name: apiKey
type: secret
modules:
- name: path-to-module-repository
revision: revision-id
designPatterns:
- pattern: infrastructure-adapter-package-name
params:
appName: testApp
image: testImage:$(params.version)
replicas: $(params.replicas)
apiKey: $(params.apiKey)
- pattern: cicd-adapter-package-name
pipelineParams:
useDebug: true
QVS Configで指定する各フィールドの詳細
paramsフィールド
params
をキーとするフィールドにはname
とtype
をペアとして、アプリケーションが利用するパラメータの一覧を宣言します。 nameにはCloud Native Adapterへの引数として設定する値を一意に識別可能な名前を設定します。type
にはname
として設定する値の型を指定します。
Secret型
QVS Configのparamsではintやstringなどの一般的な型に加え、secret型を設定可能です。この設定により、Cloud Native Adapterで利用する機密情報のオブジェクトを宣言します。 そして、type: secret
が設定されたparamsは、通常のparamsと同様に、Cloud Native Adapterが要求するparamsのフィールドに対し、$(params.<name>)
の形式で機密情報のオブジェクトを参照し、フィールドの値として扱えます。
modulesフィールド
modules
をキーとするフィールドには、後述のDesignPatternsで利用するCloud Native Adapterを指定します。
各フィールドには以下の内容を記述します。
- 必須フィールド
name
: Cloud Native Adapterのmodule名、または、リモートリポジトリのURLを指定します。remote
orlocal
: リモートリポジトリ、または、ローカルディレクトリにあるモジュールを利用する場合のいずれかに応じて排他的に指定します。それぞれのフィールドの詳細は、次節を参照してください。
リモートリポジトリ(Github等)のmoduleを利用する場合remote
のフィールドには以下の内容を記述します。
- 必須フィールド
repo
: リモートリポジトリのURLを指定します。
- 任意フィールド
revision
: リポジトリのコミットハッシュやブランチ名等 (git revision) を指定します。path
: リポジトリのルートから、moduleのルートディレクトリまでの相対パスを指定します。
- Githubリポジトリ
https://github.com/myorg/my-own-adapters.git
内の、.valuestream
ディレクトリ配下にある、my-awesome-adapter.example
というモジュール(Cloud Native Adapter)を利用する場合
yaml
modules:
- name: my-awesome-adapter.example
remote:
repo: https://github.com/myorg/my-own-adapters.git
revision: v0.1.2
path: .valuestream
name
でCloud Native Adapterのmodule名を指定した場合、cue.mod/module.cue
のmodule名と照合します。 照合に失敗すると以下のエラーによりコンパイルが失敗します。
failed to initialize workspace: failed to validate module name "module-name.example": the module name "module-name.example" in the config doesn't match the module name "actual-module-name.example" in the module.cue
ローカルディレクトリにあるmoduleを利用する場合local
のフィールドには以下の内容を記述します。
- 必須フィールド
path
: QVS Configがあるディレクトリから、moduleのルートディレクトリまでの相対パスを指定します。
- QVS Configと同じディレクトリにあるアダプターを利用する場合
yaml
modules:
- name: my-awesome-adapter.local
local:
path: .
従来の指定方法
name
とrevision
をペアとして、Cloud Native Adapterを読み出すGitリポジトリを指定します。 name
にはdesignPatternsフィールドで使用する各Cloud Native Adapterを配置しているrepositoryのGit Clone URLをHTTPSまたはSSHの形式で指定します。 revision
にはname
で指定したrepositoryで利用したいコミットハッシュ (git revision) を指定します。
- GitリポジトリにHTTPSで接続する場合yaml
modules: - name: https://example.com/myorg/user-own-adapters.git revision: v0.1.2
name
は"https://"と".git"を省略して指定できます。yamlmodules: - name: example.com/myorg/user-own-adapters revision: v0.1.2
- プライベートリポジトリのCloud Native Adapterを参照してManifestを生成する際は、実行環境で環境変数の
GIT_TOKEN
にGitのアクセストークンを設定してください。
Warning
これまでGitアクセストークンの指定にはGITHUB_TOKEN
という環境変数を用いていましたが、こちらは非推奨となります。
HTTPS接続にはGIT_TOKEN
を使用してください。
- GitリポジトリにSSHで接続する場合yaml
modules: - name: [email protected]:myorg/user-own-adapters.git revision: v0.1.2
- Manifest生成時には、実行環境で環境変数の
GIT_SSH_KEY_PATH
にSSH接続に使用する秘密鍵のパスを設定してください。
- Manifest生成時には、実行環境で環境変数の
designPatternsフィールド
designPatterns
をキーとするフィールドには、Infrastructure Adapterにはpattern
とparams
、CI/CD Adapterにはpattern
とpipelineParams
をペア (params, pipelineParamsは省略可) として、利用するCloud Native Adapterとそれに渡すパラメータを宣言します。 pattern
には利用するCloud Native Adapterのファイル名を指定します。 params
にはpattern
で指定したCloud Native Adapterに渡すパラメータを直接指定もしくは、params
で指定した値を$(params.xxxXxx)の形で指定します。