使用Ingress和Cert-Manager保护Percona Everest的安全

使用Ingress和Cert-Manager保护Percona Everest的安全

💡 原文英文,约1700词,阅读约需7分钟。
📝

内容提要

Percona Everest是一个开源的云原生数据库平台,目前处于Alpha阶段。本文介绍了如何在Kubernetes中运行Everest UI,并在一个有效的SSL证书后面使用ingress进行配置。提供了安装Percona Everest、部署ingress-nginx控制器、使用Let's Encrypt配置TLS以及解决常见问题的逐步说明。Percona Everest为在Kubernetes环境中管理数据库提供了安全高效的解决方案。

🔎

延伸解读

为何从第一天就要重视安全

文章引用CNCF调查指出,安全始终是Kubernetes从业者和平台工程师最关注的问题之一。Percona Everest虽处于Alpha阶段,但作者强调从第0天就正确设置安全措施很重要。这提醒读者,即使是早期软件,也不应忽视TLS等基础安全配置,以免后续迁移或暴露风险。

Ingress与cert-manager的协作设计

Percona Everest前端是基于Web的应用,常规设计是以ingress作为单一入口点,证书由cert-manager和Let's Encrypt提供。这种架构将流量入口与证书管理解耦,便于统一维护。读者可借鉴此模式,在类似Web应用前部署ingress并集成cert-manager,实现自动化证书签发与续期。

使用staging环境规避速率限制

Let's Encrypt API有严格的速率限制,文章强烈建议先尝试获取staging证书。通过创建staging Issuer并配置ingress,可以验证整个流程是否正常,而不会消耗生产环境的配额。待staging验证通过后,再切换到生产Issuer获取受信任的SSL证书。这一步骤能有效避免因配置错误导致的限制问题。

常见问题:http01挑战传播失败

作者遇到一个常见问题:cert-manager日志显示等待http-01挑战传播时,预期响应与实际返回的HTML不符。这通常取决于集群的路由配置以及cert-manager请求是否离开Kubernetes集群。最简单的修复方法是给ingress对象添加acme.cert-manager.io/http01-edit-in-place注解。读者若遇到类似错误,可优先检查此注解。

❓

Q&A

Percona Everest 是什么?它目前处于什么阶段?

Percona Everest 是一个开源的云原生数据库平台,目前处于 Alpha 阶段。

在 Kubernetes 中为 Percona Everest 配置 SSL 证书需要哪些前提条件?

需要准备:Kubernetes 集群、已安装并运行的 Percona Everest、Ingress 控制器(如 ingress-nginx),以及一个用于指向 Everest 实例的域名。

如何使用 everestctl 安装 Percona Everest?

首先下载 everestctl 工具,例如在 MacOS ARM 芯片上使用 curl 下载并安装到 /usr/local/bin,然后运行 `everestctl install` 命令即可安装 Percona Everest。

为什么建议先使用 Let's Encrypt 的 staging 环境获取证书?

因为 Let's Encrypt API 有严格的速率限制,先使用 staging 环境可以避免因频繁请求而触发限制,确保测试过程顺利。

如何将 Percona Everest 的 Ingress 配置为使用生产环境的 Let's Encrypt 证书?

创建生产环境的 Issuer(指向 https://acme-v02.api.letsencrypt.org/directory),然后更新 Ingress 的注解,将 cert-manager.io/issuer 的值从 letsencrypt-staging 改为 letsencrypt-production,并应用更新。

在配置证书时遇到 'Waiting for http-01 challenge propagation' 错误该如何解决?

这个错误通常是因为 cert-manager 的请求无法正确路由。最简单的修复方法是在 Ingress 对象上添加注解 `acme.cert-manager.io/http01-edit-in-place: "true"`。

🏷️

标签

➡️

继续阅读