环境管理

本文主要介绍云效 AppStack 环境的定义、环境生命周期管理相关功能。环境是应用在某个环境级别运行态的载体,是应用维度做部署和运维的操作界面,通常对应着一组K8s资源实例、或者一组主机服务。在AppStack中, 一个应用可以创建多个环境实例,通常用于开发、测试、生产等不同场景,用户可以分别对这些环境进行更新、管理和运行状态监控。

新建环境

  • 进入 应用-环境 ,点击 新建环境 ,打开新建环境弹窗。

    • 填写 环境名称 :应用下环境唯一标识,创建后不可修改。支持1-63个小写英文字母、数字或"-",不能以"-"开头或结尾。

    • 填写 环境显示名 :环境显示名,创建后可在环境设置里按需修改。支持1-64个中英文字符、数字或符号。

    • 选择 部署方式 :可选部署方式由应用编排方式决定,每个环境指定一种部署方式。

    • 选择 资源 :环境实际部署时使用资源,根据部署方式可选指定类型资源。

      • Kubernetes部署 :则可选自己有权限的 K8s 集群资源。

      • 主机部署:则可选自己有权限的主机集群。可以关联主机集群下的已有 部署组,也可以直接指定主机集群下的某几台机器。 (注意:指定机器,云效 AppStack 会自动为这几台机器创建一个部署组,部署组唯一名称为:${应用名}-${环境名称}-group,部署组显示名为:${应用名}-${环境显示名}-部署组。你可以在主机集群的 关联部署组 列表里管理部署组)。

    • 选择 变量组 :变量组用于环境部署时动态替换应用编排中占位符引用的变量,关联后可在环境设置里按需修改。

    • 选择 标签 :键值对,用于环境等级划分。

    • 填写 描述 :环境的描述信息。

  • 点击 确认 即可新建环境,环境新建成功后将自动跳转至环境详情页面。

image

查看环境列表

  • 进入 应用-环境 ,展示当前应用下的所有环境列表。

    • 每个环境卡片上展示:环境名称、环境标签、环境最近变更信息、环境当前版本以及环境最近一次部署状态。

    • 点击环境卡片上的 立即部署 可以提交新的部署工单。

    • 点击环境卡片可以进入环境详情页面查看环境更多信息,具体参见 查看环境详情

  • 点击环境列表上方 新建环境 可以新建环境,具体操作参见 新建环境

说明: 在新建应用时,AppStack 为应用预设三套开箱即用的环境:开发环境、测试环境、生产环境(对应企业三套标签:环境级别/开发环境、环境级别/测试环境、环境级别/生产环境)。 在环境卡片上通过 快速设置 关联资源后即可使用。预设环境可以修改或删除,也可以新建自定义环境使用。

image

查看环境详情

  • 进入 应用-环境 ,从环境列表选定目标环境卡片,点击进入环境详情页面。环境详情页面可以查看基础信息、环境部署的具体资源信息、历史记录、环境设置以及环境运维操作入口。

image

基础信息

  • 环境概览:展示当前环境使用的应用编排、变量组、部署组等信息。

  • 变更信息:展示环境最近一次的变更信息,包括:变更工单、变更人、变更时间、当前版本等。

  • 基本信息:展示环境的基本信息,包括环境的创建人、创建时间、标签、描述信息。

Kubernetes 环境资源

环境详情可以查看本环境当前部署的所有资源信息,包含的具体资源由应用编排中定义的组件决定。当环境部署方式为 Kubernentes部署 时,可能包括的资源有工作负载、配置、网络、存储等。

工作负载

工作负载 tab页面,展示本环境下部署的所有工作负载资源。工作负载是在 Kubernetes 集群上运行的应用程序。截止当前 AppStack 仅支持无状态工作负载, 即 Deployment,适用于实例完全独立、功能相同的场景,如:nginx、wordpress 等。

  • 可以查看工作负载下的实例信息。

    • 实例IP

    • 实例状态

    • 部署版本

    • 创建时间

    • 容器信息

  • 点击 YAML 可以查看 Deployment 组件的 YAML 信息。

  • 点击 详情 可以查看更多Pod信息。

    • Pod信息

      • Pod状态 :Pod 的运行状态

      • Pod IP :Pod 的 IP

      • 所在节点 :实例所在节点名称和节点 IP

      • 创建时间 :实例创建的时间

      • 运行时间 :实例从启动至今的时间

    • 容器信息

      • 容器名称:容器的名称

      • 镜像:容器所使用的镜像

      • 容器状态:容器的运行状态

      • 重启次数:实例从启动至今实例中容器的重启次数之和

    • 关键事件

      • 可以查看Pod的关键事件,包括事件时间、事件原因、事件详细 Message。可以用于辅助 Pod 问题定位。

    • 容器日志

      • 可以查看容器的标准输出日志。

  • 点击 日志 可以查看容器日志,用于辅助问题定位和排查。

image

配置

配置 tab页面,展示本环境下的所有配置资源信息,可能包括 ConfigMap 和 Secret。ConfigMap 可以用来将非机密性的数据保存到键值对中,使用时,可以将其用作 Pod 的环境变量、 命令行参数或者存储卷中的配置文件。Secret 对象类型用来保存敏感信息,例如密码、OAuth 令牌和 SSH 密钥等。配置将您的环境配置信息和容器镜像解耦,便于应用配置的修改。

  • ConfigMap

    • 组件名称 :应用编排里定义的组件名称

    • 部署状态 :组件的部署状态

    • 部署版本 :最近部署的版本号

    • 更新时间 :最近部署时间

    • YAML :点击可以查看 ConfigMap 组件的 YAML 信息。

  • Secret

    • 组件名称 :应用编排里定义的组件名称

    • 部署状态 :组件的部署状态

    • 部署版本 :最近部署的版本号

    • 更新时间 :最近部署时间

    • YAML :点击可以查看 Secret 组件的 YAML 信息。

image

网络

网络 tab页面,展示本环境下的所有网络资源信息,可能包括 Service 和 Ingress 。Service 可以用来为一组 Pod 提供固定的访问入口,并对这一组 Pod 做负载均衡。Ingress 用来管理集群外部访问集群内部服务的方式,您可以通过 Ingress 资源来配置不同的转发规则,从而达到根据不同的规则设置访问集群内不同的Service 后端 Pod 的目的。

  • Service

    • 组件名称 :应用编排里定义的组件名称

    • 类型 :可能为ClusterIP、NodePort、LoadBalancer、Headless Service、ExternalName等,具体由应用编排里定义的Service类型决定

    • 集群IP

    • 端点 :服务映射端点信息

    • 部署状态 :组件的部署状态

    • 部署版本 :最近部署的版本号

    • 更新时间 :最近部署时间

    • 点击 YAML ,可以查看 Service 组件的 YAML 信息。

  • Ingress

    • 组件名称 :应用编排里定义的组件名称

    • 路由规则数 :组件里定义的路由转发规则数,点击路由规则数,可以查看具体的转发规则:

      • 域名

      • URL

      • 目标服务

      • 服务端口

      • URL匹配规则

    • 部署状态 :组件的部署状态

    • 部署版本 :最近部署的版本号

    • 更新时间 :最近部署时间

    • 点击 YAML 操作,可以查看 Ingress 组件的 YAML 信息。

image

存储

存储 tab页面,展示本环境下的所有存储资源信息。Kubernetes 抽象了PV(PersistentVolume)和PVC(PersistentVolumeClaim)来定义和使用存储。PV 描述的是持久化存储卷,主要定义的是一个持久化存储在宿主机上的目录,比如一个文件存储的挂载目录。 PVC 描述的是 Pod 所希望使用的持久化存储的属性,比如,Volume 存储的大小、可读写权限等等。通常在使用时,可以使用 PV 描述已有的存储资源,然后创建 PVC 使用存储。

  • PVC

    • 组件名称 :应用编排里定义的组件名称

    • 类型 :可读写权限类型,由应用编排里的组件定义,可能为:只读、读写

    • 容量 :声明的使用Volume存储的大小

    • 部署状态 :组件的部署状态

    • 部署版本 :最近部署的版本号

    • 更新时间 :最近部署时间

    • YAML :点击可以查看 PVC 组件的 YAML 信息

image

主机环境资源

  • 展示当前主机环境下部署的机器

    • 主机ID

    • 主机名称

    • IP

    • 连接状态:当前机器的 Agent 连接状态

image

设置环境

环境创建完后,你可以通过 环境设置 功能来修改环境的一些基本信息设置和部署配置设置。

  • 基本设置 :可以修改 环境名称标签描述

  • 部署设置:可以设置环境关联 变量组 。暂不支持修改环境 部署方式资源

image

锁定环境

日常研发流程中,经常会有抢占环境进行回归验证或因特殊原因发布窗口关闭的场景,此时可以使用 锁定 环境功能。环境锁定后无法再提交任何运维操作,但不影响已有工单的执行。 功能入口:环境详情页面,右上角操作区域后的更多操作里。环境锁定后需由锁定人去解锁环境后才可再次执行变更。

历史记录

环境部署运维中经常需要追溯环境历史,用于问题的定位排查或其他场景。环境管理提供了 历史记录 功能,记录了环境从创建开始的所有修改,包括生成运维工单的 变更记录 , 也包括环境基本信息、配置等元数据信息修改的 操作记录 。功能入口:环境详情页面,右上角操作区域 历史记录

  • 变更记录

    • 展示当前环境下所有运维变更记录,单条变更记录信息包括:

      • 变更工单 :运维工单名称。

      • 类型状态 :工单的类型和状态。

      • 版本 :工单的部署版本。

      • 提交信息 :工单提交人和提交时间。

  • 操作记录

    • 展示当前环境下所有操作记录,单条操作记录展示:

      • 操作标题

      • 操作内容

      • 操作人

      • 操作时间

image

删除环境

当环境不再使用时可以使用环境删除功能来销毁环境。环境删除将释放环境资源,应用将不可对外提供服务,数据不可恢复,请谨慎操作!

  • 删除未部署环境

    • 进入环境详情页面,右上角操作区域,点击 删除 按钮,打开 删除环境 二次确认弹窗。

    • 点击 确定 删除,直接清理环境数据,即刻生效。

  • 删除部署过的环境

    • 提交环境删除单

      • 进入环境详情页面,右上角操作区域,点击 删除 按钮,打开新建 删除环境 工单页面。

      • 核对环境信息:工单页面会列出当前环境部署的所有 组件信息 ,以及环境 最近变更 信息,请仔细核对,确认环境是否不再使用。

      • 输入 环境显示名 以确认删除 。

      • 点击 提交 环境删除工单,跳转环境删除工单详情页面。

    • 观察环境删除过程

      • K8s环境删除工单将执行以下步骤

        • 第1步:按照组件部署逆序来删除本环境下部署的所有组件。特别地,在一些环境资源无法正确清理的场景,可以联系集群负责人手工运维进行环境资源清理,参见 手工运维删除环境

        • 第2步:在 环境后置清理 节点删除环境数据。

      • 主机环境删除工单将执行以下步骤

        • 第1步:主机环境删除将先下线服务(下线服务将在环境下每台主机执行 停止脚本 + 清理脚本(如有),详见 主机部署编排)。

        • 第2步:将主机所属部署组与环境解绑(如果选择同时删除部署组,则将删除当前环境关联部署组,将主机释放回主机集群),并删除环境元数据信息。