常见问题

本文介绍应用交付AppStack的常见问题。

K8s集群相关

资源池必须是 Kubernetes 集群吗?

AppStack 当前版本仅支持云原生场景,包括阿里云容器服务 ACK 集群,以及其他云厂商提供的或者自建的 Kubernetes 集群。

部署时拉取不到镜像或拉取镜像失败?

检查 K8s 集群上是否配置了对应镜像仓库的imagePullSecret。

ACK集群可以参考:https://help.aliyun.com/document_detail/86307.html#title-vvx-t8u-mb0

自建集群参考:https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

AppStack 与云效流水线 Flow 是什么关系?什么区别?

AppStack 和流水线 Flow 都是云效产品矩阵中的子产品。流水线 Flow 只能做部署,没有应用、环境、资源池的概念,AppStack 是对流水线持续部署(CD)能力的补充。流水线只能表达任务流程,多了以后只能分组管理,分类难规范,用 AppStack 中的应用概念囊括流水线、环境、资源等等信息,可以让研发管理更规范。

我的 K8s 集群是在自建机房里 / 其他云厂商 / 使用阿里云ECS自己搭建的,可以使用 AppStack 吗?

可以使用。只要 K8s 集群的 API Server 公网可访问,使用集群的 KubeConfig 凭证将集群信息导入到 AppStack,即可使用。

AppStack 和 KubeVela有什么关系?

AppStack 使用 KubeVela 实现了基于 Open Application Model (OAM) 的部署能力增强,并对 KubeVela 有所贡献。

应用编排相关

创建部署单时无法选择某个编排版本

检查对应版本的编排是否包含需要部署的环境标签,如未包含部署环境标签,需要在编排上添加对应环境标签。

  1. 检查编排对应的环境标签:

    image

  2. 查看研发流程部署的环境标签:

    1. 查看部署步骤配置的环境

      image

    2. 在环境中查看对应的标签:

      image

修改编排后重新部署仍然使用旧内容

场景一:部署时实际使用的是旧编排版本

参考创建部署单时无法选择某个编排版本,检查对应版本的编排是否包含需要部署的环境标签。查看部署时使用的编排版本:

image

场景二:部署时使用的是最新编排版本,但内容仍未生效

确认部署单实际使用的编排版本

  • 如使用的是最新编排版本,则需要检查编排内容是否符合对应环境的语法。错误语法样例如下:

    apiVersion: apps/v1 kind: Deployment metadata: name: {{ .AppStack.appName }} labels: app: {{ .AppStack.appName }} namespace: {{ .Values.namespace }} spec: replicas: {{ .Values.replicas }} ...... spec: replicas: {{ .Values.replicas }} ......

    Deployment中出现两个顶级spec时会忽略第一个,因此在编排中修改第一个spec内容时无法生效。

  • 确认修改的是否为应用模板中的编排,应用模板中的编排需要手动同步到应用中。

    image

是否可以修改一个编排模板,并在多个应用生效

可以,详细步骤如下:

  1. AppStack中的全局设置中创建应用模板,并配置公共模板。

  2. 在具体应用中单击设置,在基本设置中配置应用的模板。

  3. 进入步骤1创建的模板页面,开启“同步”,并手动同步到目标应用。

    image