Secret を作成する with 証明書&キーファイル

印刷

Overview

証明書&キーファイルを使用してシークレットを作成し、それらをingressに適用する方法を紹介します。

シークレットの紹介

シークレットは、パスワード、トークン、キーなど、少量の重要なデータを含むオブジェクトです。これを使用しないと、重要な情報がパード仕様またはコンテナイメージに含まれる可能性があります。


シークレットはコンフィグマップに似ていますが、特に機密データを保持するためのものです。

シークレットタイプ

シークレットを生成するときは、Secret リソースの type フィールドを使用するか、(利用可能であれば) kubectl の同様の特定のコマンドラインフラグを使用してシークレットのタイプを指定できます。シークレットタイプは、シークレットデータのプログラミング処理を促進するために使用されます。

このガイドでは、ビルトイン型のkubernetes.io / tls型のTLSシークレットを生成する方法について説明します。

TLSシークレット

Kubernetesは通常、TLSに使用される証明書に関連するキーを格納するためのビルトインシークレットタイプkubernetes.io/tlsを提供します。このデータは主にリソースリソースのTLS終了に使用されますが、他のリソースやワークロードによって直接使用されることもあります。このタイプのシークレットを使用するときは、tls.keyキーとtls.crtキーをシークレット構成のdata(またはstringData)フィールドに指定する必要があります。ただし、APIサーバーは各キーの値が有効であることを実際に検証しません。

次のYAMLには、TLSシークレットの構成例が含まれています。

apiVersion: v1 kind: Secret metadata:  name: secret-tls type: kubernetes.io/tls data:  # 본 예시를 위해 축약된 데이터임  tls.crt: |        MIIC2DCCAcCgAwIBAgIBATANBgkqh ...  tls.key: |        MIIEpgIBAAKCAQEA7yn3bRHQ5FHMQ ...

TLSシークレットタイプは、ユーザーの便宜のために提供されています。ユーザーは、TLSサーバーおよび/またはクライアントに使用される資格情報のためのOpaqueを作成することもできます。ただし、組み込みのシークレットタイプを使用することはユーザーの資格情報のフォーマットを統合するのに役立ち、APIサーバーは必要なキーがシークレット構成で提供されていることを検証します。

TLSシークレットの作成

まず、証明書とキーファイルを準備します。

キーファイルパスワードの削除

キーファイルがパスワード設定になっていると、シークレットの作成に失敗する可能性があります。

次の手順でキーファイルのパスワードを削除します。

  1. ファイルのコピー

$ sudo cp path/to/cert/certfile.pem . $ sudo cp path/to/key/keyfile.pem .

2. 所有者の変更

$ sudo chown 소유자 keyfile.pem

3. パスワードの削除

$ cp keyfile.pem keyfile.pem.enc $ openssl rsa -in keyfile.pem.enc -out keyfile.pem

kubectlを使用したTLSシークレットの作成

--cert の公開鍵証明書は .PEM でエンコード (Base64 でエンコードされた DER 形式) でなければならず、 --key のために与えられた秘密鍵に適合しなければなりません。秘密鍵は、通常、PEM秘密鍵フォーマットと呼ばれる暗号化されていない形式でなければなりません。どちらの方法でも、PEMの開始行と終了行(たとえば、証明書の--------BEGIN CERTIFICATE-----と---------END CERTIFICATE----)は含めないでください。

kubectl を使用して TLS シークレットを生成します。

$ sudo kubectl create secret tls my-tls-secret \  --cert=path/to/cert/certfile.pem \  --key=path/to/key/keyfile.pem

Modernization Platform ConsoleでTLSシークレットを作成する

シークレットを作成するプロジェクトのDeployment Groupsの[Resources]タブに移動します。

Resources画面の左側のメニューからclusterを選択し、clusterのサブメニューからSecretsメニューを選択します。

Secret を生成できる画面と、cluster に登録されている Secret のリストが照会されます。

次のようにエントリを作成して新しいシークレットファイルを作成します。

  • Name: Secret 人を入力してください。

  • Type: kubernetes.io/tls タイプを選択してください。

  • Certificate File: 証明書ファイルを選択してください。

  • Key File: キーファイルを選択してください。

作成後に Save ボタンをクリックすると Secret が作成され、画面の下部リストに次のように自動的に追加されます。

生成された秘密リソースをクラスタにデプロイするには、画面上部のデプロイボタンをクリックします。

作成したシークレットをIngressに適用する

次のYAMLは、TLSシークレットを適用したingress構成の例です。

# my-tls-ingress.yaml apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata:  name: my-tls-ingress  namespace: test-namespace  annotations:    nginx.ingress.kubernetes.io/rewrite-target: /    kubernetes.io/ingress.class: "nginx" spec:  tls:    - hosts:        - test.demo.cloudzcp.com      secretName: my-tls-secret  rules:    - host: test.demo.cloudzcp.com      http:        paths:          - path: /test            pathType: Prefix            backend:              service:                name: test-service                port:                   number: 80

TLS項目で前に作成したTLSシークレットの名前を設定します。

その後、TLSシークレットが適用されたingressを再配布します。

オンライン相談

問い合わせ

この回答は役に立ちましたか? はい いいえ

フィードバックを送信
お役に立てずに申し訳ございません。この記事を向上させるためにフィードバックをお願い致します。