Kubernetes Let's Encrypt сертификат не выдает - PullRequest
0 голосов
/ 08 января 2020

Я выполнил все необходимые настройки, как показано ниже, чтобы получить сертификат от letsencrypt в kubernetes, однако я не вижу ни одного выданного сертификата.

  • Nginx - входная установка с использованием helm

helm install my-nginx-ingress stable/nginx-ingress --set controller.publishService.enabled=true

  • Установка Cert-менеджера
kubectl apply -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.11/deploy/manifests/00-crds.yaml
kubectl create namespace cert-manager
helm repo add jetstack https://charts.jetstack.io
helm install my-cert-manager --namespace spinnaker jetstack/cert-manager --set ingressShim.defaultIssuerName=letsencrypt-prod --set ingressShim.defaultIssuerKind=ClusterIssuer
  • ClusterIssuer
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    email: test@test.test
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
    - http01:
        ingress:
          class: nginx
  • Ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: spinnaker-ingress
  namespace: spinnaker
  annotations:
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
spec:
  tls:
  - hosts:
    - SpinnakerApiDomain
    - SpinnakerDeckDomain
    secretName: spinnaker
  rules:
  - host: SpinnakerApiDomain
    http:
      paths:
      - backend:
          serviceName: spin-gate
          servicePort: 8084
  - host: SpinnakerDeckDomain
    http:
      paths:
      - backend:
          serviceName: spin-deck
          servicePort: 9000

Я следую за этим документом:

https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-on-digitalocean-kubernetes-using-helm

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-cd-pipeline-with-spinnaker-on-digitalocean-kubernetes

Я также прошел через другие URL-адреса, которые имеют те же шаги, но когда я делаю kubectl get certificates --all-namespaces, я не вижу ни одного выданного сертификата.

В основном я настраиваю Spinnaker за HTTPS.

Пожалуйста, сообщите. Спасибо.

1 Ответ

0 голосов
/ 09 января 2020

Если вы хотите использовать свой собственный самозаверяющий сертификат для Ingress, вы должны создать секрет TLS.

Сначала вы должны сгенерировать самозаверяющий сертификат и закрытый ключ, например:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pem -subj "/CN=${HOST}/O=${HOST}"

Вам будет предложено несколько вещей, таких как название страны или штат но вы можете просто нажать Enter, чтобы принять значения по умолчанию.

Затем создайте свой секрет TLS:

kubectl create secret tls <secret_name> --key key.pem --cert cert.pem

Затем вы можете использовать его в своем входе:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: spinnaker-ingress
  namespace: spinnaker
  annotations:
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
spec:
  tls:
  - hosts:
    - SpinnakerApiDomain
    - SpinnakerDeckDomain
    secretName: <secret_name>
  rules:
  - host: SpinnakerApiDomain
    http:
      paths:
      - backend:
          serviceName: spin-gate
          servicePort: 8084
  - host: SpinnakerDeckDomain
    http:
      paths:
      - backend:
          serviceName: spin-deck
          servicePort: 9000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...