问题标签 [cert-manager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - 与 istio 相结合的证书管理标准入口
目前Istio 不支持完全自动化的证书过程。标准入口确实通过 cert-manager 支持这一点。是否可以将用于认证管理的标准入口配置与用于其他东西的 istio 结合起来?这种组合的缺点是什么?
kubernetes - 如何修复“不同步入口默认/测试应用程序,因为它不包含必要的注释”
我遵循了有关在 kubernetes 上启用自动 TLS 创建的出色指南: https ://akomljen.com/get-automatic-https-with-lets-encrypt-and-kubernetes-ingress/
您使用letsencrypt针对自定义资源ClusterIssuer设置cert-manager,并在部署项目中使用注释kubernetes.io/tls-acme:“true”。
但是 cert-manager 永远不会获得证书。
我正在阅读文档和其他教程,但我似乎无法弄清楚我缺少哪些注释或哪些设置可能是错误的。我也多次重做了所有步骤,但无法正常工作。
ssl - Kubernetes 证书管理器 GoDaddy
我正在尝试将 SSL 应用于我的 kubernetes 集群(生产和登台环境),但目前仅用于登台。我成功安装了cert-manager,由于我有5个子域,我想使用通配符,所以我想用dns01配置它。问题是,我们使用 GoDaddy 进行 DNS 管理,但 cert-manager 目前不支持(我认为)。有一个问题(https://github.com/jetstack/cert-manager/issues/1083)和一个 PR 来支持这个,但我想知道是否有解决方法可以将 godaddy 与 cert-manager 一起使用,因为在这个主题上没有很多活动吗?我想使用 ACME,所以我可以使用 let's encrypt 证书。
我对 Kubernetes 还很陌生,所以如果我错过了什么,请告诉我。
是否可以与 ACME 以外的其他类型的发行者一起使用 let's encrypt ?有没有其他方法可以让我使用 GoDaddy DNS 并使用 kubernetes 进行加密?
目前我没有任何入口,但只有 2 个面向外部的服务。一个前端和一个 API 网关作为 LoadBalancer 服务。
提前致谢!
kubernetes - 如何使用 Terraform 在 AWS EKS 上为 kubernetes 设置 letencrypt 证书颁发者
我正在尝试在 kubernetes 集群上设置letsencrypt cert-issuer。我的地形看起来像这样:
我部署了简单的测试吊舱和服务。当我去http://<cluster-address>/apple
它时,它会以apple
. 所以我尝试为它创建入口:
但是,当我转到https://my.domain.alias.to.cluster.address.io/apple
浏览器时,我还是会发出警告,我可以看到证书是 Kubernetes Ingress Controller Fake Certificate。
我错过了什么?我应该怎么做才能让letsencrypt在那里创建证书?
更新:
来自我的 cert-manager pod 的日志:
这就是kubectl describe certificate my.domain.alias.to.cluster.address.io
返回的结果:
在入口控制器的日志中,我可以找到:
azure - 在 AKS 上使用带有 LetsEncrypt 和多个证书的证书管理器
是否有任何在 AKS 上使用 cert-manager 和 Nginx 入口的工作示例,其中多个域已通过 LetsEncrypt 授予 SSL,然后这些 dns 名称被定向到单独的容器?
我已经设置了一个 SSL 有一段时间了,但是在添加第二个之后,一切都停止了工作。
我有几个集群需要应用它,所以我希望找到一个防弹示例。
ssl - 未找到 Cert-manager 证书且未创建挑战
我从头到尾都关注了https://docs.cert-manager.io/en/venafi/tutorials/quick-start/index.html一切似乎都在工作,只是我没有为我的入口获取外部 IP .
尽管我能够使用 nginx 入口控制器外部 ip 并使用 dns 访问站点。当我访问 url 时,我被重定向到 https,所以我认为它工作正常。
它重定向到 https,但仍然显示“不安全”,因此他没有获得颁发的证书。
当我调试时,我得到以下信息:
入口:
证书:
秘密:
命令:
因此,似乎顺序出现了问题,并且没有产生任何挑战。
这是我的 ingress.yaml 和 issuer.yaml:
任何人都知道我可以做些什么来解决这个问题或出了什么问题?Certmanager 100% 正确安装,我只是不确定入口以及顺序出了什么问题。
提前致谢!
编辑:我在 nginx-ingress-controller 中找到了这个:
它越来越多,CPU 负载始终为 0.003,cpu 图已满(其他服务几乎没有)
ssl - 使用 cert-manager istio ingress 和 LetsEncrypt 在 kubernetes 中配置 SSL 证书
我正在尝试使用 cert-manager、istio ingress 和 LetsEncrypt 在 kubernetes 中配置 SSL 证书。我已经用 helm、cert-manager 安装了 istio,创建了 ClusterIssuer,然后我正在尝试创建一个证书。无法验证 acme 挑战,我正在尝试使用 http01 进行验证,但无法弄清楚如何为此使用 istio ingress。Istio 使用以下选项进行部署:
证书配置:
尝试这种方式时,由于某种原因,找不到 istio-ingress,但是当尝试指定 ingressClass: some-name,而不是 ingress: istio-ingress 时,我得到 404,因为 example.com/.well-known/无法达到 acme-challenge/token。如何解决?谢谢!
kubernetes - cert-manager 发现 acme-order-url 注释设置为证书的 pod,但它不属于证书资源
我正在我的 kubernetes 集群中使用 cert-manager,以便让 let'sencrypt CA 签署的证书到我的集群内的服务应用程序。
1.创建cert-manager
命名空间
2. 我已经创建了 helm 实现 CA 和证书功能所需的 CRD。
3. 在 cert-manager 命名空间上禁用资源验证
4.添加Jetstack Helm存储库并更新本地缓存
5. 我已经使用 helm 在我的 k8s 集群中安装了 cert-manager:
6. 我创建了一个 ACME 颁发者,包括http challenger provider
通过对 ACME 服务器(例如 Let's Encrypt)执行质询验证来获得。
- 在我想要获取证书的服务应用程序所在的相同命名空间(默认)中应用。
- 这有以下描述:我们可以看到,
the ACME account was registered with the ACME
并且Status
是True
和Ready
7. 我在创建颁发者的同一命名空间中创建了证书(默认)并引用它:
- 申请证书
- 我执行了
kubectl describe certificate zcrm365-lets-encrypt-staging
,我可以看到以下内容:
我们可以看到Status
isFalse
并且证书颁发是临时的。
- 这个证书,创建一个名为的秘密
zcrm365-lets-encrypt-staging-tls
,其中包含我的私钥对tls.crt
和tls.key
8. 为我的服务应用程序创建入口
- 应用入口
- 我可以看到我们的入口
我的入口的详细信息如下:
当我执行所有这些操作时,我可以看到我的应用程序服务通过 kong-ingress-zcrm365
入口公开,因为我的 test1kongletsencrypt.possibilit.nl 域可以访问。
但正如你所看到的,我没有获得https
我的服务证书。这https
是一个不安全的连接
- 我检查了我的 cert-manager pod 的日志,我有以下内容:
我认为没有执行 http 质询过程,因为 let'sencrypt 不相信我是https://test1kongletsencrypt.possibilit.nl/index.html域的所有者。
我该如何解决这个问题才能使用letsencrypt获得TLS?我是否可能需要ingress-shim
在我的 helm cert-manager 和/或中使用功能WebhookValidation
?
重要更新
我目前正在对我的部署使用kong-ingress-controller 之类的入口。
但是我不确定在创建证书签名请求kong-ingress-controller
时如何将我的集成到 cert-manager中。zcrm365-lets-encrypt-staging
这是我目前对我的kong资源的看法
该服务service/kong-proxy
为我提供外部或公共 IP,当我创建时kong-ingress-zcrm365
,此入口将采用 kong-proxy 提供的外部 IP 地址。但当然在入口中,我表示使用 nginx 而不是 kong-ingress-controller。
顺便说一句,我没有安装 nginx 入口控制器,我在这里有点困惑。
如果有人能指出我正确的地址,他们的帮助将不胜感激。
ssl - 获得证书 tls.crt 和 tls.key,但浏览器仍然提出连接不是私有的
在第 3 步,我得到了 IP 地址,如下所示。我根据这篇文章自定义了我的 DNS
分配给入口控制器的外部 IP 是所有传入流量应路由到的 IP。要启用此功能,请将其添加到您控制的 DNS 区域,例如 example.your-domain.com。
本快速入门假定您知道如何将 DNS 条目分配给 IP 地址并将这样做。
我可以$ curl -kivL -H 'Host: singh.hbot.dev' 'http://singh.hbot.dev'
这是输出kuard
继续下一步
install cert-manager
应用修改staging-issuer.yaml and production-issuer.yaml
。
编辑我ingress.yaml
并应用它
我找到了,certificate
但当我describe
是!Events
none
然后我检查secret
。文档说
完成后,cert-manager 将根据入口资源中使用的密钥创建一个包含证书详细信息的密钥。您也可以使用 describe 命令查看一些详细信息:
虽然我没有ca.crt
。我决定继续前进。
更改ingress.yaml
为production
和apply
。
消除secret
查看order
解决方案:
感谢Harsh Manvar
issuer
从运行中确认我的网址issuer
检查我的ingress
更改issuer
为prod
删除旧secret
的以触发该过程。
检查新的certificate
https - HTTPS 加密对我的域无效。我的订单证书未完成
我正在我的 kubernetes 集群中使用 cert-manager,以便让 let'sencrypt CA 签署的证书到我的集群内的服务应用程序。
我正在按所示顺序执行以下步骤。我想尽可能地提供我的过程中的最详细信息,以了解所呈现的行为。
单独安装 CustomResourceDefinition 资源
标记 cert-manager 命名空间以禁用资源验证
安装 cert-manager Helm 图表
- 为了避免可能出现的问题,我已经确认了本指南中的步骤,并且所有步骤都可以...
创建我的入口
- 我正在使用kong-ingress-controller来管理入口过程。
这意味着我的外部 IP 地址由 kong-proxy 提供,并且是52.166.60.158
- 我第一次以这种方式创建了入口:
- 应用它。
- 我的入口正在使用 kong-ingress-controller
创建集群发行者
- 我要创建一个
ClusterIssuer
,我可以创建一个 Issuer,但我从 ClusterIssuer 开始。什么是最好的选择?这取决于我们对未来的部署和需求,主要是在命名空间情况下
- 应用它
- 此 ClusterIssuer 已在 ACMEletsencrypt 服务器上注册
修改我之前创建的入口资源
- 现在我已经创建了 Let's Encrypt staging ClusterIssuer,我准备修改我们在上面创建的入口资源并为 test1kongletsencrypt.possibilit.nl 路径启用 TLS 加密,添加以下内容
我将添加certmanager.k8s.io/cluster-issuer: letsencrypt-staging
注释并使用使用letsencrypt-staging
名为 ClusterIssuer创建的秘密letsencrypt-staging
我们的入口一直保持这种方式:
- 应用它
这个过程在ingress上更新,创建一个ingres,命名为cm-acme-http-solver-jr4fg
cm-acme-http-solver-jr4fg
入口的细节是:
kong-ingress-zcrm365
我们资源入口的细节是:
我们可以看到我们的 ingress 即使使用了kong-ingress-controller
并且letsencrypt-staging
证书已经在默认命名空间中创建:
letencypt-staging 证书具有以下详细信息
我可以看到我的订单问题没有完成,只是在OrderCreated
事件中创建,并且这个订单已经有 7 分钟,因为我已经创建了这个证书并且订单没有完成,因此证书没有成功签发
发生在我身上的另一件事是,letsencrypt-staging
由 letsencrypt-staging
集群 Issuer 及其各自的证书创建的秘密只有tls.key
:
据我了解,如果letsencrypt证书完成订单并颁发证书,在letsencrypt-staging
秘密中我会有一个tls.crt密钥,也许我的letsencrypt-staging
将是tls类型而不是不透明的?
- 当我看到我的 cert-manager pod 的日志时,我得到以下输出,我认为 http 质询未执行:
我收到此消息No existing HTTP01 challenge solver pod found for Certificate "default/letsencrypt-staging-2613163196-0"
据此,我决定将 certmanager.k8s.io/acme-challenge-type: http01
注释添加到我的kong-ingress-zcrm365
入口但没有发生任何事情......我的入口已更新,但仅此而已。
所有这些过程都确认 TLS 证书未成功颁发,并且我的域 test1kongletsencrypt.possibilit.nl 配置的 HTTPS 加密未激活。
这使得我的letsencrypt-staging证书有一个Status:False
,并且订单创建事件不会推进到完成发布。
如何让我的证书由letsencrypt CA签名并成功颁发并激活https加密?这些日志消息发生了什么?
我听说letsencrypt-staging环境只有测试证书,这些是一种“假证书”,也许像我的chrome/firefox浏览器这样的客户端不信任证书颁发者......
这是我无法在我的域上启用 https 加密的原因吗?在肯定的情况下,我应该从暂存环境更改为生产环境吗?
在这个问题中,有些人谈到了这一点,但他们强调:
登台环境应该仅用于测试您的客户端是否正常工作并且可以生成挑战、证书
在我的情况下,仍然在暂存环境中没有生成 http 挑战。:(