本文介绍应用交付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 有所贡献。
应用编排相关
创建部署单时无法选择某个编排版本
检查对应版本的编排是否包含需要部署的环境标签,如未包含部署环境标签,需要在编排上添加对应环境标签。
检查编排对应的环境标签:

查看研发流程部署的环境标签:
查看部署步骤配置的环境

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

修改编排后重新部署仍然使用旧内容
场景一:部署时实际使用的是旧编排版本
参考创建部署单时无法选择某个编排版本,检查对应版本的编排是否包含需要部署的环境标签。查看部署时使用的编排版本:

场景二:部署时使用的是最新编排版本,但内容仍未生效
确认部署单实际使用的编排版本:
如使用的是最新编排版本,则需要检查编排内容是否符合对应环境的语法。错误语法样例如下:
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内容时无法生效。
确认修改的是否为应用模板中的编排,应用模板中的编排需要手动同步到应用中。

是否可以修改一个编排模板,并在多个应用生效
可以,详细步骤如下:
在AppStack中的全局设置中创建应用模板,并配置公共模板。
在具体应用中单击设置,在基本设置中配置应用的模板。
进入步骤1创建的模板页面,开启“同步”,并手动同步到目标应用。

