是否可以在多个K8S群集中使用通过证书管理器(Lets Encrypt)生成的通配符证书

时间:2018-06-19 15:01:11

标签: kubernetes ssl-certificate cert-manager

我将为不同的服务使用不同的子域,但是这些服务将驻留在不同的K8S群集中。我想知道是否可以在群集之间复制通配符证书。另外,如果某处有类似的示例,请链接至我。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

因此,cert-manager中没有对多个集群的本地处理。

也就是说,没有什么能阻止您手动或自动在群集之间的结果“秘密”资源之间进行复制。

“ kubed”项目(通过appscode)支持在集群https://github.com/appscode/kubed之间同步Secrets。完整信息可在其网站上找到:https://appscode.com/products/kubed/0.8.0/guides/config-syncer/inter-cluster/

我希望这会有所帮助!

答案 1 :(得分:0)

我知道,我参加聚会有点晚了,但写一个答案可能对某人有帮助

对于通配符证书 DNS-01 方法,需要 auth。您可以根据用例或正在使用的任何 DNS 使用任何 DNS。

注意:您可能需要先在 DNS 中添加 CAA 记录。

CAA 记录可以添加到 DNS 区域

示例

            Type       Value

devops.in   CAA       0 issuewild "letsencrypt.org"

从以下位置获取您的记录详细信息:https://sslmate.com/caa/

首先,我们必须使用命令创建用于存储 access key 的密钥

kubectl create secret generic route53-secret --from-literal=secret-access-key="skjdflk4598sf/dkfj490jdfg/dlfjk59lkj"

在这里分享示例issuer.yaml

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    email: test123@gmail.com
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
    - selector:
        dnsZones:
          - "devops.in"
      dns01:
        route53:
          region: us-east-1
          hostedZoneID: Z2152140EXAMPLE
          accessKeyID: AKIA5A5D7EXAMPLE
          secretAccessKeySecretRef:
            name: route53-secret
            key: secret-access-key
---
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
  name: le-crt
spec:
  secretName: tls-secret
  issuerRef: 
    kind: Issuer
    name: letsencrypt-prod
  commonName: "*.devops.in"
  dnsNames:
    - "*.devops.in" 

还要确保您的用户拥有管理 Route53 的必要权限

{
  "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": "*"
    }
  ]
}