cert-manager経由でKubernetes IngressでLet’s EncryptのSSL証明書を使用する(後半)

gavin.zhou
15 min readNov 12, 2020

この記事は長いので2つに分けてお送りします。今回は後半です。具体的なメソッドの続きです。

前述したように、ドメインのコントロールを証明するために利用できるものには、HTTP-01とDNS-01の2種類があります。

最初のアプローチ(HTTP-01)では、小さなウェブサーバーを別のデプロイメントとしてデプロイします。認証サーバーのリクエストごとに http://<YOUR_DOMAIN>/.known/acme-challenge/<TOKEN> URL でいくつかの情報を提供します。したがって、この方法では、80番ポートを介した外界からのIngressへのアクセス性と、ドメインのDNSレコードの公開することになります。

2番目のもの(DNS-01)は、ドメインのDNSレコードを変更するために使用できるAPIがあれば意味をなします。発行者はこれらのトークンを使用してドメインのTXTレコードを作成します。そして、ACME サーバは確認中にこれらのレコードを取得します。Let’s Encrypt は、CloudFlare、AWS Route53、Google CloudDNS などを含む様々な DNS プロバイダと簡単に統合することができます(LE 独自の DNS 実装である acme-dns と同様です)。

注意: Let’s Encrypt は ACME サーバへのリクエストにかなり厳しい制限を課しています。LE の本番環境に不要な負荷をかけないようにするために、テスト用にe letsencrypt-staging証明書を使うことをお勧めします (違いは ACME サーバのみです)。

それでは、リソースについて説明していきましょう。

apiVersion: cert-manager.io/v1alpha2kind: Issuermetadata:name: letsencryptspec:acme:server: https://acme-staging-v02.api.letsencrypt.org/directoryprivateKeySecretRef:name: letsencryptsolvers:- http01:ingress:class: nginx---apiVersion: cert-manager.io/v1alpha2

--

--