要約
k8s上の公開鍵を使う場合
kubectl create secret generic \
your_secret_name \
--namespace=your_namespace \
--dry-run=client \
--output=yaml \
--type=Opaque \
--from-literal=key=value | \
kubeseal \
--format=yaml \
--sealed-secret-file=your_sealed_secret.yaml \
--controller-namespace=your_sealed_secret_namespace \
--controller-name=your_sealed_secret_controller
ローカルの公開鍵をつかう場合
kubectl create secret generic \
your_secret_name \
--namespace=your_namespace \
--dry-run=client \
--output=yaml \
--type=Opaque \
--from-literal="ke=value" | \
kubeseal \
--format=yaml \
--sealed-secret-file=your_sealed_secret.yaml \
--cert=your_public_key.pem
対象読者
- k8s Secretを作るのに
base64
を使って改行が入って動かなかった方 - k8s Secretファイルを手で書いてる方
- たまにしかSealedSecretをつくらないので作り方を忘れている方
はじめに
SealedSecret作ってますか?私はたまに作ります。たまにしか作らないので
- 毎回作り方を忘れる
- 泥臭い方法を毎回使ってしまう
という状況でした。たまにしかやらないとはいえ、たまにはやるのでそろそろ勉強しようと思いました。その結果が概要に記載されたものです。one-linerと言いつつ複数行になっていますが、そこはつっこまないでください。
もうすこし細かい説明
コマンドを少し解説します。まず前半のk8s Secretの作成部分です。
kubectl create secret generic
kubectl create secret generic \
your_secret_name \
--namespace=your_namespace \
--dry-run=client \
--output=yaml \
--type=Opaque \
--from-literal=key=value
まず kubectl create secret generic
は k8s Secretを作成するコマンドです。
サブコマンドの最後の generic
以外に tls
と docker-registry
がありますが、アプリケーションで使う環境変数やファイルを設定したい場合は generic
です。
your_secret_name
は Secretの名前です。 metadata.name
に設定されます。
--namespace=your_namespace
はSecretのnamespaceです。 metadata.namespace
に設定されます。
--dry-runi=client
はdry runの指定で実際にk8s サーバにSecretを作らないことを意図します。またdry runがclient側で実行されます。
--output=yaml
は出力形式の指定です。
--type=Opaque
はSecretのタイプを指定します。こちらもアプリケーションで使う環境変数やファイルを設定したい場合は Opaque
にしてください。ほかのタイプはこちらをご確認ください。
--from-literal=key=value
は Secret に設定される値です。 data
の中に設定されるフィールドのキーと値を=で繋いで設定します。値の設定方法はこれ以外に --from-env-file
と --from-file
があります。
--from-env-file
は.env形式のファイルを読み込んでその中の環境変数を全て設定します。以下のようなファイルがある場合、KEY1にVAL1が設定され、KEY2にVAL2が設定されます。
KEY1=VAL1
KEY2=VAL2
--from-file
は指定したファイルの中身を値として設定します。キーはファイル名です。--from-file=key=path/to/file
とするとキーをファイル名から変更できます。
--from-env-file
以外は複数指定可能です。
kubeseal
k8s上の公開鍵を使う場合
kubeseal \
--format=yaml \
--sealed-secret-file=your_sealed_secret.yaml \
--controller-namespace=your_sealed_secret_namespace \
--controller-name=your_sealed_secret_controller
ローカルの公開鍵をつかう場合
kubeseal \
--format=yaml \
--sealed-secret-file=your_sealed_secret.yaml \
--cert=your_public_key.pem
こちらは余り書くことがないのですが、一応書いておきます。まずは共通の部分です。
--format=yaml
は出力形式の指定です。
--sealed-secret-file=your_sealed_secret.yaml
は出力されるSeaeledSecretのファイル名です。
k8s上の公開鍵を使う場合は --controller-namespace=your_sealed_secret_namespace
と --controller-name=your_sealed_secret_controller
を指定します。
ローカルの公開鍵を使う場合は --cert=your_public_key.pem
で公開鍵を含んだファイルを指定します。
まとめ
SealedSecretのone linerでの作成方法を記載しました。各コマンドについて調べた内容も書きました。
基本、概要部分をコピペして適切に修正して使っていただければと思います。