UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【GCP】Cloud Deployment Managerでインスタンステンプレート作成時に環境変数を設定する

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を設定した