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シークレットの作成
まず、証明書とキーファイルを準備します。
キーファイルパスワードの削除
キーファイルがパスワード設定になっていると、シークレットの作成に失敗する可能性があります。
次の手順でキーファイルのパスワードを削除します。
ファイルのコピー
$ 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を再配布します。
オンライン相談
問い合わせ