Ingress は、アプリケーションの受信トラフィックの管理と SSL 終了にも使用されます。対照的に、シークレットは、アプリケーション用の機密情報と TLS 証明書を保存するために使用されます。
この投稿では次のことについて説明します。
- Kubernetes の秘密とは何ですか?
- 前提条件: 秘密キーと証明書を生成する
- Kubernetes でシークレット TLS を作成するにはどうすればよいですか?
- Yaml ファイルを使用してシークレットを作成するには?
- Kubernetes ポッドにシークレットを埋め込む方法は?
- 結論
Kubernetes の秘密とは何ですか?
Secret は Kubernetes リソースの 1 つで、ユーザーのログイン認証情報、キー、証明書、トークンなどの機密情報を保存するために使用されます。シークレットは個別に作成してポッドに接続できます。これにより、開発者がコード内で機密データを提供することが防止され、追加のセキュリティ層も提供されます。さまざまな種類のシークレットを作成して使用できます。最も一般的に使用されるシークレットは次のとおりです。
一般的な秘密: 汎用シークレットは、パスワード、トークン、API キー、OAuth キーなどの基本情報を保存するために利用されます。
TLS シークレット: TLS シークレットは、CA によって署名された秘密キーと証明書を保存するために使用されます。 Kubernetes 内で実行されているアプリケーションのセキュリティを確保し、クラスター内の通信を保護するには、通常、ユーザーは TLS シークレットを作成してポッドに埋め込む必要があります。
Docker レジストリ: これは、レジストリからイメージを簡単に取得するために、Docker レジストリの資格情報を保存するために使用されます。
前提条件: 秘密キーと証明書を生成する
セキュリティ向上のための証明書と秘密鍵の作成には、CSR(証明書署名要求)と秘密鍵を作成するOpenSSLを利用します。次に、CSR を使用して自己署名証明書または CA 証明書を生成します。
Windows で OpenSSL コマンドを利用するには、ユーザーは Git をインストールする必要があります。この目的のために、リンク先の「 Windows に git をインストールする ' 記事。
git をインストールした後、以下の手順に従って秘密キーと署名付き証明書を生成します。
ステップ 1: Git Bash ターミナルを起動する
「」を検索してください Git Bash スタート メニューで「」を選択し、ターミナルを起動します。
現在のディレクトリを確認するには、「 障害者 ' 指示:
障害者現在、%USERPROFILE% ディレクトリで作業しています。
ステップ 2: 新しいディレクトリを作成する
証明書と秘密キーを保存するための新しいディレクトリを作成します。
mkdir 証明書「」を使用して、新しく作成したディレクトリに移動します。 CD ' 指示:
CD 証明書
ステップ 3: 秘密キーを生成する
次に、指定されたコマンドを使用して秘密キーを生成します。ここで、生成された秘密鍵は「」に保存されます。 mycert.key ”:
openssl 生成キー -アルゴリズム RSA -外 mycert.key
ステップ 4: CSR を生成する
CSR (証明書サービス要求) を生成して署名付き証明書を取得するには、次のコマンドを使用します。
openssl 要求 -新しい -鍵 mycert.key -外 mycert.csr
ステップ 5: 証明書を生成する
最後に、生成された秘密キーと CSR を使用して証明書を作成し、「 mycert.crt ' ファイル。この目的のために、以下のコマンドを実行します。
openssl x509 -req -で mycert.csr -signkey mycert.key -外 mycert.crt -日々 365
TLS 証明書を生成した後、ユーザーは以下のセクションに従ってシークレット TLS を作成できます。
Kubernetes でシークレット TLS を作成するにはどうすればよいですか?
アプリケーションのセキュリティと Kubernetes クラスター内外の安全な通信を確保するには、データ暗号化に使用される TLS (Transport Layer Security) 証明書が不可欠です。 Kubernetes シークレットを使用すると、シークレット TLS を介して実行中のポッドに TLS 証明書を埋め込むことができます。 Kubernetes でシークレット TLS を作成するには、次の手順を実行します。
ステップ 1: Minikube クラスターを開始する
minikube クラスターを開始するには、まず管理者として Windows PowerShell を起動します。その後、「」を使用してクラスターを作成して実行します。 ミニキューブスタート ' 指示:
ミニキューブスタート
ステップ 2: ノードを取得する
Kubernetes ノードにアクセスして、クラスターが起動しているかどうかを確認します。
minikube get nodes
ステップ 3: シークレット TLS を作成する
「」を使用して Kubernetes で TLS シークレットを作成します。 kubectl create secret <シークレットタイプ> <シークレット名> –cert=
ステップ 4: シークレットを取得する
確認のために、指定されたコマンドを使用して Kubernetes シークレットをリストします。
kubectl でシークレットを取得ここでは、効果的に「」を作成したことがわかります。 デモの秘密 ”を含む” 2 ” データ値:
ステップ 5: シークレットの説明
データがどのように表示または保存されるかを表示するには、「」を使用してシークレットを記述します。 kubectl はシークレット <シークレット名> を記述します ' 指示:
kubectl は秘密を説明しますデモ-秘密値はバイト単位で保存されており、Kubernetes ConfigMap とは異なり、直接表示できないことがわかります。
Yaml ファイルを使用してシークレット TLS を作成するにはどうすればよいですか?
yaml ファイルを通じてシークレット TLS を作成するには、まず「 秘密.yml 」ファイルに、 TLS Base64 でエンコードされた証明書 の中に ' tls.crt ”キーを押して、 Base64でエンコードされたキー の中に ' tls.key ”。
デモンストレーションを行うには、リストされている手順に従ってください。
ステップ 1: Yaml ファイルを作成する
「」という名前のファイルを作成します 秘密.yml 」を入力し、指定されたコードを貼り付けます。
APIバージョン : v1データ :
tls.crt : 「base64でエンコードされた証明書」
tls.key : 「base64でエンコードされたキー」
親切 : 秘密
metadata :
名前 : mytls-秘密
名前空間 : デフォルト
タイプ : kubernetes.io/tls
上記のスニペットで、「tls.crt」と「tls.key」のキーの値を元の証明書とキーの値に置き換えます。
ステップ 2: シークレットを作成する
次に、「」を通じてシークレット yaml ファイルを適用します。 kubectl apply -f
出力は、「」が正常に作成されたことを示しています。 mytls-秘密 ” yaml ファイルを使用して:
注: TLS 証明書と秘密キーを表示する
Base64 でエンコードされた証明書を表示して yaml ファイルで使用するには、「 cat <証明書ファイルへのパス> | Base64 git bash ターミナルでコマンドを実行します。
猫 mycert.crt | Base64Base64 でエンコードされたキーを表示するには、「 cat <キーファイルへのパス> | Base64 ' 指示:
猫 mycert.key | Base64Kubernetes ポッドに秘密の TLS を埋め込む方法は?
シークレット TSL を作成した後、ユーザーはそれを Kubernetes ポッドに埋め込むことができます。これを行うには、次の手順を使用します。
ステップ 1: Yaml ファイルを作成する
「」という名前のファイルを作成します ポッド.yml ” ファイルを開き、以下のスニペットをファイルに貼り付けます。
APIバージョン: v1種類: ポッド
metadata:
名前: デモポッド
仕様:
コンテナ:
- 名前: html-cont
画像: ラフィア098 / html-img: 1.0
環境元:
- 秘密参照:
名前: デモの秘密
上記のスニペットでは次のようになります。
- 「 親切 」キーは、ユーザーが作成している Kubernetes リソースを指定します。
- 「 名前 」キーでポッド名を設定します。
- 「 コンテナ ”キーにはコンテナ情報が保存されます。
- 「 名前 「containers」キーの下にある「」キーでコンテナ名を設定します。
- 「 画像 」キーは、コンテナ内でアプリケーションを作成して起動するためのアプリケーションまたはコンテナ イメージを提供します。
- 「 環境から 」キーは、他の Kubernetes リソースから環境変数を設定します。ここで、シークレット TLS をポッドに埋め込むには、「 秘密参照 ” は秘密の参照を提供するために使用されます。上記のシークレット TLS を埋め込むには、「name」キーにシークレットの名前を指定します。
ステップ 2: ポッドの作成またはアップグレード
次に、「」が保存されているフォルダーを開きます。 ポッド.yml ” ファイルが作成されます。
CD C:\ユーザー\Dell\Documents\Kubernetes\Secret
yaml ファイルを適用して、「」を使用してポッドを作成または再構成します。 kubectl 適用 ' 指示:
kubectl 適用 -f ポッド.yml
ステップ 3: Kubernetes ポッドにアクセスする
確認のために、Kubernetes ポッドをリストします。
kubectl ポッドを取得ここで、「」を作成したことがわかります。 デモポッド ” が成功しました:
ステップ 4: ポッドについて説明する
ポッドにシークレット TLS が埋め込まれているかどうかを確認するには、以下のコマンドを使用してポッドを記述します。
kubectl はポッドのデモポッドを記述します以下の出力は、TLS シークレットがポッドに正常に埋め込まれたことを示しています。
シークレット TLS を作成し、ポッド内で実行されている Kubernetes アプリケーションに埋め込む方法について説明しました。
結論
Kubernetes でシークレット TLS を作成するには、まず TLS 署名付き証明書と秘密キーを作成します。その後、Kubernetes クラスターを起動し、「」を実行します。 kubectl create secret <シークレットタイプ> <シークレット名> –cert=