真也Tweet今回と次回の2回に渡って、5種類に大別されるKubernetesのリソースのうち、Config&Storageリソースを解説する。Config&Storageリソース連載の第3回目で、Kubernetesのリソースは5種類に大別されることをお話しました。そのうちの1つであるConfig&Storageリソースについて、今回と次回の2回で解説します。リソースを操作する系統のリソースConfig&Storageリソースは、コンテナに対して設定ファイル、パスワードなどの機密情報などをインジェクトしたり、永続化ボリュームを提供したりするためのリソースです。内部的に利用されているものを除いて、利用者が直接利用するものとしては、全部で3種類のConfig&Storageリソースが存在します。SecretConfigMapPersistentVolumeClaim環境変数の利用Kubernetesでは、個別のコンテナに対する設定の内容は環境変数やファイルが置かれた領域をマウントして渡すことが一般的です。そこで、リソースの解説に入る前に、Kubernetesでの環境変数の扱いについて解説します。Kubernetesで環境変数を渡す際には、podテンプレートにenvまたはenvFromを指定します。大きく分けて、下記の5つの情報源から環境変数を埋め込むことが可能です。その名の通りspec.containers[].envに静的な値として定義します。env-sample.ymlコンテナ内から見てみると、環境変数が設定されていることを確認できます。Address、起動時間などのPodに関する情報は、fieldRefを使うことで参照できます。yaml」などで確認できます。一部抜粋すると、登録したYAMLファイルの情報とは別に、PodのIPやホストの情報といった様々な情報が追加されていることが確認できます。2018-05-27T05:23:00Z...(省略)...今回は起動しているホスト名を環境変数として登録してみます。先ほど出力したYAMLの形式に沿ってKeyを指定するため、spec.nodeNameを指定します。env-pod-sample.ymlコンテナ内から見てみると、環境変数が設定されていることを確認できます。K8S_NODEK8S_NODE=tmp-check-iyhhhlpiq-ake-ntmqohpContainerの情報Podの情報と同様に、Containerに関する情報はresourceFieldRefを使うことで参照することが可能です。Podには複数のContainerの情報が含まれており、各Containerに対して設定可能な値についてはfieldRefでは参照できない点に注意してください。yaml」などで確認することができます。env-container-sample.ymlコンテナ内から見てみると、環境変数が設定されていることを確認できます。機密情報などは別途Secretリソースを作成し、環境変数として参照させることが推奨されています。詳しくはSecretリソースの項目で説明します。単純なKey-Value値や設定ファイルなどは、ConfigMapで管理することが可能です。Podに都度環境変数を埋め込んでも問題ありませんが、一括での変更や重複が多い場合にはConfigMapの利用を検討して下さい。詳しくはConfigMapリソースの項目で説明します。環境変数利用時の注意点Kubernetesで渡される環境変数には、少し癖があります。下記のPodのテンプレートは一見すると正しく動作して、コンテナ起動後に「100」と「ホスト名」が出力されるように見えます。${HOSTNAME}という文字列が出力されてしまいます。commandやargsで実行するコマンドを指定する際に通常通り環境変数を利用することはできません。厳密に言うと、Podテンプレート内で定義された環境変数に限り(TESTENV)という形式で呼び出すことが可能です。${}ではなく$()を利用するということです。これに従い上述のテンプレートを書き直すと、下記のようになります。$(HOSTNAME)と出力されます。command,argsで参照可能なのは、そのPodテンプレート内で定義された環境変数のみ(この場合はTESTENV)だということに注意して下さい。OSからしか参照できない環境変数を利用する場合には、Entrypoint(command)をentrypoint.shなどのシェルスクリプトにして、シェルスクリプト内で処理を行うようにして下さい。ITの連載記事『今こそ始めよう!Kubernetes入門』の内容を元に、大幅加筆して書籍化したものです。Kubernetesを触ったことがない方でも、そのコンセプトを理解し、実際にアプリケーションをコンテナ化して実行できるようになることを目標にしています。Agency2016年入社。OpenStackを使ったプライベートクラウドやGKE互換なコンテナプラットフォームをゼロから構築し、国内カンファレンスでのKeynoteに登壇。Administratorの認定資格を取得。Daysの運営などコミュニティ活動にも従事している。第9回KubernetesのConfig&Storageリソース(その2)2018/6/6連載9回目となる今回は、Config&Storageリソースのうち、PersistentVolumeClaimについて解説する。第8回KubernetesのConfig&Storageリソース(その1)2018/5/31今回と次回の2回に渡って、5種類に大別されるKubernetesのリソースのうち、Config&Storageリソースを解説する。第7回KubernetesのDiscovery&LBリソース(その2)2018/5/16前回に引き続き、Discovery&LBリソースのServiceとIngressを紹介する。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。