本文主要为您介绍如何部署有依赖关系的WordPress应用。

前提条件

背景信息

本例主要演示如何通过编排模板中的自定义模板创建有依赖关系的应用。

主要组件有:
  • WordPress
  • MySQL
涉及到的资源:
  • 存储卷管理
  • Secret管理
  • 服务

操作步骤

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,单击集群
  3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏中,选择配置管理 > 保密字典
  5. 保密字典页面,单击创建
  6. 创建面板中,设置保密字典的相关参数,然后单击确定

    分别在WordPress和WordPress-MySQL的YAML文件中,使用创建的wordpress-pvcwordPress-mysql-pvc存储声明挂载相应的存储卷。需要先通过创建密钥的方式管理创建和访问MySQL数据库的用户名密码。

    在使用Secret前,先在保密字典中创建需要加密的Secret。在本例中通过MySQL Root的密码创建密钥,创建名称为MySQL-pass,类型选择Opaque。具体操作,请参见管理保密字典

    配置密钥页面
  7. 在集群管理页左侧导航栏中,选择工作负载 > 无状态
  8. 无状态页面右上角,单击使用YAML创建资源

    创建WordPress Deployment的YAML示例文件如下:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: wordpress
      labels:
        app: wordpress
    spec:
      selector:
        matchLabels:
          app: wordpress
          tier: frontend
      strategy:
        type: Recreate
      template:
        metadata:
          labels:
            app: wordpress
            tier: frontend
        spec:
          containers:
          - image: wordpress:4
            name: wordpress
            env:
            - name: WORDPRESS_DB_HOST
              value: wordpress-mysql  #通过名称指向需要访问的MySQL,该名称与MySQL Service的名称相对应。
            - name: WORDPRESS_DB_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysql-pass
                  key: password-wordpress
            ports:
            - containerPort: 80
              name: wordpress
            volumeMounts:
            - name: wordpress-pvc
              mountPath: /var/www/html
          volumes:
          - name: wordpress-pvc
            persistentVolumeClaim:
              claimName: wordpress-pv-claim
    创建MySQL Deployment的YAML示例文件如下:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: wordpress-mysql
      labels:
        app: wordpress
    spec:
      selector:
        matchLabels:
          app: wordpress
          tier: mysql
      strategy:
        type: Recreate
      template:
        metadata:
          labels:
            app: wordpress
            tier: mysql
        spec:
          containers:
          - image: mysql:5.6
            name: mysql
            env:
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysql-pass
                  key: password-mysql
            ports:
            - containerPort: 3306
              name: mysql
            volumeMounts:
            - name: wordpress-mysql-pvc
              mountPath: /var/lib/mysql
          volumes:
          - name: wordpress-mysql-pvc
            persistentVolumeClaim:
              claimName: wordpress-mysql-pv-claim
  9. 创建服务。

    为了使WordPress能够被外部访问,需要为WordPress创建对外暴露访问方式的Service。使用LoadBalancer类型创建WordPress Service,容器服务会自动创建阿里云负载均衡,为用户提供外部访问。

    WordPress MySQL需要创建名为WordPress-MySQL的Service,以使创建的WordPress Deploymet可以访问到。由于该MySQL只为WordPress内部调用,所以不需要为其创建LoadBalancer类型的Service。关于创建Service的方法,请参见管理服务

    创建WordPress和MySQL Service的YAML文件如下:
    apiVersion: v1
    kind: Service
    metadata:
      name: wordpress
      labels:
        app: wordpress
    spec:
      ports:
        - port: 80
      selector:
        app: wordpress
        tier: frontend
      type: LoadBalancer
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: wordpress-mysql
      labels:
        app: wordpress
    spec:
      ports:
        - port: 3306
      selector:
        app: wordpress
        tier: mysql
      clusterIP: None
  10. 服务页面中,找到WordPress服务并查看其外端端点。
    服务列表
  11. 在浏览器中输入39.99.XX.XX/wp-admin/install.php,访问WordPress服务的外部端点,您就可以通过负载均衡提供的IP地址来访问WordPress应用。
    此处的39.99.XX.XX为上个步骤获取的外部端点的IP地址。
    访问外部端点

后续步骤

在WordPress应用的配置过程中,您可以使用密钥中配置的密码登录应用。此外,WordPress应用所属的容器产生的数据会保存在数据卷中。