文档中心 容器服务 用户指南(旧版) 应用 应用管理 应用管理实践---不同环境下Wordpress应用部署

应用管理实践---不同环境下Wordpress应用部署

最近更新时间:2019-08-14 22:52:49

在 Devops 流程中,往往包含多个环境,例如包含:开发(Dev),测试(Test/beta),预发布(pre-product), 生产环境(product)。在不同环境中都需要对应用进行部署。

WordPress 是一个内容管理平台,是世界上建立博客和网站最流行的网络发布平台之一,可以让用户轻松地发布,管理和组织各种内容到目标的网站上。在本示例中我们将通过 wordpress 部署的例子,介绍如何通过Namespace命名空间对不同环境进行隔离,通过应用模板+配置实现不同环境下应用的部署。

步骤一: 创建 wordpress 应用模板

Wordpress中包含一个前端的 wordpress 服务和一个后端的 mariadb 服务(mariadb 是一个和 mysql 类似的数据库服务,可以参考mariadb 介绍)。wordpress 应用模板创建过程包括以下几个步骤:

  1. 新建 wordpress 应用模板
  2. 导入 mariadb 服务
  3. 导入 wordpress 服务
  4. 参数转换为配置项

新建 wordpress 应用模板

应用模板列表页面,单击新建按钮,新建一个应用模板。

应用管理wordpress-01.png-38.2kB

在应用模板中,填写应用模板的名称wordpress

应用管理wordpress-02.png-29.3kB

导入 mariadb 服务

在腾讯云容器服务中,支持两种方式导入服务的模板内容:(1) 通过控制台导入 (2) 通过 YAML 文件导入。两种方式可以按照需要任意选择其中一种。更多关于服务导入方式的说明可以参考应用模板内容操作指引

导入方法 1: 通过控制台之间导入

单击导入服务按钮,在控制台填写服务对应参数。

应用管理 wordpress-03.png-70.1kB

设置服务的基本信息:

  1. 填写服务名称mariadb
  2. 填写服务描述mariadb服务

设置服务的数据卷信息:

  1. 数据卷选择使用云硬盘,云盘名称填写vol

设置镜像参数:

  1. 在设置容器运行参数中的镜像参数:
    容器名称设置为mariadb
    镜像名称设置为mariadb
    版本号选择为latest

设置容器其他运行参数:

  1. 设置容器环境变量:
    MYSQL_ROOT_PASSWORD: root

设置数据卷的挂载点:

  1. vol数据卷挂载点设置为:/var/lib/mysql
    (更多关于数据挂载的说明,可以参考数据卷概述)

设置服务的实例数:

  1. 服务的实例数设置为 1

设置服务的访问方式:

  1. 服务的访问方式设置为集群内访问
  2. 服务的访问端口:容器端口和服务端口都设置成 3306
    (更多关于服务访问方式的说明,可以参考服务访问方式设置

单击确认按钮,自动生成 YAML 形式的模板内容。

导入方法 2: 通过 YAML 文件导入

在应用模板页面,单击+按钮,新增一个服务。服务名称设置为mariadb

应用管理wordpress-06.png-39.1kB

在模板内容编辑区域,将下面的 YAML 文本内容直接导入:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    description: mariadb服务
  creationTimestamp: null
  name: mariadb
  namespace: '{{.NAMESPACE}}'
spec:
  replicas: 1
  revisionHistoryLimit: 5
  selector: {}
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
    spec:
      containers:
      - env:
        - name: MYSQL_ROOT_PASSWORD
          value: {{.ROOT_PASSWORD_VALUE}}
        image: mariadb:latest
        imagePullPolicy: Always
        name: mariadb
        resources:
          requests:
            cpu: 200m
        securityContext:
          privileged: false
        volumeMounts:
        - mountPath: /var/lib/mysql
          name: vol
      serviceAccountName: ""
      volumes:
      - name: vol
        qcloudCbs:
          cbsDiskId: '{{.ReleaseCBS_mariadb_vol}}'
          fsType: ext4
status: {}
---
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  name: mariadb
  namespace: '{{.NAMESPACE}}'
spec:
  ports:
  - name: tcp-3306-3306-nh6kj
    nodePort: 0
    port: 3306
    protocol: TCP
    targetPort: 3306
  selector: {}
  type: ClusterIP
status:
  loadBalancer: {}

这里自动提取了NAMESPACEReleaseCBS_mariadb_vol作为配置项。并填写NAMESPACE配置项的值为defaultNAMESPACE用来表示服务部署到集群的哪个命名空间,更多关于命名空间的说明可以参数Namespace使用指引ReleaseCBS_XXXX为容器服务为使用 CBS 云盘定义的变量,更多关于 ReleaseCBS 自定义变量的说明可以参考自定义变量--ReleaseCBS

应用管理wordpress-07.png-50.7kB

导入 wordpress 服务

导入方法 1: 通过控制台之间导入

单击导入服务按钮,在控制台填写服务对应参数

设置服务的基本信息:

  1. 填写服务名称wordpress
  2. 填写服务描述wordpress服务

设置服务的数据卷信息:

  1. 数据卷选择使用云硬盘,云盘名称填写wordpress-persistent-storage

设置镜像参数:

  1. 在设置容器运行参数中的镜像参数:
    容器名称设置为wordpress
    镜像名称设置为wordpress
    版本号选择为latest

设置容器资源限制:

  1. 设置容器的 CPU 分配资源为 0.1 核,限制最大的使用资源为 0.2 核

设置容器其他运行参数:

  1. 设置容器环境变量:
    WORDPRESS_DB_HOST: mariadb
    WORDPRESS_DB_PASSWORD: root

设置数据卷的挂载点:

  1. vol 数据卷挂载点设置为:/var/www/html
    (更多关于数据挂载的说明,可以参考数据卷概述)

设置服务的实例数:

  1. 服务的实例数设置为 1

设置服务的访问方式:

  1. 服务的访问方式设置为外网访问
  2. 服务的访问端口:容器端口和服务端口都设置成 80
    (更多关于服务访问方式的说明,可以参考服务访问方式设置

单击确认按钮,自动生成 YAML 形式的模板内容。

导入方法2: 通过 YAML 文件导入

在应用模板页面,单击+按钮,新增一个服务。服务名称设置为wordpress

在模板内容编辑区域,将下面的 YAML 文本内容直接导入:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    description: wordpress服务
  creationTimestamp: null
  name: wordpress
  namespace: '{{.NAMESPACE}}'
spec:
  replicas: 1
  revisionHistoryLimit: 5
  selector: {}
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
    spec:
      containers:
      - env:
        - name: WORDPRESS_DB_HOST
          value: mariadb
        - name: WORDPRESS_DB_PASSWORD
          value: root
        image: wordpress:latest
        imagePullPolicy: Always
        name: wordpress
        resources:
          limits:
            cpu: 200m
          requests:
            cpu: 100m
        securityContext:
          privileged: false
        volumeMounts:
        - mountPath: /var/www/html
          name: wordpress-persistent-storage
      serviceAccountName: ""
      volumes:
      - name: wordpress-persistent-storage
        qcloudCbs:
          cbsDiskId: '{{.ReleaseCBS_wordpress_wordpress_persistent_storage}}'
          fsType: ext4
status: {}
---
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  name: wordpress
  namespace: '{{.NAMESPACE}}'
spec:
  ports:
  - name: tcp-80-80-snfig
    nodePort: 0
    port: 80
    protocol: TCP
    targetPort: 80
  selector: {}
  type: LoadBalancer
status:
  loadBalancer: {}

这里自动提取 ReleaseCBS_wordpress_wordpress_persistent_storage 作为配置项。ReleaseCBS_XXXX为容器服务为使用 CBS 云盘定义的变量,更多关于ReleaseCBS 自定义变量的说明可以参考自定义变量--ReleaseCBS

参数转换为配置项

在不同环境中部署,可能会存在不同环境下参数一致的情况。这里在模板内容区域将 CPU 使用资源设置为变量,在不同环境下设置成不同的值。
wordpress

在这个示例中我们将 CPU 分配资源量和最大限制使用资源量设置为变量。分别用变量CPU_LIMITSCPU_REQUEST表示。变量的形式符合{{.}}这样的形式。更多关于模板中变量的使用可以参考变量设置
这里自动提取变量CPU_LIMITSCPU_REQUEST,设置CPU_LIMITS的默认值为 200 m,CPU_REQUEST为 100 m。(1 m=0.001 核)。

单击完成后,保存模板信息。在模板列表页可以看到新创建的模板。

应用管理wordpress-14.png-27.4kB

步骤二: 创建不同环境的命名空间

命名空间(Namespace)是对一组资源和对象的抽象集合,可以将不同环境的服务实例部署在不同命名空间中。

如果我们已经有了一个集群,可以直接在集群上开始创建命名空间。如果我们还没有创建好的集群,可以参考集群基本操作,创建一个集群。

创建集群 Namespace

  1. 在集群列表页中选择某集群的 ID/名称。
  2. 单击 Namespace 列表 ,单击【新建 Namespace】。

更多关于命名空间的操作,可以参考Namespace 使用指引

应用管理 wordpress-23.png-31.1kB

在本示例中,我们依次创建 devnamespace、testnamespace、prenamespace、prodnamespace。

应用管理 wordpress-24.png-33kB

步骤三: 创建不同环境的 CBS 盘

由于云硬盘页面,选择对应的区域单击新建按钮,创建新的云硬盘。

应用管理wordpress-16.png-35.2kB

填写对应的参数:

应用管理wordpress-17.png-93.9kB

设置的主要参数包括:

  1. 磁盘名称,例如:wordpress-dev
  2. 选择所属项目和所在地域。
  3. 选择计费类型和磁盘类型,这里选择包年包月和普通云硬盘
  4. 选择容量大小,对于不同环境使用的磁盘,选择不同大小。在 dev,test,pre-product 使用 10 GB,product 环境使用 50 GB。
  5. 选择磁盘数量,由于应用中两个服务各使用了一块磁盘,所以每个环境需要购买两块磁盘。
  6. 单击完成按钮,确认购买

购买完成后,等待 2~3 分钟,可以看 CBS 盘的页面查看到对应的磁盘。

应用管理wordpress-18.png-76.3kB

步骤四: 创建不同环境的配置项

在不同环境中,可以将不同环境的差异化信息通过配置项保存。在配置项页面,单击新建按钮,可以创建对应的配置文件。

应用管理wordpress-15.png-35.2kB

dev 环境配置项:

应用管理wordpress-19.png-31.5kB

NAMESPACE: devnamespace
ReleaseCBS_mariadb_vol: disk-peivemz1
ReleaseCBS_wordpress_wordpress_persistent_storage: disk-aq0280h5
CPU_LIMITS: 200m
CPU_REQUEST: 100m

test 环境配置项:

应用管理wordpress-22.png-31.8kB

NAMESPACE: testnamespace
ReleaseCBS_mariadb_vol: disk-fifiv4ht
ReleaseCBS_wordpress_wordpress_persistent_storage: disk-1ywc14gb
CPU_LIMITS: 200m
CPU_REQUEST: 100m

pre-product 环境配置项:

应用管理wordpress-20.png-31.8kB

NAMESPACE: prenamespace
ReleaseCBS_mariadb_vol: disk-fyzh7vgp
ReleaseCBS_wordpress_wordpress_persistent_storage: disk-pxtmsa7b
CPU_LIMITS: 200m
CPU_REQUEST: 100m

product 环境配置项:

应用管理wordpress-22.png-31.8kB

NAMESPACE: prodnamespace
ReleaseCBS_mariadb_vol: disk-r68yb55t
ReleaseCBS_wordpress_wordpress_persistent_storage: disk-frs991e5
CPU_LIMITS: 800m
CPU_REQUEST: 400m

在 product 环境中,设置更大的可使用资源。将 CPU_LIMITS 和 CPU_REQUEST 分别设置成 800 m(0.8 核)和 400 m(0.4 核)。

步骤五: 创建不同环境的应用

新建应用

应用列表选择创建了命名空间的集群。单击新建按钮。

选择应用对应的模板和配置

在新建应用页面,选择对应的应用模板和配置项。

应用管理 wordpress-26.png-41.7kB

应用名称: 设置为 wordpress-dev
应用描述: 开发环境应用
地域选择: 选择步骤二中的集群所在的地域
集群选择: 选择步骤二中的集群
模板选择: 选择步骤一中创建的应用模板
配置项选择: 选择步骤四中创建的开发环境的配置项

单击下一步,对应用中的模板内容进行再次编辑。由于我们已经在应用模板和配置项中完成了对应的设置,所以这里直接单击完成按钮,完成应用内容的编辑。

应用管理 wordpress-27.png-39.5kB

查看应用状态

在应用列表页面,可以查看到新创建的应用,只是此时应用还处于未部署状态。

应用管理 wordpress-28.png-17.7kB

应用详情页面部署应用中的服务

单击应用的名称,可以查看应用的详情。在应用的详情页面,可以对应用进行部署操作。

应用管理 wordpress-29.png-30.5kB

单击部署按钮完成应用中服务的部署。

查看服务的信息

在完成部署后,应用中服务的状态变为已部署,服务的运行状态变为运行中

应用管理 wordpress-30.png-37.4kB

单击服务的名称,可以跳转到服务详细页面,可以查看更多服务的信息。

应用管理 wordpress-31.png-48.7kB

访问服务测试

使用 wordpress 中服务访问的外网 IP 和服务端口,可以发起对服务的访问。

应用管理 wordpress-32.png-62kB

这样就完成了 dev(开发)环境的 wordpress 应用的部署。

应用部署到不同环境

执行同样的步骤,在应用配置时选择不同环境下对应的配置。可以将应用部署到不同的环境。部署完成后,可以在应用列表查看应用的信息。

应用管理 wordpress-33.png-28.9kB

这样基于同一个应用模板和不同环境下的配置信息,就将应用部署到了不同的环境。