GCEのContainer Optimized OS上で、コンテナを実行してバッチ処理をすることを考える
そして、このコンテナ起動時にアプリに変数を渡したい
これまで、Jibでイメージを作成していて、作成する際に実行時のオプションを指定するようにしていたが、Jibを使わずにイメージをつくること検討していて、この変数を環境変数としてコンテナ起動時に設定できないかを考えている uga-box.hatenablog.com
マニフェストに環境変数を設定する
コンテナ用に最適化されたインスタンステンプレートを作成するのにCloud Deployment Manager
を利用している
cloud.google.com
上のドキュメントにもあるが、GCE上でコンテナを使用するにはコンテナのマニフェストを定義する必要があるが、マニフェスト自体のドキュメントはみつからず環境変数が設定できるのか、どう設定すれば良いのかがわからない
# Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # This is a container manifest, as described here: # https://cloud.google.com/compute/docs/containers/container_vms apiVersion: v1 kind: Pod metadata: name: simple-echo spec: containers: - name: simple-echo image: gcr.io/google-samples/hello-app:2.0 imagePullPolicy: Always ports: - containerPort: 8080 hostPort: 8080
マニフェストの構成みると、Kubernetes Podの設定マニフェスト?にみえるので
Kubernetesのドキュメントを調べてみる コンテナの環境変数の定義 | Kubernetes
すると、環境変数を以下のように設定できるみたい
apiVersion: v1 kind: Pod metadata: name: envar-demo labels: purpose: demonstrate-envars spec: containers: - name: envar-demo-container image: gcr.io/google-samples/node-hello:1.0 env: - name: DEMO_GREETING value: "Hello from the environment" - name: DEMO_FAREWELL value: "Such a sweet sorrow"
実際に設定してみたら問題なく動いたので、上のように書くでよさそう
ちなみに設定したかったのはSpring Bootでapplication.propertiesを切り替えるための環境変数で、SPRING_PROFILES_ACTIVE
を設定した