# 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
1
2
3

# 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のパッケージ仕様を参照してください。

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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 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)を利用する場合
modules:
- name: my-awesome-adapter.example
  remote:
    repo: https://github.com/myorg/my-own-adapters.git
    revision: v0.1.2
    path: .valuestream
1
2
3
4
5
6

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
1

ローカルディレクトリにあるmoduleを利用する場合
localのフィールドには以下の内容を記述します。

  • 必須フィールド
    • path: QVS Configがあるディレクトリから、moduleのルートディレクトリまでの相対パスを指定します。
  • QVS Configと同じディレクトリにあるアダプターを利用する場合
modules:
- name: my-awesome-adapter.local
  local:
    path: .
1
2
3
4
従来の指定方法

namerevisionをペアとして、Cloud Native Adapterを読み出すGitリポジトリを指定します。
nameにはdesignPatternsフィールドで使用する各Cloud Native Adapterを配置しているrepositoryのGit Clone URLをHTTPSまたはSSHの形式で指定します。
revisionにはnameで指定したrepositoryで利用したいコミットハッシュ (git revision) を指定します。

  • GitリポジトリにHTTPSで接続する場合
    modules:
    - name: https://example.com/myorg/user-own-adapters.git
      revision: v0.1.2
    
    1
    2
    3
    • nameは"https://"と".git"を省略して指定できます。
      modules:
      - name: example.com/myorg/user-own-adapters
        revision: v0.1.2
      
      1
      2
      3
  • プライベートリポジトリのCloud Native Adapterを参照してManifestを生成する際は、実行環境で環境変数のGIT_TOKENにGitのアクセストークンを設定してください。

Warning

これまでGitアクセストークンの指定にはGITHUB_TOKENという環境変数を用いていましたが、こちらは非推奨となります。
HTTPS接続にはGIT_TOKENを使用してください。

  • GitリポジトリにSSHで接続する場合
    modules:
    - name: [email protected]:myorg/user-own-adapters.git
      revision: v0.1.2
    
    1
    2
    3
    • 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)の形で指定します。

Last Updated: 2024/05/14 +09:00