稳了,终于可以通过外网访问 Sealos 中的数据库了!

Sealos的数据库功能已升级,允许通过外网访问,适用于各种环境,支持多种数据库类型,如MySQL、PostgreSQL等。仅对有需求的应用开放NodePort,提供一键部署、备份等功能,并简化了外网访问设置和测试过程。

喜大普奔,Sealos 中的数据库功能现已全面升级,支持外网访问!

现在你可以从互联网的任何地方访问 Sealos 中的数据库,无论您的应用部署在何种环境,现在都可以轻松通过外网连接到 Sealos 中的数据库,打破地理限制,提升工作效率和灵活性。

目前数据库是通过 NodePort 暴露到公网,集群的 NodePort 本身数量比较少,所以现在定价也是给有强烈需求的应用使用。如无强烈需求,不建议暴露到公网。

Sealos 支持多种类型的数据库,包括:MySQL、PostgreSQL、MongoDB、Redis 以及 Kafka,所有这些数据库都支持一键部署、一键直连数据库、手动和自动备份、弹性伸缩以及公网迁移。在 Sealos 云操作系统中,创建和管理数据库将会达到前所未有的简单高效。

现在又支持了外网访问,岂不是直接起飞?🛫

使用方法非常简单,直接访问 https://cloud.sealos.io

打开数据库应用:

以 MongoDB 为例,新建一个 MongoDB 数据库,然后点击“外网访问”切换开关:

再点击“开启”:

开启后,您会得到一个专门的外网访问入口。为了安全起见,平台默认隐藏了私密信息,但您可以通过点击上方的👁图标来查看连接信息:

我们可以用本地客户端 MongoDB Compass 来测试连接,macOS 可以通过以下命令安装:

$ brew install mongodb-compass

安装完成后,打开 MongoDB Compass,输入之前获取的连接地址,然后点击 Connect 进行连接:

连接成功:

Sealos 中使用 MySQL 数据库,通常涉及以下几个步骤:部署 MySQL 服务、配置数据库连接信息以及确保应用程序能够正确访问数据库。以下是详细的配置方法: ### 部署 MySQL 服务 1. **创建 MySQL Secret** 在 Kubernetes 环境中,为了安全地管理敏感信息(如数据库密码),需要先创建一个 `Secret` 来存储 MySQL 的 root 密码: ```bash kubectl create secret generic mysql --from-literal=password=<your-root-password> ``` 这里 `<your-root-password>` 是你设定的 MySQL root 用户密码。 2. **获取 MySQL 密码** 如果已经存在一个 MySQL Secret,可以通过以下命令获取其密码: ```bash kubectl get secret mysql -o jsonpath="{.data.password}" | base64 --decode ``` 3. **部署 MySQL 应用** 使用 Helm Chart 或者直接通过 YAML 文件来部署 MySQL 服务。例如,可以使用如下命令部署 MySQL: ```bash helm install mysql bitnami/mysql ``` 或者使用自定义的 `mysql-pv.yaml` 文件进行部署。 4. **处理多实例部署问题** 如果希望部署多个 MySQL 实例以提高可用性,需要注意数据目录的共享问题。由于多个 MySQL 实例不能同时访问同一个数据目录,因此需要为每个实例配置独立的数据卷[^2]。可以通过 StatefulSet 来实现多个 MySQL 实例的部署,并确保每个 Pod 拥有独立的持久化存储。 ### 配置数据库连接信息 1. **配置文件设置** 在 Sealos Devbox 中,可以在 `config` 目录下创建 `config.go` 文件来配置 MySQL 的连接信息,包括用户名、密码、数据库名称、地址和端口等: ```go package config import ( "fmt" ) var ( DBUser = "root" DBPassword = "9w7zjt8f" DBName = "testdb" DBHost = "test1-db-mysql.ns-kc811077.svc" DBPort = "3306" ) func GetDSN() string { return fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", DBUser, DBPassword, DBHost, DBPort, DBName) } ``` 2. **确保网络可达性** 确保应用程序所在的 Pod 能够访问 MySQL 服务的 IP 地址和端口。如果 MySQL 服务是通过 Kubernetes Service 暴露的,则应使用 Service 的 DNS 名称(如 `test1-db-mysql.ns-kc811077.svc`)作为数据库地址。 3. **测试数据库连接** 在应用启动时,可以添加一段代码用于测试数据库连接是否成功: ```go package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "your_project/config" ) func main() { dsn := config.GetDSN() db, err := sql.Open("mysql", dsn) if err != nil { panic(err) } defer db.Close() err = db.Ping() if err != nil { panic(err) } fmt.Println("Successfully connected to the database!") } ``` ### 总结 通过上述步骤,可以在 Sealos 平台中顺利部署并配置 MySQL 数据库,确保应用程序能够安全、定地访问数据库服务。此外,还需要注意安全性与高可用性的设计,如合理配置 Secret 和持久化存储,以保障系统的健壮性和可靠性[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值