config.yaml の使用

拡張ランタイムを有効にすると、移行アーティファクトを生成する際に、Migrate for Anthos and GKE によって新しいアーティファクト ファイル(config.yaml)が作成されます。このファイルを使用して、デプロイされたコンテナでのアプリケーションの初期化を制御します。

たとえば、コンテナを移行したら、config.yaml ファイルを編集してアプリケーションの初期化を次のように制御します。

  • ファイルからアプリケーションを削除する
  • ファイルにアプリケーションを追加する
  • アプリケーションの初期化プロパティを編集する

config.yaml ファイルの例を以下に示します。

version: v1beta1
env:
  - name: KEY1
    value: VALUE1
  - name: KEY2
    value: VALUE2
applications:
    - name: nginx
      type: forking
      envfile: /path/to/file.txt
      env:
        - name: KEY3
          value: VALUE3
      start:
        cmd: /usr/sbin/nginx -g 'daemon on; master_process on;'
      pidfile: /run/nginx.pid
    - name: ssh@
      type: simple
      start:
        cmd: /usr/sbin/sshd -i $SSHD_OPTS
        ignore_errors: true
    - name: suitecrm
      type: exec
      start:
        cmd: /etc/init.d/suitecrm start
      status:
        cmd: /etc/init.d/suitecrm status
    - name: mariadb
      type: notify
      prestart:
        - cmd: /usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld
        - cmd: /bin/sh -c "systemctl unset-environment _WSREP_START_POSITION"
        - cmd: /bin/sh -c "[ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1"
      start:
        cmd: /usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION
      poststart:
        - cmd: /bin/sh -c "systemctl unset-environment _WSREP_START_POSITION"
        - cmd: /etc/mysql/debian-start
      user: mysql
      group: mysql

このファイルの内容は以下のとおりです。

  • env: グローバル レベルまたはアプリケーション レベルの環境変数を指定します。グローバル レベルとアプリケーション レベルの両方で同じ環境変数を指定した場合、アプリケーション レベルの環境変数が優先されます。

    • グローバル レベルで設定される環境変数の場合は、env を使用して name/value ペアを指定します。名前には、ASCII の英字、数字、アンダースコアを使用できます。名前の先頭を数字にすることはできません。

    • アプリケーション レベルで設定する環境変数の場合は、env を使用して name/value ペアを指定します。または、envfile を使用して、次の形式の行を含むテキスト ファイルのパスを指定します。

      # Comments allowed
      KEY=VALUE

      env で指定された環境変数と重複する定義がこのテキスト ファイルに含まれている場合、env で指定された定義が優先されます。

  • applications: コンテナをデプロイするときに起動するアプリケーションのリストを指定し、アプリケーションの初期化プロパティを設定します。

    • name: アプリケーションの名前を指定します。

    • type では、アプリケーションのタイプを次のように指定します。

      • forking: フォークせずに start で指定されたファイルを実行します。サービスの実行可能ファイルはフォークします。pidfile も設定することをおすすめします。

      • exec: フォークしてサービスを実行します。サービスは、実行可能ファイルで exec が呼び出されると、開始したとみなされます。

      • simple - exec と同じです。simple サービスは、fork ではなく forkexec の両方を待つため、systemd 定義とは異なる動作をします。

      • notify: systemd には NOTIFY_SOCKET 環境変数が設定されていないため、sd_notify systemd 呼び出しが機能しないこと以外は、exec と同等です。

      • oneshot: 実行可能ファイルで exec が呼び出されると、サービスが開始したとみなされます。0 以外のエラーコードでサービスが終了した場合、ステータスは error になります。

    • サービスの prestartstartpoststartstatus コマンド。

      サービスを開始する際には、Migrate for Anthos and GKE は prestart コマンド(存在する場合)、次に start コマンド、最後に poststart コマンド(存在する場合)を実行します。コマンドが失敗し、ignore_errors を使用するようにコマンドを構成していない場合は、サービスが停止し、サービスのステータスにエラー メッセージが表示されます。

      アプリケーションで特定のオペレーションを行うために使用されるコマンドの形式は次のとおりです。

        command-type:
          cmd: command
          shell: /bin/sh
          ignore_errors: false
          ignore_environment_variables: false

      ここで

      • command-type: コマンドタイプを prestartstartpoststartstatus のいずれかとして指定します。

        start では、typeoneshot の場合を除き、設定できるコマンドは 1 つだけです。

        type=forking または type=oneshot の場合、poststart コマンドは start コマンドのフォーク後に実行されます。それ以外の場合は、start コマンドを実行した直後に実行されます。

      • command: オペレーションを行うために実行するコマンドを指定します。

      • shell(省略可): デフォルトでは、すべてのコマンドが /bin/sh シェルで実行されます。必要に応じて、shell/bin/bash に設定できます。

      • ignore_errors(省略可): true の場合、通常は失敗とみなされるコマンドからの終了コードが記録されますが、コマンドは成功したと見なされます。デフォルト値は false です。

        デフォルトでは、Migrate for Anthos and GKE は、接頭辞「-」を含むすべての systemd 実行可能ファイルの ignore_errorstrue に設定します。

      • ignore_environment_variables(省略可): true の場合、環境変数の置換は適用されません。デフォルト値は false です。

        デフォルトでは、Migrate for Anthos and GKE は、接頭辞「:」を含むすべての systemd 実行可能ファイルの ignore_environment_variablestrue に設定します。

    • pidfile: プロセスが実行されているかどうかの確認に使用されるサービスのプロセス ID を含む pid ファイルを指定します。

    • chdir: 開始されたプロセスの作業ディレクトリを指定します。

    • user: 新しいプロセスを開始するユーザー名を指定します。

    • group: 新しいプロセスを開始するグループ名を指定します。