0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

k8s sealed secretをone-linerで作る

Posted at

要約

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作ってますか?私はたまに作ります。たまにしか作らないので

  1. 毎回作り方を忘れる
  2. 泥臭い方法を毎回使ってしまう

という状況でした。たまにしかやらないとはいえ、たまにはやるのでそろそろ勉強しようと思いました。その結果が概要に記載されたものです。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 以外に tlsdocker-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での作成方法を記載しました。各コマンドについて調べた内容も書きました。
基本、概要部分をコピペして適切に修正して使っていただければと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?