gpt4 book ai didi

ssl - 如何在我的 kubernetes 服务中使用证书管理器letsencrypt-prod?

转载 作者:行者123 更新时间:2023-12-04 22:39:05 26 4
gpt4 key购买 nike

我有 4 个 yaml 文件

  • 部署.yaml
  • 服务.yaml
  • 入口.yaml
  • issuer.yaml

  • 我想将letsencrypt-prod 用于我的认证服务。但它不起作用。
    当我用来确定入口正在工作或发行人正在工作时,它们都已完成!
    kubectl get ing
    kubectl get issuer

    但是当我运行时:
    kubectl get cert
    证书在 2 天内未读取。如下所示:
    enter image description here
    它会产生如下问题。认证不绑定(bind) mandrakee.xyz.Mandrakee.xyz 看起来还是不安全!如何通过证书管理器使我的网站安全?
    部署.yaml:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: echo-deployment
    spec:
    replicas: 1
    selector:
    matchLabels:
    app: echo-server
    template:
    metadata:
    labels:
    app: echo-server
    spec:
    containers:
    - name: httpapi-host
    image: jmalloc/echo-server
    imagePullPolicy: Always
    resources:
    requests:
    memory: "128Mi"
    cpu: "500m"
    ports:
    - containerPort: 80

    服务.yaml:
    apiVersion: v1
    kind: Service
    metadata:
    name: echo-service
    spec:
    ports:
    - name: http-port
    port: 80
    targetPort: 8080
    selector:
    app: echo-server
    入口.yaml:
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    annotations:
    kubernetes.io/ingress.class: ambassador
    cert-manager.io/issuer: letsencrypt-prod
    name: test-ingress
    spec:
    tls:
    - hosts:
    - mandrakee.xyz
    secretName: letsencrypt-prod
    rules:
    - host: mandrakee.xyz
    http:
    paths:
    - backend:
    service:
    name: echo-service
    port:
    number: 80
    path: /
    pathType: Prefix
    发行人.yaml:
    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
    name: letsencrypt-prod
    spec:
    acme:
    email: ykaratoprak@sphereinc.com
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
    name: letsencrypt-prod
    solvers:
    - dns01:
    digitalocean:
    tokenSecretRef:
    name: digitalocean-dns
    key: ce28952b5b4e33ea7d98de190f3148a7cc82d31f030bde966ad13b22c1abc524

    最佳答案

    如果您已正确设置您的颁发者,您已向我们保证,您将在您的命名空间中看到一个属于证书管理器的 pod。这将创建一个 pod,用于验证请求证书的服务器是否解析为 DNS 记录。
    在您的情况下,您需要将您的 DNS 指向您的入口。
    如果这成功完成,那么调试的下一阶段是验证 443 和 80 都可以解决。 Cert Manager 创建的 Validation Pod 使用端口 80 来验证通信。人们犯的一个常见错误是假设他们只会将端口 443 用于 ssl 并出于安全原因禁用 80,以便稍后发现 letencrypt 无法在没有端口 80 的情况下验证主机名。
    否则,常见的情况是 cert-manager 安装在命名空间 cert-manager 中,因此您应该检查管理器的日志。这将提供有限数量的日志,有时很难找到解决问题的方法。
    要找到直接错误,您已部署 ingress 的命名空间中由 cert-manager 生成的 pod 是一个很好的关注点。
    我要运行的测试是使用 80 和 443 设置入口,如果您从浏览器使用域,您应该在端口 443 上获得一些无效的 kubernetes 通用证书响应,而在端口 80 上只是“未找到”。如果这是成功,它排除了我之前提到的限制。

    关于ssl - 如何在我的 kubernetes 服务中使用证书管理器letsencrypt-prod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68455103/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com