Rancher Rio 中自定义域名与外部服务配置指南
前言
在现代微服务架构中,如何优雅地管理服务访问入口和集成外部服务是每个开发者都需要面对的问题。Rancher Rio 作为一个轻量级的 Kubernetes 发行版,提供了简单而强大的工具来管理这些场景。本文将深入讲解如何在 Rio 中配置自定义域名和外部服务。
自定义域名配置
基本概念
在 Rio 中,自定义域名(PublicDomain)功能允许您将专业域名(如 www.myproductionsite.com)映射到您的 Rio 工作负载上。这为生产环境提供了专业的访问入口。
配置步骤
1. DNS 记录设置
根据您的 Rio 集群配置,有两种 DNS 记录设置方式:
方式一:启用 rdns 功能时
- 获取 Rio 集群域名(通过
rio info命令) - 在您的域名管理平台设置 CNAME 记录:
www.myproduction.com → CNAME → xxxxxx.on-rio.io
方式二:禁用 rdns 功能时
- 获取 API 网关的负载均衡器 IP:
kubectl get svc gateway-proxy -n rio-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}' - 设置 A 记录指向该 IP:
www.myproduction.com → A → [IP地址]
2. 在 Rio 中注册域名
基本命令格式:
rio domain register [域名] [目标服务]
目标服务可以是以下几种类型:
- 特定版本的服务:
demo@v1 - 应用的所有版本:
demo - 路由器:
router/prod
3. 使用自定义证书(可选)
如果您不想使用 Let's Encrypt 的免费证书,可以使用自己的 TLS 证书:
-
创建包含证书的 Secret:
kubectl -n rio-system create secret tls www.myproductionsite.com-tls \ --cert=/path/to/your.cert \ --key=/path/to/your.key -
注册域名时指定证书:
rio domain register --secret www.myproductionsite.com-tls www.myproductionsite.com $target
4. 取消域名注册
当不再需要某个域名时,可以取消注册:
rio domain unregister publicdomain/myproductionsite.com
外部服务管理
基本概念
ExternalService 允许您将集群外部的服务(如数据库或遗留系统)集成到 Rio 生态系统中。这些外部服务可以是 IP 地址、FQDN 或其他命名空间中的 Rio 服务。
配置方法
1. 创建指向 FQDN 的外部服务
rio external create ext mydb.address
2. 创建指向 IP 地址的外部服务
可以指定单个或多个 IP:
rio external create ext 1.1.1.1 2.2.2.2
3. 创建指向 Rio 服务的外部服务
可以指向特定版本:
rio external create ext demo@v1
或指向应用的所有版本:
rio external create ext demo
也可以跨命名空间引用:
rio external create ext foo:demo@v1
4. 创建指向路由器的外部服务
rio external create ext router/prod
最佳实践
- 域名管理:建议为生产环境使用专业域名,并配置自动续期的 TLS 证书
- 外部服务命名:为外部服务使用有意义的名称,便于团队理解
- 版本控制:当引用特定版本的服务时,确保版本号与您的发布流程一致
- 监控:配置适当的监控来跟踪外部服务的可用性
常见问题解答
Q: 为什么我的自定义域名无法访问? A: 请检查:1) DNS 记录是否已正确配置并生效 2) Rio 中是否正确注册了域名 3) 证书是否有效(如果使用自定义证书)
Q: 外部服务是否支持服务发现? A: 是的,创建后可以在同一命名空间内通过短名称发现外部服务
Q: 如何更新外部服务的配置? A: 目前需要先删除旧的外部服务,然后创建新的配置
总结
通过 Rio 的自定义域名和外部服务功能,开发者可以轻松地将专业域名与工作负载关联,并无缝集成集群外部的服务。这些功能大大简化了生产环境配置和混合架构管理,让您能够专注于业务逻辑开发而非基础设施配置。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



