Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

支持通过hgctl集成证书管理组件 (Support integrating certificate management components through helm parameters) #64

Closed
gitlayzer opened this issue Nov 26, 2022 · 21 comments · Fixed by #854

Comments

@gitlayzer
Copy link

我为什么需要这个功能?

1:因为接入cert-manager需要一定的学习成本,对不了解cert-manager的工程师来讲不是特别友好
2:针对dev/sit/test/fat/uat等环境可能并不需要真正的接入付费证书

我希望它是什么样子?

1:希望在Helm/Yamlfile部署的时候可以支持打开这个功能,可以调研一下caddy的ingress的功能
2:打开此功能后,当用户没有在部署应用时可以选择性的开启自动TLS,这样它可以自动的去走ACME或者其他的自动方法去实现这个HTTPS生成的功能

Caddy-ingress

Caddy-ingress

@johnlanni johnlanni added good first issue Good for newcomers help wanted Extra attention is needed labels Nov 29, 2022
@johnlanni johnlanni changed the title 关于自动化TLS的建议 支持通过 helm 参数集成证书管理组件 (Support integrating certificate management components through helm parameters) Nov 30, 2022
@johnlanni johnlanni added this to the 0.6.0 milestone Nov 30, 2022
@gitlayzer
Copy link
Author

又一个新的可以参考的开源工具也可以参考一下 Ambassador

@johnlanni johnlanni modified the milestones: 0.6.0, backlog Feb 17, 2023
@johnlanni johnlanni changed the title 支持通过 helm 参数集成证书管理组件 (Support integrating certificate management components through helm parameters) 支持通过hgctl集成证书管理组件 (Support integrating certificate management components through helm parameters) Oct 26, 2023
@Muzry
Copy link

Muzry commented Oct 26, 2023

尝试做一下

@gitlayzer
Copy link
Author

尝试做一下

可以参考一下这个 certmagic

@johnlanni
Copy link
Collaborator

@Muzry 这块工作有进展吗

@johnlanni
Copy link
Collaborator

https://cert-manager.io/docs/usage/gateway/

这块还需要考虑支持 Gateway API,看文档 certmanager 只支持了 v1alpha2 的 gateway,这个版本目前已经废弃了

@johnlanni
Copy link
Collaborator

@Muzry 这块相关的 Hgctl 命令行是否设计好了,可以一起讨论下

@johnlanni johnlanni added the help wanted Extra attention is needed label Dec 28, 2023
@2456868764 2456868764 self-assigned this Dec 28, 2023
@Muzry
Copy link

Muzry commented Dec 28, 2023

@johnlanni 由于当前当前较忙,无法顾及到此 issue,因此需要将此 issue 释放出来给其他开发者。

下面附上调研情况以及会议情况:

  • cert-manager 支持多种签发方式,如 self-signerca-self-singerACME 等方式,会议中已确定当前只支持 ACME 的签发方式。
    • ACME 签发证书支持通过 HTTP-01DNS-01 两种方式进行证书签发,会议中已经确定使用 HTTP-01 方式作为本 issue 的实现方式
    • 会议上提到需要通过 hgctl 实现如下功能:
      • 列出现有证书
      • 新的证书申请
    • 使用 HTTP-01 作为证书申请方式时,需要注意必须打开 ingress,可以向免费的签发机构进行申请证书
    • 签发完成后有 3 个月的有效期,证书到期后会自动续签
    • 免费签发的机构有如下:
      • Let’sEncrypt
        https://acme-v02.api.letsencrypt.org/directory
      • Buypass
        https://api.buypass.com/acme/directory
      • ZeroSSL
        https://acme.zerossl.com/v2/DV90
  • 可以参考文档

@2456868764
Copy link
Collaborator

2456868764 commented Jan 3, 2024

hgctl cert 命令初步设计包括四个子命令 install, config, list, generate

  • install: 安装 cert manager
  • config: 设置 acme 和 issuer
  • list: 显示 certificate CR
  • generate: 从 ingress 生成 certificate CR

@johnlanni
Copy link
Collaborator

johnlanni commented Jan 5, 2024

hgctl cert 命令初步设计包括四个子命令 install, config, list, generate

  • install: 安装 cert manager
  • config: 设置 acme 和 issuer
  • list: 显示 certificate CR
  • generate: 从 ingress 生成 certificate CR

我有几个想法,核心是为了让这个功能更简单使用:

  1. 支持通过profile配置开启cert manager,这样不需要install
  2. 也通过profile填写必须的配置,但是否能对用户屏蔽acme和issuer等信息,默认基于let‘s encrypt,HTTP0
  3. 提供config命令,让用户配置哪些域名要被cert manager接管,以及在证书到期之前多久执行续签
  4. 提供info命令,让用户查看哪些证书被cert manager接管,以及证书的过期时间等
  5. 增加一个全局配置开关,让 higress 的 ingress controller,根据配置的域名自动选择 cert manager 接管的证书

@johnlanni
Copy link
Collaborator

johnlanni commented Jan 26, 2024

cert-manager 确实有一定学习成本,和 @2456868764 讨论可以对接集群中已有的certmanager或者higress可选安装的cert-manager,通过一个简单的configmap配置来管理certmanager的CR对象,而这个configmap配置也可以被hgctl命令管理。

同时也在考虑不依赖cert-manager的方案,打算借助于caddy的这个lib实现,caddy也是基于这个lib实现的caddy ingress。但看上去这个方案似乎只支持 on demand tls,并没有对接 cert-manager的方式灵活。

具体优劣,以及实现成本上需要 @2456868764 进一步评估下。欢迎提出你的建议 @gitlayzer

@gitlayzer
Copy link
Author

cert-manager 确实有一定学习成本,和 @2456868764 讨论可以对接集群中已有的certmanager或者higress可选安装的cert-manager,通过一个简单的configmap配置来管理certmanager的CR对象,而这个configmap配置也可以被hgctl命令管理。

同时也在考虑不依赖cert-manager的方案,打算借助于caddy的这个lib实现,caddy也是基于这个lib实现的caddy ingress。但看上去这个方案似乎只支持 on demand tls,并没有对接 cert-manager的方式灵活。

具体优劣,以及实现成本上需要 @2456868764 进一步评估下。欢迎提出你的建议 @gitlayzer

我认为的,集成 TLS 就够了,本身也没有特别复杂的操作,caddy 的 lib 和 cert-manager 哪儿个都可以,重点是放在 TLS 上,而不是选型上,先实现一版,不理想后面在迭代更改也是可以的

@johnlanni
Copy link
Collaborator

@gitlayzer caddy ingress 的on demand tls满足你的需要吗,这个似乎没法指定对特定域名开启证书申请/续签功能?

@gitlayzer
Copy link
Author

@gitlayzer caddy ingress 的on demand tls满足你的需要吗,这个似乎没法指定对特定域名开启证书申请/续签功能?

我看 caddy 的 ingress caddy-ingress 它支持了两种方式哦,是不是可以参考一下?

@gitlayzer
Copy link
Author

@gitlayzer caddy ingress 的on demand tls满足你的需要吗,这个似乎没法指定对特定域名开启证书申请/续签功能?

起初我发起这个 issues 的时候想到了 cert-manager 是因为它支持证书的自动续签,但后面看到了 Caddy 支持自动 HTTPS,所以我认为的是它是不是有着类似 cert-manager 的功能但是可以做更少的工作

@gitlayzer
Copy link
Author

cert-manager 确实有一定学习成本,和 @2456868764 讨论可以对接集群中已有的certmanager或者higress可选安装的cert-manager,通过一个简单的configmap配置来管理certmanager的CR对象,而这个configmap配置也可以被hgctl命令管理。

同时也在考虑不依赖cert-manager的方案,打算借助于caddy的这个lib实现,caddy也是基于这个lib实现的caddy ingress。但看上去这个方案似乎只支持 on demand tls,并没有对接 cert-manager的方式灵活。

具体优劣,以及实现成本上需要 @2456868764 进一步评估下。欢迎提出你的建议 @gitlayzer

我看下来,先依赖 cert-manager 然后通过 hgctl 去管理这个方案也是不错的,这样也可以减少针对 cert-manager crd 的操作了

@johnlanni
Copy link
Collaborator

嗯 我们先研究下 caddy 的实现,看上去比 cert-manager 简单很多

@cx2c
Copy link

cx2c commented Feb 20, 2024

cert-manager用户自建不可以么,
在higress控制台配置域名和证书的时候像ingress那样指定cluster-issuer即可。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod

@johnlanni
Copy link
Collaborator

@cx2c 可以呀,certmanager自建,就是走certmanger支持的对接ingress/gateway api的方案。

这个issue是希望进一步简化crd配置

@cx2c
Copy link

cx2c commented Feb 20, 2024

@cx2c 可以呀,certmanager自建,就是走certmanger支持的对接ingress/gateway api的方案。

这个issue是希望进一步简化crd配置

目前已经支持certmanager了么。我们certmanager用的还挺重了,非生产环境全是用certmanager管理的,想要在生产推广使用higress,那得先在非生产上验证过了才行。

@johnlanni
Copy link
Collaborator

@cx2c 支持的,certmanager支持ingress api标准,所以天然支持的

@cx2c
Copy link

cx2c commented Feb 20, 2024

@cx2c 支持的,certmanager支持ingress api标准,所以天然支持的

厉害啊! 果然可以。 非常友好

@johnlanni johnlanni removed the help wanted Extra attention is needed label Feb 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

6 participants