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.yamlCloud 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: trueQVS 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を指定します。remoteorlocal: リモートリポジトリ、または、ローカルディレクトリにあるモジュールを利用する場合のいずれかに応じて排他的に指定します。それぞれのフィールドの詳細は、次節を参照してください。
リモートリポジトリ(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: .valuestreamnameで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.2nameは"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: git@example.com: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)の形で指定します。