Qmonus SDKマイグレーションガイド(2023/1)
修正履歴
20230830 Apifrontのdockerfile例の一部を修正しました。
20230927 Portal/Apifrontのdockerfile例の一部を修正しました。
SDK v23.1LTS について
2023年2月に SDK Core / SDK Portal / ApiFront の新たなメジャーバージョン v23.1LTS がリリースされました。
クラウド環境での可用性を高めるクラッシュリカバリ機能や、新たな処理モデル(DAG型のワークフロー)が追加されています。詳細はそれぞれのフレームワークのドキュメントを参照してください。
なお、v23.1LTSは、2025年1月末までのサポート期間を設定しています。
本ドキュメントでは、新たなメジャーバージョン利用の注意点やアプリケーションコードへの影響について記載します。
リリースノート
v22.2LTS系、v22.7LTS系からのマイグレーション
SDK Core
- 既存のアプリケーションコードの変更は基本的に不要ですが、使用しているmoduleに変更がありますのでv22.7->v23.1LTSでのmodule差分をご確認ください。
SDK Portal / ApiFront
- 既存のアプリケーションコードや設定変更は不要です。
コンテナイメージ提供ポリシーの変更について
v22.7系以前ではSDKが載ったコンテナイメージをQmonus SDKとして提供しておりましたが、v23.1LTSよりフレームワークを含むイメージをベースイメージに指定することでユーザー側でdockerfileをカスタマイズ可能になります。下記にDockerfileの例を記載します。
- 便宜上、axis-core(Qmonus SDK Core)、frontal(Qmonus Portal)、casval(Qmonus ApiFront)の語句を使用しております。
- サポート対象外のOSをSDKのベースイメージとして指定することは可能ですが、これに関連するチケット対応等はいたしません。
- ユーザープラグインに記載するDockerfileのサンプル
- SDK Core
- コード例
ARG AXIS_CORE_TAG='v23.1LTS' FROM asia.gcr.io/axis-gcp-dev-46876560/axis:${AXIS_CORE_TAG} AS core-base ARG PLUGIN_NAME='non-func-test_plugins' ARG pip_install_options='' # Main Build FROM python:3.10-slim-bullseye RUN set -x \ && apt-get -y update \ && apt-get -y upgrade \ && apt-get -y install gcc \ git \ curl \ nano \ libnss3 \ libcurl4-openssl-dev \ libssl-dev \ locales \ && pip3 install ${pip_install_options} --upgrade pip \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* \ && mkdir /root/axis-stable/ COPY --from=core-base /root/entrypoint.sh /root/entrypoint.sh COPY --from=core-base /root/axis-stable/axis /root/axis-stable/axis COPY --from=core-base /root/axis-stable/requirements.txt /root/axis-stable/requirements.txt COPY --from=core-base /root/watcher /root/watcher RUN export PYCURL_SSL_LIBRARY=openssl && \ pip3 install ${pip_install_options} -r /root/axis-stable/requirements.txt && \ localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 RUN mkdir -p /var/plugins/${PLUGIN_NAME} COPY . /var/plugins/${PLUGIN_NAME} RUN ([ -e /var/plugins/${PLUGIN_NAME}/requirements.txt ] && \ pip3 install -r /var/plugins/${PLUGIN_NAME}/requirements.txt) ENV LANG ja_JP.UTF-8 WORKDIR /root/axis-stable ENTRYPOINT ["/root/entrypoint.sh", \ "python3", \ "axis/main.py" ] - SDK Coreのコンテナ提供時のイメージファイルには、外径監視に利用するAPIをプラグインとしてバンドルしています。そのためご利用者でDockerfileのカスタマイズを実施する場合は、後方互換のため上記サンプルで提示しているように、外径監視プラグイン(/root/watcher)も必ず含めるようにしてください。なお、v23.1のCore APIを用いた外径監視の新たなプラクティスについて、別途サポートより案内する予定です。
- コード例
- SDK Portal
- コード例(debian11)
## ## User Application Dockerfile Example ## ## Select published version FROM asia.gcr.io/axis-gcp-dev-46876560/frontal:v23.1LTS as frontal ## select base os image FROM node:18-bullseye-slim ## copy framework code WORKDIR /root COPY --from=frontal /root/frontal-stable /root/frontal-stable RUN set -x \ ## install npm packages && cd /root/frontal-stable \ && npm ci --production ARG PLUGIN_NAME='non-func-test_plugins' RUN mkdir -p /var/plugins/${PLUGIN_NAME} ADD . /var/plugins/${PLUGIN_NAME} ENV LANG ja_JP.UTF-8 WORKDIR /root/frontal-stable ENTRYPOINT [ "npm", "run", "start" ] EXPOSE 8880 EXPOSE 8881 - コード例(centos7)
## ## User Application Dockerfile Example ## ## Select published version FROM asia.gcr.io/axis-gcp-dev-46876560/frontal:v23.1LTS as frontal ## select base os image FROM centos:7.6.1810 ## copy framework code WORKDIR /root COPY --from=frontal /root/frontal-stable /root/frontal-stable RUN set -x && \ curl -sL https://rpm.nodesource.com/setup_18.x | bash - && \ ## yum install packages for 'E2E-Tester' yum update -y && \ yum install -y git \ gcc-c++ \ make \ bzip2 \ libX11 \ libXcomposite \ libXcursor \ libXext \ libXi \ libXtst \ cups-libs \ libXScrnSaver \ libXrandr \ alsa-lib \ atk \ at-spi2-atk \ pango \ gtk3 \ ipa-pgothic-fonts \ ipa-gothic-fonts \ nodejs \ gettext && \ rm -rf /var/cache/yum/* && \ yum clean all && \ cd /root/frontal-stable && \ npm ci --production && \ localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 && \ mkdir -p /root/frontal-configs/dashboards ARG PLUGIN_NAME='non-func-test_plugins' RUN mkdir -p /var/plugins/${PLUGIN_NAME} ADD . /var/plugins/${PLUGIN_NAME} ENV LANG ja_JP.UTF-8 WORKDIR /root/frontal-stable ENTRYPOINT [ "npm", "run", "start" ] EXPOSE 8880 EXPOSE 8881
- コード例(debian11)
- SDK ApiFront
- コード例
ARG CASVAL_CORE_TAG='v23.1LTS' # Build casval plugin image FROM asia.gcr.io/axis-gcp-dev-46876560/casval:${CASVAL_CORE_TAG} AS casval FROM node:18-bullseye-slim COPY --from=casval /root/casval-stable/ /root/casval-stable/ WORKDIR /root RUN set -x \ ## install npm packages && cd /root/casval-stable \ && npm ci --production \ ## clean npm cache && npm cache clean --force \ && rm -rf ~/.npm ENV LANG ja_JP.UTF-8 WORKDIR /root/casval-stable ENTRYPOINT [ "npm", "run", "start" ] EXPOSE 8080 COPY . /root/casval-app # Symbolic link for secret rendered config file RUN ln -sf /var/configs/config.yml /root/casval-app - コード例(centos7)
## ## User Application Dockerfile Example ## ARG CASVAL_CORE_TAG='v23.1LTS' # Build casval plugin image FROM asia.gcr.io/axis-gcp-dev-46876560/casval:${CASVAL_CORE_TAG} AS casval ## select base os image FROM centos:7.6.1810 COPY --from=casval /root/casval-stable/ /root/casval-stable/ WORKDIR /root RUN set -x && \ curl -sL https://rpm.nodesource.com/setup_18.x | bash - && \ yum update -y && \ yum install -y git \ gcc-c++ \ make \ bzip2 \ libX11 \ libXcomposite \ libXcursor \ libXext \ libXi \ libXtst \ cups-libs \ libXScrnSaver \ libXrandr \ alsa-lib \ atk \ at-spi2-atk \ pango \ gtk3 \ nodejs \ gettext && \ rm -rf /var/cache/yum/* && \ yum clean all && \ cd /root/casval-stable && \ npm ci --production && \ localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 ENV LANG ja_JP.UTF-8 WORKDIR /root/casval-stable ENTRYPOINT [ "npm", "run", "start" ]
- コード例
- SDK Core
v23.1からSDK Portal / ApiFrontの公式コンテナイメージのベースOSが、centos(Red Hat系)から、bullseye(Debian系)に変更されています。公式コンテナイメージをベースとしたDockerfileのカスタマイズでは、利用するパッケージマネージャーに変更がある点に注意してください。
また、ベースOSの見直しに伴い、標準でバンドルしているパッケージも変更されています。Value Streamによるデプロイで、sedやenvsubstコマンドを利用して起動ファイルの書き換えをおこなっている場合は、Dockerfileで利用するコマンドを含むパッケージをインストールする必要があります。
- サポート対象のOS
- SDK Core
python:3.10-slim-bullseye
(debian11)
- SDK Portal / ApiFront
node:16-bullseye-slim
(debian11) ※v24系よりサポート対象外node:18-bullseye-slim
(debian11) ※推奨centos:7.6.1810
(centos7)
- SDK Core
サポートするミドルウェアのバージョンに関して
v23.1LTS以降ではサポートするミドルウェアのバージョンを規定します。
- サポートするミドルウェアバージョン
- MySQL
- 5.7, 8.0
- PostgreSQL
- 12, 15
- redis
- 6.2
- MySQL
v22系に既に移行しており、かつGCPをご利用いただいているユーザーの皆様
検証環境(stg環境)および商用環境(prod環境)のmemorystoreのパラメータにredis_versionとしてREDIS_6_Xを指定して頂いている場合、起動するredisインスタンスのバージョンは6.2系となりますのでstg環境以降でterraform等におけるmiddlewareの設定変更は不要となります。
参考:
- https://cloud.google.com/memorystore/docs/redis/supported-versions?hl=ja#redis_version_6x
- https://github.com/qmonus/qmonus-terraform/blob/e82dc0b6057a934f773bc2f664fdc9c07be40b33/base-template/gcp/environments/prod01/middleware.tf#L102-L123
Qmonus SDK Labのmicroservice設定画面において、v22系を選択する場合Qmonus SDKのミドルウェア選択時にredis-6.0がデフォルトで選択されておりますのでご注意ください。
v21系バージョンからのマイグレーション
SDK Core / Portal / ApiFront
- v22.2LTSへのマイグレーションガイドを参考に、アプリケーションコードや設定変更を実施してください。