Kubernetes

ConfigMapに変換値の意味を変えずに受け渡す

入力の読み方を選び、ConfigMap、Opaque Secret、ENV、文字列JSONを生成します。

ConfigMapに変換

入力

結果

このブラウザーのページメモリ内で処理し、ネットワーク要求や共有リンクで入力を送信しません。

入力原文は表示されたままです。実際の値をコピー・保存するにはマスクを解除してください。

YAMLから値だけを取り出し、メタデータは現在の設定で作り直します。Base64は暗号化ではありません。

入力とデータ各256 KiB・1000キー・出力1 MiB・UTF-8テキストのみ

テキストを入力してください

ConfigMapに変換するときは、環境変数を一つずつ登録するのか、設定ファイルを丸ごと格納するのかを先に決める必要があります。同じPORT=0080という行でも、単独の設定値とファイル内の文字列では必要な構造が異なります。

既存のマニフェストから値を取り出す場合はYAML入力を選びます。SecretのデコードではdataをBase64からUTF-8に戻し、同じキーがstringDataにもあれば後者を優先します。

ConfigMapに変換する前に見える違い

値はそのままで表現を選ぶ

ConfigMapに変換する処理と、SecretのdataまたはstringDataを作る処理を同じ入力から試せます。結果の値は最初にマスクされ、表示を解除すると全体をコピー・保存できます。マスクは結果だけに適用され、入力欄の原文は隠れません。

同じ設定値から通常のdata、エンコードしたdata、平文のstringDataを作る図。

ファイルを一つの値として保持

設定ファイルの空行や末尾の改行は、アプリケーションにとって意味を持つことがあります。ファイルモードなら全文が一つのキーに入ります。ENVモードでは代入ごとにキーが増えるので、件数から読み方を確認できます。

ENVの各代入が別々のキーになり、ファイル全体は一つのキーに入る図。

読み方と出力条件を確認する

01

ファイルを選ぶ前に入力形式を決める

ローカルファイルは現在選択した形式で読みます。拡張子による自動判定はありません。マウントする設定ファイルなら全文モードを選びます。サンプル、クリア、ファイル読込はいずれも適用前に置換内容を確認できます。

02

名前とファイルキーを確認する

生成する名前と名前空間はオプションから取得します。元のメタデータは引き継ぎません。名前空間を空にするとフィールドを省略します。ドットを含むファイルキーはYAMLやJSONで使えますが、ENV出力では制限されます。

03

最新の結果だけを出力する

入力や変換設定を変えると出力操作が無効になります。自動処理は350ミリ秒待って実行され、無効時は変換ボタンかCtrl/Cmd+Enterを使います。置換を元に戻すと、入力だけでなく以前の結果も復元します。

マニフェスト生成と値の取り出し

三つの格納形式

ConfigMapはdataに文字列を置きます。Opaque SecretはBase64のdataと平文のstringDataを選べます。出力のキーと値をすべて引用符で囲み、数値らしい文字列が別の型に変わるのを防ぎます。

上書きを数で確認

Secretのdataを先に検証してからstringDataを重ねます。同名キーの上書き件数を状態欄に表示します。後から置き換わる値でもBase64が不正なら失敗するため、壊れたデータを見逃しません。

改行を含む全文を格納

全文モードはUnicode、CRLF、末尾の改行を保ち、application.propertiesなどのキーに格納します。文字列JSONでもファイル名のようなキーや複数行の値を扱えます。入れ子のオブジェクトを平坦化する処理は行いません。

途中までの結果を出さない

重複キー、不正な名前、文字列以外の値、YAMLの構文エラーで変換を停止します。特定できる場合は行と列を示し、入力行を強調します。失敗した結果や古い結果を出力することはできません。

受け付ける形式と変換の境界

単一のテキストオブジェクト
YAMLはv1のConfigMapまたはOpaque Secretを一つだけ受け付けます。binaryData、専用Secret型、複数文書、エイリアス、マージキー、独自タグには対応しません。保守的なYAML 1.1の解釈を用い、日付や真偽値に見える値にも引用符を求めます。
ENVはdotenvとして読む
対応する引用符とコメントを解釈しますが、変数やコマンドは展開しません。引用符を値に残すkubectl --from-env-fileとは異なります。コメント、インデント、引用符の書き方は出力に引き継ぎません。
文字列と重複の扱い
JSONは平らな文字列オブジェクトに限定します。YAMLの設定値も文字列が必要で、数値、null、配列、入れ子を文字に変換しません。重複キーはエラーです。stringDataによるdataの上書きだけは明示的な仕様として扱います。
キーを勝手に変更しない
設定キーはASCIIの英数字、ドット、ハイフン、アンダースコアで253文字以内です。単独のドットや二つのドットから始まる名前は拒否します。ENVでは可搬性のある識別子のみを許可し、__proto__も拒否します。
処理量には上限がある
入力とデコード後のキー・値はそれぞれ256 KiB、最大1000項目、生成結果は1 MiBです。これはツールの上限で、Kubernetesの完全なオブジェクトサイズ検証ではありません。UTF-8以外のファイルやNUL文字も受け付けません。
元のリソースを編集しない
入力YAMLから値だけを取り出して新しく生成します。labels、annotations、immutableなどは引き継がず、名前は現在の設定に従います。Helmを展開したり、クラスターに接続したり、Pod参照やデプロイ権限を検証したりはしません。

ConfigMapに変換するときの疑問

.envファイルをKubernetesの環境変数として使うには?

ENV入力でdotenvの代入を読み、ConfigMapとして出力できます。ただし、生成しただけではPodに環境変数は設定されません。利用先でenvFromや参照先を適切に定義し、生成したdataを確認してください。

SecretのdataとstringDataはどう違いますか?

dataはBase64で表した値を持ち、stringDataには通常の文字列を書きます。同じキーが両方にある場合はstringDataが優先されます。このツールは両方を読み取れますが、後者が暗号化されるという意味ではありません。

Base64でエンコードすればパスワードは安全ですか?

いいえ。Base64は簡単に戻せるエンコードです。結果をマスクしても入力やファイルを暗号化するわけではありません。Secretを保護するには、クラスターのアクセス制御や保存先の管理が必要です。

数字に見える値を引用符で囲むのはなぜですか?

012やfalseをそのままYAMLに書くと、文字列以外として解釈される場合があります。生成時にはすべて引用符で囲みます。入力側で数値になっていた場合は、元の表記を推測して戻さずエラーにします。

設定ファイル全体を入れる場合と.envの各行を入れる場合の違いは?

ENVモードは代入ごとに別のキーを作ります。ファイルモードは原文全体を一つの値にするため、マウント用の設定文書に向いています。ファイル内の等号を追加のキーとして扱うことはありません。

コメント、引用符、重複したキーはどう扱われますか?

同じキーが繰り返されると変換を停止します。dotenvの引用符は値の解釈に使い、コメントは取り除きます。YAMLのコメントやレイアウトも残りません。内容をそのまま保存したい場合は全文モードを使ってください。

対応してほしい変換はありますか?

形式を確認してから出力する

ConfigMapに変換する例で件数と格納先を確認し、アプリケーションが期待する形式を選びましょう。最新の結果を確認したら、値を表示してコピーまたは保存できます。