使用 YAML 文件部署
本文档将指导您如何利用 Rainbond 的 YAML 导入功能,通过上传标准 Kubernetes YAML 文件部署一个功能完整的 WordPress 博客系统。通过本指南,您将了解 Rainbond 如何将 Kubernetes 原生资源无缝转换为平台应用模型。
准备工作
- 已了解 Kubernetes 资源到 Rainbond 应用模型的转换原理
 - 准备示例 
example.yaml文件,该文件包含以下 Kubernetes 资源:Deployment:WordPress 应用组件StatefulSet:MySQL 数据库组件Service:MySQL 服务资源
 
example.yaml
---
apiVersion: v1
kind: Service
metadata:
  name: mysql-wordpress-example
  labels:
    app: mysql-wordpress-example
spec:
  type: ClusterIP
  ports:
    - port: 3306
      targetPort: mysql
  selector:
    app: mysql-wordpress-example
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress-example
  labels:
    app: wordpress-example
spec:
  selector:
    matchLabels:
      app: wordpress-example
  template:
    metadata:
      labels:
        app: wordpress-example
    spec:
      containers:
        - name: wordpress-example
          image: registry.cn-hangzhou.aliyuncs.com/goodrain/bitnami-wordpress:6
          imagePullPolicy: IfNotPresent
          env:
          - name: WORDPRESS_DATABASE_HOST
            value: "mysql-wordpress-example"
          - name: WORDPRESS_DATABASE_PORT_NUMBER
            value: "3306"
          - name: WORDPRESS_DATABASE_PASSWORD
            value: "wordpress"
          - name: WORDPRESS_DATABASE_USER
            value: "root"
          - name: WORDPRESS_DATABASE_NAME
            value: "wordpress"
          - name: WORDPRESS_USERNAME
            value: "admin"
          - name: WORDPRESS_PASSWORD
            value: "admin"
          ports:
            - name: http
              containerPort: 8080
          volumeMounts:
            - name: wordpress-persistent-storage
              mountPath: /var/www/html
      volumes:
        - name: wordpress-persistent-storage
          emptyDir: {}
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql-wordpress-example
  labels:
    name: mysql-wordpress-example
spec:
  selector:
    matchLabels:
      app: mysql-wordpress-example
  template:
    metadata:
      labels:
        app: mysql-wordpress-example
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/goodrain/bitnami-mysql:latest
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "wordpress"
        - name: MYSQL_DATABASE
          value: "wordpress"
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: mysql-data
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-data
        emptyDir: {}
实施步骤
1. 导入 YAML 文件
- 
进入 Rainbond 平台,选择目标团队
 - 
点击 新建应用 → Kubernetes YAML/Helm → YAML 文件上传
 - 
选择本地
example.yaml文件至上传区域 - 
点击 确认上传

 
2. 资源识别阶段
上传完成后,Rainbond 自动识别 YAML 文件中包含的 Kubernetes 资源,并显示为列表:
- 工作负载资源:
Deployment: wordpress-example(WordPress 应用服务器)StatefulSet: mysql-wordpress-example(MySQL 数据库服务器)
 - 服务资源:
Service: mysql-wordpress-example(MySQL 服务)
 
确认资源列表无误后,点击 下一步。

3. 应用模型转换
Rainbond 将识别到的 Kubernetes 资源转换为平台应用模型:
- 
WordPress 组件:由
Deployment类 型工作负载转换而来- 容器镜像、环境变量、挂载卷等规格定义被映射到对应的 Rainbond 配置项
 - 端口配置转换为组件端口设置
 
 - 
MySQL 组件:由
StatefulSet类型工作负载转换而来- 数据库参数通过环境变量方式保留
 - 存储卷配置被转换为存储设置
 
 - 
其他 Kubernetes 资源:进入应用的 K8s 资源 管理面板

 
检查转换结果无误后,点击 部署。
4. 部署和访问应用
- 在应用拓扑图页面,点击 启动 按钮启动整个应用
 - 等待所有组件启动完成(状态变为绿色运行中)
 - 进入 
wordpress-example组件详情页 → 端口 选项卡 - 为 WordPress 的 HTTP 端口(8080)启用 对外服务
 - 使用生成的访问地址打开 WordPress 站点
 
提示:WordPress 管理后台路径为
/wp-admin,默认管理员账号/密码:admin/admin
优化配置
存储持久化优化
YAML 文件中定义的存储资源(如 EmptyDir)在 Rainbond 中可以进行优化处理:
- 导入后,原 YAML 中的 
volumeMounts和volumes配置会被保存在组件的 其他设置 > Kubernetes属性 中 - 对于需要持久化的数据(如 WordPress 内容和 MySQL 数据),推荐使用 Rainbond 的存储功能:
- 删除 Kubernetes 属性中相应的 
volumeMounts/volumes条目 - 进入组件的 存储 > 存储设置 > 添加存储
 - 添加相应的持久化路径
- 例如 MySQL 的 
/bitnami/mysql/data - 例如 WordPress 的 
/bitnami/wordpress 
 - 例如 MySQL 的 
 
 - 删除 Kubernetes 属性中相应的 
 
故障排除
- 组件启动失败: 查看组件的事件和日志,确认镜像拉取和资源配置是否正确
 - WordPress 无法连接 MySQL: 检查环境变量配置,确保数据库连接参数正确且 MySQL 服务已正常启动
 - 数据持久化问题: 如使用了默认的 EmptyDir,重启后数据会丢失,请参照上述存储优化配置持久化存储