Kubernetes でシークレット TLS を作成する方法

Kubernetes Deshikuretto Tls Wo Zuo Chengsuru Fang Fa



Kubernetes は、クラスター内でコンテナー化されたアプリケーションを実行および管理するために利用されるオープンソース ツールです。シークレットとイングレスを通じてアプリケーションの資格情報を制御、実行、保護するためのさまざまなタスクを実行します。

Ingress は、アプリケーションの受信トラフィックの管理と SSL 終了にも使用されます。対照的に、シークレットは、アプリケーション用の機密情報と TLS 証明書を保存するために使用されます。

この投稿では次のことについて説明します。







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= –key=<秘密キーへのパス> ' 指示。ここで、シークレットのタイプは「 ジェネリック '、' TL '、 または ' ドッカーレジストリ ”。 TLS シークレットを作成するために、シークレット タイプを「tls」に設定しました。

kubectl シークレットを作成します tls デモ-シークレット --cert =C:\ユーザー\Dell\cert\mycert.crt - 鍵 =C:\ユーザー\Dell\cert\mycert.key

ステップ 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 ' 指示:

kubectl 適用 -f 秘密.yml

出力は、「」が正常に作成されたことを示しています。 mytls-秘密 ” yaml ファイルを使用して:

注: TLS 証明書と秘密キーを表示する

Base64 でエンコードされた証明書を表示して yaml ファイルで使用するには、「 cat <証明書ファイルへのパス> | Base64 git bash ターミナルでコマンドを実行します。

mycert.crt | Base64

Base64 でエンコードされたキーを表示するには、「 cat <キーファイルへのパス> | Base64 ' 指示:

mycert.key | Base64

Kubernetes ポッドに秘密の 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= –key=<秘密キーへのパス> ' 指示。ユーザーは、yaml マニフェストを使用してシークレット TLS を作成することもできます。この投稿では、シークレット TLS を作成する方法と、実行中のアプリケーションまたはポッドにシークレットを埋め込む方法を説明しました。