(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Kubernetes】Secret作成時の failed to find any PEM data in key inputというError

スポンサーリンク

事象

Ingress用に既存のTLS証明書を利用したSecretを作成しようと秘密鍵及びサーバ証明書を与えるも

$ kubectl create secret tls tls-secret --cert=test.crt --key=test.key

以下のエラーで失敗する。

error: failed to load key pair tls: failed to find any PEM data in key input
環境情報
  • Docker Desktop 2.4(DE 19.03, K8s 1.18)

原因/解決策

証明書に格納されている公開鍵と秘密鍵のペアが合っていない。

同情報が正しく揃っていれば以下のようなSecretが作成できる。

apiVersion: v1
data:
  tls.crt: ...
  tls.key: ...
kind: Secret
metadata:
  creationTimestamp: null
  name: tls-secret
type: kubernetes.io/tls

以下、補足です。

補足

証明書をIngressで利用する場合は証明書と鍵データをbase64でエンコードした形でSecretに保存し、当Secretを以下のようなIngressのYAMLで指定します。

spec:
  tls:
  - secretName: tls-secret
  backend:
    serviceName: hoge
    servicePort: 80

これによってクライアントとの通信をセキュアに行えますが、Secret作成時に証明書の公開鍵とそれに対応する秘密鍵をチェックする機構が働きペアがあっていない場合は表題のエラーとなります。

以上、ご参考になれば幸いです。