Можно ли использовать групповой сертификат, сгенерированный через cert-manager (Lets Encrypt) в нескольких кластерах K8S

Я бы использовал разные субдомены для разных сервисов, но эти сервисы будут находиться в разных кластерах K8S. Я хотел бы знать, могу ли я просто скопировать подстановочный сертификат в кластерах. Также, если где-то есть подобный пример, пожалуйста, свяжите меня с ним. Любая помощь будет оценена.

2 ответа

Таким образом, в cert-manager отсутствует встроенная обработка нескольких кластеров.

Тем не менее, ничто не мешает вам копировать полученный "секретный" ресурс между кластерами вручную или автоматически.

Проект 'kubed' (по appscode) поддерживает синхронизацию секретов между кластерами: https://github.com/appscode/kubed. Полная информация может быть найдена на их веб-сайте: https://appscode.com/products/kubed/0.8.0/guides/config-syncer/inter-cluster/

Надеюсь, это поможет!

я знаю, я немного опаздываю на вечеринку, но написание ответа может быть кому-то полезно

Для сертификата с подстановочным знаком DNS-01метод, требуется авторизация. Вы можете использовать любой DNS в зависимости от варианта использования или того, что вы когда-либо использовали.

Примечание : вам может потребоваться сначала добавить запись CAA в ваш DNS.

Запись 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": "*"
    }
  ]
}
Другие вопросы по тегам