CloudflareはOrigin CA Issuerをリリースした。ネイティブのKubernetes証明書管理コントローラーであるcert-managerの拡張機能である。この拡張機能はCloudflare Origin CAと統合することで、Cloudflare Origin証明書の作成と更新が簡単になる。
長年、Cloudflareは、WebサーバにTLS証明書をインストールすることを推奨してきた。サイト所有者がコンテンツ配信ネットワーク(CDN)エンドポイントからオリジンへのトラフィックを暗号化できるようにするためである。ただし、これをサイト所有者として実装するのは簡単ではない。
CloudflareのソフトウェアエンジニアであるTerin Stock氏は、Kubernetesクラスターでの証明書のメンテナンスに関する課題を認識し、ブログ投稿でOrigin CAを統合するために必要な手順について説明した。Kubernetes 1.16以降でサポートされているorigin-ca-issuerのインストールには、ターゲットクラスターにカスタムリソース定義(CRD)を作成するための権限が必要となる。
特定のアカウントでcert-managerとCloudflare APIの間にバインディングを作成するには、エンジニアはOriginIssuerリソースを作成する必要がある。特定のKubernetesクラスターでは、異なるCloudflareアカウントが異なる発行者を接続する可能性がある。
apiVersion: cert-manager.k8s.cloudflare.com/v1 kind: OriginIssuer metadata: name: prod-issuer namespace: default spec: signatureType: OriginECC auth: serviceKeyRef: name: service-key key: key
上記のコードブロックは「prod-issuer」という名前のOriginIssuerを作成する。それに付随して、Cloudflare APIを認証する同じ名前空間にシークレット「service-key」を作成する。
次に、cert-managerを使用して証明書を作成する。証明書は、ワイルドカードを含む必要なドメイン、証明書の有効性、次の更新スケジュールなどの詳細と共に提供される。
apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: example-com namespace: default spec: # The secret name where cert-manager # should store the signed certificate. secretName: example-com-tls dnsNames: - example.com # Duration of the certificate. duration: 168h # Renew a day before the certificate expiration. renewBefore: 24h # Reference the Origin CA Issuer you created above, # which must be in the same namespace. issuerRef: group: cert-manager.k8s.cloudflare.com kind: OriginIssuer name: prod-issuer
次に、cert-managerは、この証明書のライフサイクルの管理を開始し、証明書署名要求(CSR)に続く。そして、origin-ca-issuerによって処理される証明書要求を作成する。
Cloudflare APIが証明書に署名すると、secretNameフィールドで指定されたKuberenetesシークレットの秘密鍵を使えるようになる。この証明書は、Cloudflareのバックあるプロキシされたサーバで使用できる。
クラスタにIngressリソースがある場合、cert-managerは、Ingressリソースに基づいて証明書リソースを自動的に管理するためのIngressサポートを備えている。
Stock氏はまた、外部のorigin-ca-issuerを構築するために、Cloudflareがどのようにしてコントローラーランタイムプロジェクトを使用するかについても説明した。
出典: https://blog.cloudflare.com/automated-origin-ca-for-kubernetes/
TwitterのTechコミュニティは、このリリースに注目した。James Munnelly氏は、これを「長年の」機能リクエストと呼んでおり、「@Cloudflare自身がcert-managerに対する長年の機能リクエストが実現されるのは素晴らしいことです!@terinjokes(およびCFチームの他のメンバー)は素晴らしい仕事をしてくれた!」とツイートした。
ロンドンに拠点を置くプロのKubernetesサービス企業であるJetstackは、「... @Cloudflareからこれが実現されるのは素晴らしいことです。#kubernetesからOrigin CAから発行された証明書に簡単にアクセスできます。コミュニティで要望の多かった機能です。@Cloudflareのチームに感謝します。」とツイートした。
読者は、GitHubでorigin-ca-issuerについて詳しく知ることができる。