Skip to content

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をキーとするフィールドにはnametypeをペアとして、アプリケーションが利用するパラメータの一覧を宣言します。 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 or local: リモートリポジトリ、または、ローカルディレクトリにあるモジュールを利用する場合のいずれかに応じて排他的に指定します。それぞれのフィールドの詳細は、次節を参照してください。

リモートリポジトリ(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: .
従来の指定方法

namerevisionをペアとして、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"を省略して指定できます。
      yaml
      modules:
      - 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接続に使用する秘密鍵のパスを設定してください。

designPatternsフィールド

designPatternsをキーとするフィールドには、Infrastructure Adapterにはpatternparams、CI/CD AdapterにはpatternpipelineParamsをペア (params, pipelineParamsは省略可) として、利用するCloud Native Adapterとそれに渡すパラメータを宣言します。 patternには利用するCloud Native Adapterのファイル名を指定します。 paramsにはpatternで指定したCloud Native Adapterに渡すパラメータを直接指定もしくは、paramsで指定した値を$(params.xxxXxx)の形で指定します。