過去の記事でAmbassadorというAPI Gatewayとして動作させるものがあるので利用してみました。cert-manager のHTTP-01 ChallengeでDNS設定の認証をさせましたが、この方法だと手作業が発生して面倒です。DNS-01 Challengeで認証させるように変更してみました。
Cert-manager v0.7 to v0.8 の設定内容の変更点
5月21日にCert-managerのv0.8がリリースされていて、 破壊的変更があってわりとはまってましたので、ついでに修正してみました。基本的には公式にv0.7からv0.8へのアップグレードガイドがあるので参考にしています。
ざっくり言うと、もともとCertificate
で定義していたACMEの設定が Issuer
で設定するように変わりました。
Route53でのDNS-01 Challenge設定
私はドメインをRoute53を利用しているので、そちらを利用して設定を進めます。GKEなのにRoute53なところは気にしないでください。Supported DNS01 providersにサポートしているプロバイダ一覧があります。
Route53を利用する場合は下記のIAM権限を割り当てる必要があります。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:GetChange", "Resource": "arn:aws:route53:::change/*" }, { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/*" }, { "Effect": "Allow", "Action": "route53:ListHostedZonesByName", "Resource": "*" } ] }
前回の記事で作成をしたcertificate.yaml
と clusterIssuer.yaml
の設定ファイルを修正します。ACMEの設定はClusterIssuer
のissuer.spec.acme.solvers
にするようになったようです。
# certificate.yaml apiVersion: certmanager.k8s.io/v1alpha1 kind: Certificate metadata: name: kubernetes-certificate namespace: default spec: secretName: kubernetes-cert-secret issuerRef: name: letsencrypt-staging kind: ClusterIssuer dnsNames: - <your_domain> --- apiVersion: certmanager.k8s.io/v1alpha1 kind: ClusterIssuer metadata: name: letsencrypt-staging spec: acme: server: https://acme-staging-v02.api.letsencrypt.org/directory email: <mail-address> privateKeySecretRef: name: letsencrypt-staging solvers: - selector: dnsNames: - <your_domain> dns01: route53: region: <aws_egion> accessKeyID: <Access kew> secretAccessKeySecretRef: name: mysecret key: route53-access-key --- apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: route53-access-key: <accesskey>
nginxにhttpsで通信出来てるかの確認
kubectl get svc ambassador
で EXTERNAL-IPを確認して設定したドメインに登録する<ドメイン名>/nginx/
にブラウザで接続するとhttps通信がされるようになりました。- httpで接続した際はhttpsにリダイレクトされます。
Cert-managerはトラブルシュートがしんどいですね…。無邪気に v0.8にアップデートして試していたら設定が読み込まれなくて、気づくのにかなり時間を費やしました。設定を間違えていると認証局が Fake LE Intermediate X1
になるんで、設定を見直してみるのが良さそうです。
helm使った方が良い気もするけど、複雑化していきそうで怖い…。