add extension use chapter

Signed-off-by: zhuxiujuan28 <562873187@qq.com>
This commit is contained in:
zhuxiujuan28 2024-10-14 16:26:37 +08:00 committed by ROOMrepair
parent 2f5c22c1c3
commit 483bf7ca96
420 changed files with 24636 additions and 52 deletions

View File

@ -0,0 +1,50 @@
---
title: "Install Demo Extensions"
linkTitle: "Install Demo Extensions"
keywords: "Kubernetes,KubeSphere, Quick Start, Installation, Extensions, Example, DevOps"
description: "Show how to install extensions with DevOps as an example."
weight: 02
---
KubeSphere extensions run on KubeSphere Core to extend and enhance the capabilities of KubeSphere, further meeting different business requirements of enterprises.
This section demonstrates how to install extensions in the {ks_product-en} web console, taking DevOps as an example. After the DevOps installation is complete, you can create DevOps projects in a workspace.
// For more information on DevOps projects, please refer to link:../../11-use-extensions/01-devops/[DevOps].
== Prerequisites
You should have the **platform-admin** role on {ks_product-en} platform. For more information, please refer to link:../../05-users-and-roles/01-users/[Users] and link:../../05-users-and-roles/02-platform-roles/[Platform Roles].
== Installation Steps
. Log in to the {ks_product-en} web console with a user having the **platform-admin** role.
. Click **Extensions Center** to view the list of extensions.
. Click DevOps to enter its details page.
. Click **Manage > Install** to enter the installation process.
. On the **Version Selection** tab of the installation dialog, select the version number of DevOps and install all required dependencies (if any). Then click **Next**.
+
--
//note
[.admon.note,cols="a"]
|===
|Note
|
During the installation, it detects whether the extension has dependencies. Dependencies are categorized as required and optional.
If a required dependency is **Not Ready**, you need to install the required version first to ensure the normal use of the extension. Optional dependencies do not affect the installation of the extension.
|===
--
. On the **Extensions Installation** tab, make optional modifications to the configuration of DevOps (if needed), and then click **Start Installation**.
+
image:/images/ks-qkcp/en/v4.0/install-extensions.png[,100%]
. On the **Cluster Selection** tab, select clusters by name or label. Multiple clusters can be selected.
. On the **Diff Config** tab, edit the selected cluster's YAML file, or leave it unchanged to use the default configuration. Then click **OK** to start configuring the cluster agent.
Once the installation is complete, the extension is enabled by default. You can configure, upgrade, disable, or uninstall extensions in the extensions center.

View File

@ -18,7 +18,7 @@ You should have the **platform-admin** role on {ks_product-en} platform. For mor
. Click **Extensions Center** to view the list of extensions.
. Click the name of an uninstalled extension to access the installation page.
. Click the name of an uninstalled extension, and then click **Manage > Install** to access the installation page.
. On the **Version Selection** tab of the installation dialog, select the version of the extension and install all required dependencies (if any). Click **Next**.
+

View File

@ -0,0 +1,44 @@
---
title: "安装示例组件"
linkTitle: "安装示例组件"
keywords: "Kubernetes, KubeSphere, 快速入门, 安装组件, 示例, DevOps"
description: "以 DevOps 安装为例,演示如何安装扩展组件。"
weight: 02
---
KubeSphere 扩展组件,运行在 KubeSphere Core 之上,用来扩展并增强 KubeSphere 产品能力,以进一步满足企业各类型的业务需求。
本节以安装 DevOps 为例,演示如何在{ks_product_left} Web 控制台安装扩展组件。DevOps 安装完成后,即可在企业空间中创建 DevOps 项目。有关组件使用的更多信息请参阅link:../../11-use-extensions/[扩展组件使用]章节。
== 前提条件
您需要在{ks_product_both}平台具有 **platform-admin** 角色。有关更多信息请参阅link:../../05-users-and-roles/01-users/[用户]和link:../../05-users-and-roles/02-platform-roles/[平台角色]。
== 安装步骤
. 以具有 **platform-admin** 角色的用户登录{ks_product_left} Web 控制台。
. 点击**扩展中心**,查看扩展组件列表。
. 点击 DevOps 名称,进入组件安装页面。
. 在组件安装对话框的**版本选择**页签,选择 DevOps 的版本号,并安装好所有必装组件(若有),点击**下一步**。
+
[.admon.note,cols="a"]
|===
|说明
|
安装检测时,会识别扩展组件是否有依赖组件。依赖组件分为必装组件和选装组件。
若必装组件的状态为**未就绪**,您需要先行安装正确版本的必装组件,以确保扩展组件的正常使用。而选装组件不会影响扩展组件的安装。
|===
. 在**扩展组件安装**页签,修改 DevOps 的配置后(可选),点击**开始安装**即开始安装 DevOps。
+
image:/images/ks-qkcp/zh/v4.0/install-extensions.png[,100%]
. 在**集群选择**页签,根据名称、标识选择集群,可选择多个集群。
. 在**差异化配置**页签,分别编辑选中集群的 YAML 配置,也可不修改,使用初始默认配置。点击**确定**,开始配置集群 Agent。
安装完成后,默认启用该组件。您可以在扩展中心配置、升级、禁用、卸载扩展组件。

View File

@ -20,7 +20,7 @@ weight: 01
. 点击**扩展中心**,查看扩展组件列表。
. 点击未安装的扩展组件名称,进入组件安装页面。
. 点击未安装的扩展组件名称,然后点击**管理 > 安装**进入组件安装页面。
. 在组件安装对话框的**版本选择**页签,选择扩展组件的版本号,并安装好所有必装组件,点击**下一步**。

View File

@ -13,11 +13,4 @@ weight: 02
* 您可以将一个集群授权给多个企业空间,从而允许企业空间中的资源运行在该集群上。
ifeval::["{file_output_type}" == "html"]
* 您也可以将多个集群授权给同一个企业空间,从而在企业空间中创建联邦项目。
// 有关联邦项目的更多信息请参阅link:../../../11-use-extensions/04-kubefed[联邦项目]。
endif::[]
ifeval::["{file_output_type}" == "pdf"]
* 您也可以将多个集群授权给同一个企业空间,从而在企业空间中创建联邦项目。有关联邦项目的更多信息,请参阅《{ks_product_right}扩展组件使用指南》的“联邦集群应用管理”章节。
endif::[]
* 您也可以将多个集群授权给同一个企业空间从而在企业空间中创建联邦项目。有关联邦项目的更多信息请参阅link:../../../11-use-extensions/04-kubefed[联邦项目]。

View File

@ -22,8 +22,7 @@ weight: 01
|说明
|
若要使用代理连接,{ks_product_both}平台需要安装并启用 **KubeSphere 多集群代理连接**扩展组件。
// 有关更多信息请参阅link:../../../../11-use-extensions/19-tower/02-add-a-member-cluster-using-proxy-connection/[通过代理连接添加成员集群]。
若要使用代理连接,{ks_product_both}平台需要安装并启用 **KubeSphere 多集群代理连接**扩展组件。有关更多信息请参阅link:../../../../11-use-extensions/19-tower/02-add-a-member-cluster-using-proxy-connection/[通过代理连接添加成员集群]。
|===

View File

@ -1,39 +0,0 @@
---
title: "使应用仓库和 Helm Chart 仓库同步"
linkTitle: "使应用仓库和 Helm Chart 仓库同步"
keywords: "Kubernetes, KubeSphere, 企业空间, 应用仓库, 使应用仓库和 Helm Chart 仓库同步"
description: "介绍如何同步应用仓库和 Helm Chart 仓库。"
draft: true
weight: 04
---
:ks_permission: **应用仓库管理**
:ks_navigation: **应用管理 > 应用仓库**
本节介绍如何使应用仓库和 Helm Chart 仓库同步。
如果您在添加应用仓库时已设置同步周期,系统将根据同步周期自动同步应用仓库和 Helm Chart 仓库。您也可以按照本节介绍的步骤手动使应用仓库和 Helm Chart 仓库同步。
== 前提条件
include::../../../../_custom/workspaceManagement/workspaceManagement-prer-requiredPermission_v4.adoc[]
== 操作步骤
include::../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
. 选择需要同步的应用仓库左侧的复选框,然后在列表上方点击**同步**。
+
--
系统将根据 Helm Chart 仓库更新应用仓库。
--

View File

@ -0,0 +1,44 @@
---
title: "概述"
keywords: "Kubernetes, {ks_product}, DevOps, 概述"
description: "介绍 DevOps 的基本原理。"
weight: 01
---
DevOps 提供一系列持续集成 (CI) 和持续交付 (CD) 工具,可以使 IT 和软件开发团队之间的流程实现自动化。在 CI/CD 工作流中,每次集成都通过自动化构建来验证,包括编码、发布和测试,从而帮助开发者提前发现集成错误,团队也可以快速、安全、可靠地将内部软件交付到生产环境。
不过,传统的 Jenkins Controller-Agent 架构(即多个 Agent 为一个 Controller 工作)有以下不足。
* 如果 Controller 宕机,整个 CI/CD 流水线会崩溃。
* 资源分配不均衡,一些 Agent 的流水线任务 (Job) 出现排队等待,而其他 Agent 处于空闲状态。
* 不同的 Agent 可能配置环境不同,并需要使用不同的编码语言。这种差异会给管理和维护带来不便。
DevOps 组件支持源代码管理工具,例如 GitHub、Git 和 Bitbucket支持通过图形编辑面板 (Jenkinsfile out of SCM) 构建 CI/CD 流水线,或者从代码仓库 (Jenkinsfile in SCM) 创建基于 Jenkinsfile 的流水线。
== 功能
DevOps 组件提供以下功能:
* 独立的 DevOps 项目,提供访问可控的 CI/CD 流水线。
* 开箱即用的 DevOps 功能,无需复杂的 Jenkins 配置。
// * 支持 S2ISource-to-Image快速交付镜像。
* link:../03-how-to-use/02-pipelines/02-create-a-pipeline-using-jenkinsfile/[基于 Jenkinsfile 的流水线],提供一致的用户体验,支持多个代码仓库。
* link:../03-how-to-use/02-pipelines/01-create-a-pipeline-using-graphical-editing-panel/[图形编辑面板],用于创建流水线,学习成本低。
* 强大的工具集成机制,例如 link:../04-how-to-integrate/01-sonarqube/[SonarQube],用于代码质量检查。
* 基于 ArgoCD 的持续交付能力,自动化部署到多集群环境。
== DevOps 流水线工作流
DevOps CI/CD 流水线基于底层 Kubernetes Jenkins Agent 运行。这些 Jenkins Agent 可以动态扩缩即根据任务状态进行动态供应或释放。Jenkins Controller 和 Agent 以 Pod 的形式运行在{ks_product_both}节点上。Controller 运行在其中一个节点上其配置数据存储在一个持久卷声明中。Agent 运行在各个节点上,但可能不会一直处于运行状态,而是根据需求动态创建并自动删除。
当 Jenkins Controller 收到构建请求,会根据标签动态创建运行在 Pod 中的 Jenkins Agent 并注册到 Controller 上。当 Agent 运行完任务后,将会被释放,相关的 Pod 也会被删除。
== 动态供应 Jenkins Agent
动态供应 Jenkins Agent 有以下优势:
**资源分配合理**:动态分配已创建的 Agent 至空闲节点,避免因单个节点资源利用率高而导致任务排队等待。
**高可扩缩性**:当集群因资源不足而导致任务长时间排队等待时,支持向集群新增节点。
**高可用性**:当 Jenkins Controller 故障时DevOps 会自动创建一个新的 Jenkins Controller 容器,并将持久卷挂载至新创建的容器,保证数据不会丢失,从而实现集群高可用。

View File

@ -0,0 +1,54 @@
---
title: "创建 DevOps 项目"
keywords: "Kubernetes, {ks_product}, 企业空间, DevOps 项目, 创建 DevOps 项目"
description: "介绍如何创建 DevOps 项目。"
weight: 01
---
:ks_permission:  **DevOps 项目创建**
:ks_navigation:  **DevOps 项目**
本节介绍如何创建 DevOps 项目。
== 前提条件
:relfileprefix: ../../../../
* {empty}
include::../../../../_custom/workspaceManagement/workspaceManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
== 操作步骤
include::../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
. 在 **DevOps 项目**页面,点击**创建**。
. 在**创建 DevOps 项目**对话框,设置 DevOps 项目的参数,然后点击**确定**。
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
|名称
|DevOps 项目的名称。名称只能包含小写字母、数字和连字符(-),必须以小写字母开头并以小写字母或数字结尾,最长 63 个字符。
include::../../../../_custom/workspaceManagement/devopsProjects/devopsProject-para-aliasAndDescription.adoc[]
|集群设置
|可供 DevOps 项目使用的集群。DevOps 项目中的资源运行在此处选择的集群中。
|===
DevOps 项目创建完成后,您可以邀请用户加入 DevOps 项目并在 DevOps 项目中部署业务。
--

View File

@ -0,0 +1,74 @@
---
title: "查看 DevOps 项目列表"
keywords: "Kubernetes, {ks_product}, 企业空间, DevOps 项目, 查看 DevOps 项目列表"
description: "介绍如何查看 DevOps 项目列表。"
weight: 02
---
:ks_permission:  **DevOps 项目查看**
:ks_navigation:  **DevOps 项目**
本节介绍如何查看 DevOps 项目列表。
== 前提条件
:relfileprefix: ../../../../
* {empty}
include::../../../../_custom/workspaceManagement/workspaceManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
== 操作步骤
include::../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
====
* DevOps 项目列表提供以下信息:
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
|名称
|DevOps 项目的名称。
|状态
|DevOps 项目当前的状态。
* **成功**DevOps 项目已创建成功并且可用。
* **等待中**DevOps 项目正在创建中。
* **删除中**DevOps 项目正在删除中。
|创建者
|创建 DevOps 项目的用户。
|创建时间
|DevOps 项目的创建时间。
|===
--
* 在列表上方点击搜索框并输入关键字,可搜索名称包含特定关键字的 DevOps 项目。
include::../../../../../_ks_components/oper-refreshListData.adoc[]
include::../../../../../_ks_components/oper-customizeColumns.adoc[]
* 在列表中点击一个 DevOps 项目的名称可打开 DevOps 项目管理页面。您可以在 DevOps 项目管理页面查看和管理 DevOps 项目中的资源。
====

View File

@ -0,0 +1,51 @@
---
title: "编辑 DevOps 项目信息"
keywords: "Kuberentes, {ks_product}, 企业空间管理, DevOps 项目, 编辑 DevOps 项目信息"
description: "介绍如何编辑 DevOps 项目信息。"
weight: 03
---
:ks_permission:  **DevOps 项目管理**
:ks_navigation:  **DevOps 项目**
本节介绍如何编辑项目信息。
您可以编辑项目的别名和描述。{ks_product_right}不支持编辑已创建 DevOps 项目的名称。
== 前提条件
:relfileprefix: ../../../../
* {empty}
include::../../../../_custom/workspaceManagement/workspaceManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
== 操作步骤
include::../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
. 在需要操作的 DevOps 项目右侧点击image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],然后在下拉列表中选择**编辑信息**。
. 在**编辑信息**对话框,设置 DevOps 项目的别名和描述,然后点击**确定**。
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
include::../../../../_custom/workspaceManagement/devopsProjects/devopsProject-para-aliasAndDescription.adoc[]
|===
--

View File

@ -0,0 +1,63 @@
---
title: "删除 DevOps 项目"
keywords: "Kuberentes, {ks_product}, 企业空间管理, DevOps 项目, 删除 DevOps 项目"
description: "介绍如何编辑删除 DevOps 项目。"
weight: 04
---
:ks_permission:  **DevOps 项目管理**
:ks_navigation:  **DevOps 项目**
本节介绍如何删除 DevOps 项目。
// Note
include::../../../../../_ks_components/admonitions/note.adoc[]
DevOps 项目删除后不能恢复,同时 DevOps 项目中的所有的资源也将被删除,请谨慎执行此操作。
include::../../../../../_ks_components/admonitions/admonEnd.adoc[]
== 前提条件
:relfileprefix: ../../../../
* {empty}
include::../../../../_custom/workspaceManagement/workspaceManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
== 删除单个项目
include::../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
. 在需要删除的 DevOps 项目右侧点击image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],然后在下拉列表中选择**删除**。
. 在**删除 DevOps 项目**对话框,输入 DevOps 项目的名称,然后点击**确定**。
== 批量删除项目
include::../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
. 选择需要删除的 DevOps 项目左侧的复选框,然后在 DevOps 项目列表上方点击**删除**。
. 在**批量删除 DevOps 项目**对话框,输入 DevOps 项目的名称,然后点击**确定**。
+
--
include::../../../../_custom/note-separateNamesByComma.adoc[]
--

View File

@ -0,0 +1,13 @@
---
title: "管理 DevOps 项目"
keywords: "Kubernetes, {ks_product}, 企业空间, DevOps 项目"
description: "介绍如何查看 DevOps 项目信息以及管理 DevOps 项目。"
weight: 02
layout: "second"
---
本节介绍如何管理 DevOps 项目。
DevOps 项目为用户提供了持续集成和持续部署CI/CD功能。您可以在 DevOps 项目中将{ks_product_both}与第三方代码仓库对接,然后通过流水线或持续部署使源代码变化自动更新到目标环境中。

View File

@ -0,0 +1,73 @@
---
title: "创建和管理 DevOps 项目"
keywords: "Kubernetes, {ks_product}, DevOps 项目, DevOps 项目管理"
description: "演示如何创建和管理 DevOps 项目。"
weight: 01
---
本节演示如何创建和管理 DevOps 项目。
== 前提条件
ifeval::["{file_output_type}" == "html"]
* 已创建一个企业空间和一个用户 (**project-admin**),需要邀请该用户至该企业空间并赋予 **workspace-self-provisioner** 角色。有关更多信息请参阅link:../../../../02-quickstart/03-control-user-permissions[控制用户权限]。
endif::[]
ifeval::["{file_output_type}" == "pdf"]
* 已创建一个企业空间和一个用户 (**project-admin**),需要邀请该用户至该企业空间并赋予 **workspace-self-provisioner** 角色。有关更多信息,请参阅《{ks_product_right}快速入门》的“控制用户权限”章节。
endif::[]
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
== 创建 DevOps 项目
. 以 **project-admin** 用户登录{ks_product_both} Web 控制台,进入一个企业空间。
. 点击 **DevOps 项目**,然后点击**创建**。
. 输入 DevOps 项目的基本信息,然后点击**确定**。
+
--
* **名称**DevOps 项目的简明名称,便于用户识别,例如 **demo-devops**。
* **别名**DevOps 项目的别名。
* **描述信息**DevOps 项目的简要介绍。
* **集群设置**在当前版本中DevOps 项目无法同时跨多个集群运行。如果有多个集群,则必须选择一个集群来运行 DevOps 项目。
--
. DevOps 项目创建后,会显示在 DevOps 项目页面的列表中。
== 查看 DevOps 项目
点击刚刚创建的 DevOps 项目,转到其详情页面。
在 DevOps 项目中,用户可以创建 CI/CD 流水线、凭证,以及管理项目成员和角色。根据权限不同,用户在 DevOps 项目中可以执行的操作也不同。
* 流水线
+
--
流水线是一系列插件的集合,支持持续地集成、测试和构建代码。流水线将持续集成 (CI) 和持续交付 (CD) 进行结合,提供精简的工作流,使您的代码可以自动交付给任何目标。
--
* 凭证
+
--
具有相应权限的 DevOps 项目用户可以为流水线配置凭证,以便与外部环境进行交互。用户在 DevOps 项目中添加凭证后DevOps 项目就可以使用这些凭证与第三方应用程序(例如 GitHub、GitLab 和 Docker Hub进行交互。有关更多信息请参阅link:../../03-how-to-use/05-devops-settings/01-credential-management/[凭证管理]。
--
* 成员和角色
+
--
与项目相似DevOps 项目也需要为用户授予角色,以便用户在 DevOps 项目拥有不同的权限。项目管理员(例如 **project-admin**负责邀请用户并授予他们不同的角色。有关更多信息请参阅link:../../03-how-to-use/05-devops-settings/02-role-and-member-management/[角色和成员管理]。
--
== 编辑或删除 DevOps 项目
. 点击 **DevOps 项目设置**下的**基本信息**,查看当前 DevOps 项目的概述,如项目角色和项目成员的数量、项目名称和项目创建者等。
. 点击右侧的**管理**按钮,编辑此 DevOps 项目的基本信息或删除 DevOps 项目。

View File

@ -0,0 +1,500 @@
---
title: "使用图形编辑面板创建流水线"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps, 流水线, 使用图形编辑面板创建流水线"
description: "介绍如何使用图形编辑面板创建流水线。"
weight: 01
---
DevOps 中的图形编辑面板包含用于 Jenkins link:https://www.jenkins.io/zh/doc/book/pipeline/#阶段[阶段 (Stage)] 和link:https://www.jenkins.io/zh/doc/book/pipeline/#步骤[步骤 (Step)] 的所有必要操作。DevOps 支持直接在交互式面板上定义这些阶段和步骤,无需创建任何 Jenkinsfile。
本文档演示如何在{ks_product_both}中使用图形编辑面板创建流水线。在整个过程中DevOps 将根据编辑面板上的设置自动生成 Jenkinsfile您无需手动创建 Jenkinsfile。待流水线成功运行它会将镜像推送至 Docker Hub。
== 前提条件
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
* 已有一个 link:http://www.dockerhub.com/[Docker Hub] 账户。
* 已创建一个企业空间、一个 DevOps 项目和一个用户 (例如 **project-regular**),并已邀请该用户至 DevOps 项目且授予 **operator** 角色。请参阅link:../../05-devops-settings/02-role-and-member-management[角色和成员管理]。
* 已设置 CI 专用节点用于运行流水线。请参阅link:../../05-devops-settings/04-set-ci-node/[为缓存依赖项设置 CI 节点]。
* 配置电子邮件服务器用于接收流水线通知(可选)。
请参阅link:../09-jenkins-email/[为流水线设置电子邮件服务器]。
* 配置 SonarQube 将代码分析纳入流水线中(可选)。
请参阅link:../../../04-how-to-integrate/01-sonarqube/[将 SonarQube 集成到流水线]。
== 流水线概述
本示例流水线包括以下阶段。
[.admon.note,cols="a"]
|===
|说明
|
* **阶段 1Checkout SCM**:从 GitHub 仓库拉取源代码。
* **阶段 2单元测试**:待该测试通过后才会进行下一阶段。
* **阶段 3代码分析**:配置 SonarQube 用于静态代码分析。
* **阶段 4构建并推送**:构建镜像并附上标签 **snapshot-$BUILD_NUMBER** 推送至 Docker Hub其中 **$BUILD_NUMBER** 是流水线运行记录列表中的记录的运行 ID。
* **阶段 5制品**生成一个制品JAR 文件包)并保存。
// * **阶段 6部署至开发环境**:在开发环境中创建一个部署和一个服务。该阶段需要进行审核,部署成功运行后,会发送电子邮件通知。
|===
== 步骤 1创建凭证
. 以 **project-regular** 用户登录{ks_product_both} Web 控制台。
. 点击**企业空间管理**并进入您的 DevOps 项目,在 **DevOps 项目设置**下的**凭证**页面创建以下凭证。有关如何创建凭证的更多信息请参阅link:../../05-devops-settings/01-credential-management/[凭证管理]。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
如果您的账户或密码中包含任何特殊字符,例如 **@** 和 **$**,可能会因为无法识别而在流水线运行时导致错误。在这种情况下,请先在一些第三方网站(例如 link:https://www.urlencoder.org/[urlencoder])上对账户或密码进行编码,然后将输出结果复制粘贴作为您的凭证信息。
|===
[%header,cols="1a,2a,2a"]
|===
|凭证 ID |类型 |用途
|dockerhub-id
|用户名和密码
|Docker Hub
// |demo-kubeconfig
// |kubeconfig
// |Kubernetes
|===
--
. 再为 SonarQube 创建一个凭证 (**sonar-token**),用于上述的阶段 3代码分析。凭证类型选择**访问令牌**,在**令牌**字段输入 SonarQube 令牌请参阅link:../../../04-how-to-integrate/01-sonarqube/[为新项目创建 SonarQube 令牌 (Token)]。点击**确定**完成操作。
. 创建完成后,您将在凭证页面看到已创建的凭证。
// == 步骤 2创建项目
// 本示例中,流水线会将 link:https://github.com/kubesphere/devops-maven-sample/tree/sonarqube[sample] 应用部署至一个项目。因此,需要创建一个项目(例如 **kubesphere-sample-dev**)。待流水线成功运行,将在该项目中自动创建该应用的部署和服务。
// . 使用 **project-admin** 账户创建项目,该用户也将是 CI/CD 流水线的审核员。
// . 邀请 **project-regular** 账户至该项目,并授予 **operator** 角色。
== 步骤 2创建流水线
. 以 **project-regular** 用户登录{ks_product_both} Web 控制台。
. 点击**企业空间管理**并进入您的 DevOps 项目,在**流水线**页面点击**创建**。
. 在弹出的对话框中,将其命名为 **graphical-pipeline**,点击**下一步**。
. 在**高级设置**页面,点击**添加**,添加以下字符串参数。这些参数将用于流水线的 Docker 命令。添加完成后,点击**创建**。
+
--
[%header,cols="1a,2a,2a,2a"]
|===
|参数类型 |名称 |值 |参数说明
|字符串
|REGISTRY
|`docker.io`
|镜像仓库地址。本示例使用 **docker.io**。
|字符串
|DOCKERHUB_NAMESPACE
|您的 Docker ID
|您的 Docker Hub 账户或该账户下的组织名称。
|字符串
|APP_NAME
|`devops-sample`
|应用名称。本示例使用 **devops-sample**。
|===
// note
[.admon.note,cols="a"]
|===
|说明
|
有关其他字段请直接使用默认值或者参阅link:../05-pipeline-settings/[流水线设置]以自定义配置。
|===
--
== 步骤 3编辑流水线
. 点击流水线名称进入其详情页面。
. 要使用图形编辑面板,点击**流水线配置**页签下的**编辑流水线**。在弹出的对话框中:
* 点击**自定义流水线**,按照以下步骤设置各个阶段。
* 或使用 DevOps 提供的link:../03-use-pipeline-templates/[内置流水线模板]。
. 点击**下一步**,然后点击**创建**。
//note
[.admon.note,cols="a"]
|===
|说明
|
流水线详情页面的**同步状态**,显示了{ks_product_both}和 Jenkins 之间的同步结果。也可点击**编辑 Jenkinsfile** 手动为流水线创建一个 Jenkinsfile。
|===
=== 阶段 1拉取源代码 (Checkout SCM)
图形编辑面板包括两个区域:左侧的**画布**和右侧的**内容**。它会根据您对不同阶段和步骤的配置自动生成一个 Jenkinsfile为开发者提供更加用户友好的操作体验。
//note
[.admon.note,cols="a"]
|===
|说明
|
流水线包括link:https://www.jenkins.io/zh/doc/book/pipeline/syntax/#声明式流水线[声明式流水线]和link:https://www.jenkins.io/zh/doc/book/pipeline/syntax/#脚本化流水线[脚本化流水线]。目前,支持使用该面板创建声明式流水线。有关流水线语法的更多信息,请参阅 link:https://www.jenkins.io/zh/doc/book/pipeline/syntax/[Jenkins 文档]。
|===
. 在图形编辑面板上,从**类型**下拉列表中选择 **node**,从 **Label** 下拉列表中选择 **maven**。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
**Agent** 用于定义执行环境。**Agent** 指令指定 Jenkins 执行流水线的位置和方式。有关更多信息请参阅link:../10-choose-jenkins-agent/[选择 Jenkins Agent]。
|===
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/graphical_panel.png[,100%]
--
. 点击左侧的加号图标来添加阶段。点击**添加步骤**上方的文本框,然后在右侧的**名称**字段中为该阶段设置名称(例如 **Checkout SCM**)。
+
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/edit_panel.png[,100%]
. 点击**添加步骤**。在列表中选择 **Git Clone**,以从 GitHub 拉取示例代码。在弹出的对话框中,填写必需的字段。点击**确定**完成操作。
+
--
* **URL**:输入 GitHub 仓库地址 link:https://github.com/kubesphere/devops-maven-sample.git[]。注意,这里是示例地址,请使用自己的仓库地址。
* **凭证 ID**:本示例中无需输入凭证 ID。
* **分支**:输入 **v4.1.0-sonarqube**。如果不需要代码分析阶段,则使用默认的 v4.1.0 分支。
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/enter_repo_url.png[,100%]
--
=== 阶段 2单元测试
. 点击阶段 1 右侧的加号图标添加新的阶段,以在容器中执行单元测试。将它命名为 **Unit Test**。
+
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/unit_test.png[,100%]
. 点击**添加步骤**,在列表中选择**指定容器**。将其命名为 **maven** 然后点击**确定**。
+
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/container_maven.png[,100%]
. 点击 **maven** 容器步骤下的**添加嵌套步骤**,在列表中选择 **shell** 并输入以下命令。点击**确定**保存操作。
+
--
[,bash]
----
mvn clean test
----
//note
[.admon.note,cols="a"]
|===
|说明
|
在图形编辑面板上可指定在给定阶段指令中执行的一系列link:https://www.jenkins.io/zh/doc/book/pipeline/syntax/#steps[步骤]。
|===
--
=== 阶段 3代码分析可选
本阶段使用 SonarQube 用于测试代码。如果不需要代码分析,可以跳过该阶段。
. 点击 **Unit Test** 阶段右侧的加号图标添加一个阶段,以在容器中进行 SonarQube 代码分析。将它命名为 **Code Analysis**。
+
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/code_analysis_stage.png[,100%]
. 在 **Code Analysis** 中,点击**添加步骤**,选择**指定容器**。将其命名为 **maven** 然后点击**确定**。
+
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/maven_container.png[,100%]
. 点击 **maven** 容器步骤下的**添加嵌套步骤**,以添加一个嵌套步骤。点击**添加凭证**并从**凭证 ID** 列表中选择 SonarQube 令牌 (**sonar-token**)。在**文本变量**中输入 **SONAR_TOKEN**,然后点击**确定**。
+
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/sonarqube_credentials.png[,100%]
. 在**添加凭证**步骤下,点击**添加嵌套步骤**为其添加一个嵌套步骤。
+
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/nested_step.png[,100%]
. 点击 **Sonarqube 配置**,在弹出的对话框中保持默认名称 **sonar** 不变,点击**确定**保存操作。
+
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/sonar_env.png[,100%]
. 在 **Sonarqube 配置**步骤下,点击**添加嵌套步骤**为其添加一个嵌套步骤。
+
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/add_nested_step.png[,100%]
. 点击 **shell** 并在命令行中输入以下命令,用于 sonarqube 认证和分析,点击**确定**完成操作。
+
--
[,bash]
----
mvn sonar:sonar -Dsonar.login=$SONAR_TOKEN
----
--
. 点击**指定容器**步骤下的**添加嵌套步骤**(第三个),选择**超时**。在时间中输入 **1** 并将单位选择为**小时**,点击**确定**完成操作。
+
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/add_nested_step_2.png[,100%]
+
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/timeout_set.png[,100%]
. 点击**超时**步骤下的**添加嵌套步骤**,选择**代码质量检查 (SonarQube)**。在弹出的对话框中选择**检查通过后开始后续任务**。点击**确定**保存操作。
+
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/waitforqualitygate_set.png[,100%]
+
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/sonar_ready.png[,100%]
=== 阶段 4构建并推送镜像
. 点击前一个阶段右侧的加号图标添加一个新的阶段,以构建并推送镜像至 Docker Hub。将其命名为 **Build and Push**。
. 在 **Build and Push** 中,点击**添加步骤**,选择**指定容器**,将其命名为 **maven**,然后点击**确定**。
. 点击 **maven** 容器步骤下的**添加嵌套步骤**,在列表中选择 **shell** 并在弹出窗口中输入以下命令,点击**确定**完成操作。
+
--
[,bash]
----
mvn -Dmaven.test.skip=true clean package
----
--
. 再次点击**添加嵌套步骤**,选择 **shell**。在命令行中输入以下命令,以根据 link:https://github.com/kubesphere/devops-maven-sample/blob/sonarqube/Dockerfile-online[Dockerfile] 构建 Docker 镜像。点击**确定**确认操作。
+
--
[,bash]
----
docker build -f Dockerfile-online -t $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BUILD_NUMBER .
----
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/shell_command.png[,100%]
--
. 再次点击**添加嵌套步骤**,选择**添加凭证**。在弹出的对话框中填写以下字段,点击**确定**确认操作。
+
--
* **凭证名称**:选择您创建的 Docker Hub 凭证,例如 **dockerhub-id**。
* **用户名变量**:输入 **DOCKER_USERNAME**。
* **密码变量**:输入 **DOCKER_PASSWORD**。
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/docker_credential.png[,100%]
//note
[.admon.note,cols="a"]
|===
|说明
|
出于安全原因,账户信息在脚本中显示为变量。
|===
--
. 在**添加凭证**步骤中点击**添加嵌套步骤**(第一个)。选择 **shell** 并在弹出窗口中输入以下命令,用于登录 Docker Hub。点击**确定**确认操作。
+
--
[,bash]
----
echo "$DOCKER_PASSWORD"|docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin
----
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/login_docker_command.png[,100%]
--
. 在**添加凭证**步骤中点击**添加嵌套步骤**。选择 **shell** 并输入以下命令,将 SNAPSHOT 镜像推送至 Docker Hub。点击**确定**完成操作。
+
--
[,bash]
----
docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BUILD_NUMBER
----
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/push_to_docker.png[,100%]
--
=== 阶段 5生成制品
. 点击 **Build and Push** 阶段右侧的加号图标添加一个新的阶段,以保存制品,将其命名为 **Artifacts**。本示例使用 JAR 文件包。
+
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/add_artifact_stage.png[,100%]
. 选中 **Artifacts** 阶段,点击**添加步骤**,选择**保存制品**。在弹出的对话框中输入 **target/*.jar**,将其设置为 Jenkins 中制品的保存路径。点击**确定**完成操作。
+
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/artifact_info.png[,100%]
// === 阶段 6部署至开发环境
// . 点击 **Artifacts** 阶段右侧的加号图标添加最后一个阶段,将其命名为 **Deploy to Dev**。该阶段用于将资源部署至您的开发环境(即 **kubesphere-sample-dev** 项目)。
// +
// image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/deploy_to_dev.png[,100%]
// . 点击 **Deploy to Dev** 阶段下的**添加步骤**,在列表中选择**审核**,然后在**消息**字段中填入 **@project-admin**,即 **project-admin** 账户在流水线运行到该阶段时会进行审核。点击**确定**保存操作。
// +
// --
// image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/input_message.png[,100%]
// //note
// [.admon.note,cols="a"]
// |===
// |说明
// |
// 在{ks_product_both}中,能够运行流水线的账户也能够继续或终止该流水线。
// 此外,流水线创建者、拥有该项目管理员角色的用户或者您指定的账户也有权限继续或终止流水线。
// |===
// --
// . 再次点击 **Deploy to Dev** 阶段下的**添加步骤**。在列表中选择**指定容器**,将其命名为 **maven**,然后点击**确定**。
// . 点击 **maven** 容器步骤下的**添加嵌套步骤**。在列表中选择**添加凭证**,在弹出的对话框中填写以下字段,然后点击**确定**。
// +
// --
// * 凭证名称:选择您创建的 kubeconfig 凭证,例如 **demo-kubeconfig**。
// * kubeconfig 变量:输入 **KUBECONFIG_CONTENT**。
// --
// . 点击**添加凭证**步骤下的**添加嵌套步骤**。在列表中选择 **shell**,在弹出的对话框中输入以下命令,然后点击**确定**。
// +
// --
// [,bash]
// ----
// mkdir ~/.kube
// echo "$KUBECONFIG_CONTENT" > ~/.kube/config
// envsubst < deploy/no-branch-dev/devops-sample-svc.yaml | kubectl apply -f -
// envsubst < deploy/no-branch-dev/devops-sample.yaml | kubectl apply -f -
// ----
// --
// . 如果想在流水线运行成功时接收电子邮件通知,请点击**添加步骤**,选择**邮件**,以添加电子邮件信息。注意,配置电子邮件服务器是可选操作,如果跳过该步骤,依然可以运行流水线。
// +
// --
// //note
// [.admon.note,cols="a"]
// |===
// |说明
// |
// 有关配置电子邮件服务器的更多信息请参阅link:../09-jenkins-email/[为{ks_product_both}流水线设置电子邮件服务器]。
// |===
// --
// . 待完成上述步骤,在右下角点击**确定**,结束编辑流水线。该流水线将展示完整的工作流,并且清晰列示每个阶段。
// +
// --
// 在用图形编辑面板定义流水线时DevOps 会自动创建相应的 Jenkinsfile。点击**编辑 Jenkinsfile** 查看该 Jenkinsfile。
// //note
// [.admon.note,cols="a"]
// |===
// |说明
// |
// 在**流水线**列表页面点击该流水线右侧的image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],选择**复制**来创建该流水线的副本。
// |===
// --
== 步骤 4运行流水线
. 使用图形编辑面板创建的流水线需要手动运行。点击**运行**弹出的对话框会显示link:#_步骤_2创建流水线[步骤 2创建流水线]中已定义的三个字符串参数。点击**确定**来运行流水线。
// . 使用图形编辑面板创建的流水线需要手动运行。点击**运行**弹出的对话框会显示link:#_步骤_3创建流水线[步骤 3创建流水线]中已定义的三个字符串参数。点击**确定**来运行流水线。
+
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/run_pipeline.png[,100%]
. 点击**运行记录**页签,查看流水线的运行状态,点击记录查看详情。
. 流水线如果运行到 **Push with Tag** 阶段,会在此阶段暂停,需要具有审核权限的用户点击**继续**。
// . 稍等片刻,流水线如果运行成功,会在 **Deploy to Dev** 阶段停止。**project-admin** 作为流水线的审核员,需要进行审批,然后资源才会部署至开发环境。
. 以 **project-admin** 用户登录{ks_product_both} Web 控制台,点击**企业空间管理**并进入您的 DevOps 项目,点击 **graphical-pipeline** 流水线。在**运行记录**页签下,点击要审核的记录,点击**继续**以批准流水线。
//note
[.admon.note,cols="a"]
|===
|说明
|
如果要同时运行多个不包含多分支的流水线,在**流水线**列表页面,全部选中这些流水线,然后点击**运行**来批量运行它们。
|===
== 步骤 5查看流水线详情
. 以 **project-regular** 用户登录 {ks_product_both} Web 控制台,点击**企业空间管理**并进入您的 DevOps 项目,点击 **graphical-pipeline** 流水线。
. 在**运行记录**页签下,点击**状态**下的记录,进入**运行记录**详情页。如果任务状态为**成功**,流水线所有阶段都会显示**成功**。
. 在**运行日志**页签下,点击每个阶段查看其详细日志。点击**查看完整日志**,根据日志排除故障和问题,也可以将日志下载到本地进行进一步分析。
== 步骤 6下载制品
在**运行记录**详情页,点击**制品**页签,然后点击制品右侧的图标下载该制品。
== 步骤 7查看代码分析结果
在**代码检查**页面,查看由 SonarQube 提供的本示例流水线的代码分析结果。如果没有事先配置 SonarQube则该部分不可用。有关更多信息请参阅link:../../../04-how-to-integrate/01-sonarqube/[将 SonarQube 集成到流水线]。
== 步骤 8验证 Kubernetes 资源
如果流水线的每个阶段都成功运行,则会自动构建一个 Docker 镜像并推送至您的 Docker Hub 仓库。
// 如果流水线的每个阶段都成功运行,则会自动构建一个 Docker 镜像并推送至您的 Docker Hub 仓库。最终,流水线会在您事先设置的项目中自动创建一个部署和一个服务。
// . 进入项目(本示例中即 **kubesphere-sample-dev**),点击**应用负载**下的**工作负载**,查看流水线自动创建的部署。
// . 点击**应用负载**下的**服务**,查看示例服务通过 NodePort 暴露的端口号。使用 **<Node IP>:<NodePort>** 访问该服务。
// +
// --
// //note
// [.admon.note,cols="a"]
// |===
// |说明
// |
// 访问服务前,您可能需要配置端口转发规则并在安全组中放行该端口。
// |===
// --
. 流水线成功运行后,会推送一个镜像至 Docker Hub。登录 Docker Hub 查看结果。
+
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-graphical-editing-panel/dockerhub_image.png[,100%]
. 该应用名称为 **APP_NAME** 的值,本示例中即 **devops-sample**。Tag 为 **SNAPSHOT-$BUILD_NUMBER** 的值,**$BUILD_NUMBER** 即**运行记录**页签下记录的**运行 ID**。
// . 如果您在link:#_阶段_6部署至开发环境[阶段 6部署至开发环境]配置了电子邮件服务器并添加了电子邮件信息,运行完成后还会收到邮件通知。

View File

@ -0,0 +1,455 @@
---
title: "使用 Jenkinsfile 创建流水线"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps, 流水线, 使用 Jenkinsfile 创建流水线"
description: "介绍如何使用 Jenkinsfile 创建流水线。"
weight: 02
---
Jenkinsfile 是一个文本文件,包含 Jenkins 流水线的定义并被检入源代码控制仓库。Jenkinsfile 将整个工作流存储为代码,因此它是代码审查和流水线迭代过程的基础。有关更多信息,请参阅 link:https://www.jenkins.io/zh/doc/book/pipeline/jenkinsfile/[Jenkins 官方文档]。
本文档演示如何基于 GitHub 仓库中的 Jenkinsfile 创建流水线。
// 本文档演示如何基于 GitHub 仓库中的 Jenkinsfile 创建流水线,并使用该流水线将示例应用程序分别部署到可从外部访问的开发环境和生产环境。
//note
[.admon.note,cols="a"]
|===
|说明
|
DevOps 支持创建两种类型的流水线:一种是本文档中介绍的基于 SCM 中 Jenkinsfile 创建的流水线另一种是link:../01-create-a-pipeline-using-graphical-editing-panel/[通过图形编辑面板创建的流水线]。
Jenkinsfile in SCM 需要源代码管理 (SCM) 中有内置 Jenkinsfile换句话说Jenkinsfile 必须是 SCM 的一部分。DevOps 系统会根据代码仓库的现有 Jenkinsfile 自动构建 CI/CD 流水线。通过定义工作流,例如 **stage** 和 **step** 可以满足特定的构建、测试和部署要求。
|===
== 前提条件
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
* 已有一个 link:https://hub.docker.com/[Docker Hub] 账户和一个 link:https://github.com/[GitHub] 账户。
* 已创建一个企业空间、一个 DevOps 项目和一个用户 (例如 **project-regular**),并已邀请该用户至 DevOps 项目且授予 **operator** 角色。请参阅link:../../05-devops-settings/02-role-and-member-management[角色和成员管理]。
* 已设置 CI 专用节点用于运行流水线。请参阅link:../../05-devops-settings/04-set-ci-node/[为依赖项缓存设置 CI 节点]。
* 已安装和配置 SonarQube可选。请参阅link:../../../04-how-to-integrate/01-sonarqube/[将 SonarQube 集成到流水线]。如果跳过这一部分,则没有下面的 **SonarQube 分析**阶段。
== 流水线概述
本示例流水线包括以下阶段。
//note
[.admon.note,cols="a"]
|===
|说明
|
* **阶段 1Checkout SCM**:从 GitHub 仓库检出源代码。
* **阶段 2单元测试**:待该测试通过后才会进行下一阶段。
* **阶段 3SonarQube 分析**SonarQube 代码质量分析。
* **阶段 4构建并推送快照镜像**:根据**策略设置**中选定的分支来构建镜像,并将 **SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER** 标签推送至 Docker Hub其中 **$BUILD_NUMBER** 是流水线运行记录列表中的记录的运行 ID。
* **阶段 5推送最新镜像**:将 v4.1.0-sonarqube 分支标记为 **latest**,并推送至 Docker Hub。
// * **阶段 6部署至开发环境**:将 v4.1.0-sonarqube 分支部署到开发环境,此阶段需要审核。
* **阶段 6带标签推送**:生成标签并发布到 GitHub该标签会推送到 Docker Hub。
// * **阶段 8部署至生产环境**:将已发布的标签部署到生产环境。
|===
== 步骤 1创建凭证
. 以 **project-regular** 用户登录{ks_product_both} Web 控制台。
. 点击**企业空间管理**并进入您的 DevOps 项目,在 **DevOps 项目设置**下的**凭证**页面创建以下凭证。有关如何创建凭证的更多信息请参阅link:../../05-devops-settings/01-credential-management/[凭证管理]。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
如果您的账户或密码中包含任何特殊字符,例如 **@** 和 **$**,可能会因为无法识别而在流水线运行时导致错误。在这种情况下,请先在一些第三方网站(例如 link:https://www.urlencoder.org/[urlencoder])上对账户或密码进行编码,然后将输出结果复制粘贴作为您的凭证信息。
|===
[%header,cols="1a,2a,2a"]
|===
|凭证 ID |类型 |用途
|dockerhub-id
|用户名和密码
|Docker Hub
|github-id
|用户名和密码
|GitHub
// |demo-kubeconfig
// |kubeconfig
// |Kubernetes
|===
--
. 再为 SonarQube 创建一个凭证 (**sonar-token**),用于上述的阶段 3代码分析。凭证类型选择**访问令牌**,在**令牌**字段输入 SonarQube 令牌请参阅link:../../../04-how-to-integrate/01-sonarqube/[为新项目创建 SonarQube 令牌 (Token)]。点击**确定**完成操作。
. 还需要创建具有如下图所示权限的 GitHub 个人访问令牌 (PAT),然后在 DevOps 项目中,使用生成的令牌创建用于 GitHub 认证的账户凭证(例如,**github-token**)。
+
--
image:/images/ks-qkcp/zh/devops-user-guide/use-devops/create-a-pipeline-using-a-jenkinsfile/github-token-scope.png[,100%]
//note
[.admon.note,cols="a"]
|===
|说明
|
如需创建 GitHub 个人访问令牌,请转到您 GitHub 账户的 **Settings**,点击 **Developer settings**,选择 **Personal access tokens**,然后点击 **Generate new token**。
|===
--
. 您将在凭证页面看到已创建的凭证。
== 步骤 2在 GitHub 仓库中修改 Jenkinsfile
. 登录 GitHub 并 Fork GitHub 仓库 link:https://github.com/kubesphere/devops-maven-sample[devops-maven-sample] 的所有分支至您的 GitHub 个人账户。
. 在您自己的 GitHub 仓库 **devops-maven-sample** 中,切换到 v4.1.0-sonarqube 分支,点击根目录中的文件 **Jenkinsfile-online**。
. 点击右侧的编辑图标,编辑环境变量。
+
--
[%header,cols="1a,2a,2a"]
|===
|条目 |值 |描述信息
|DOCKER_CREDENTIAL_ID
|dockerhub-id
|您在{ks_product_both}中为 Docker Hub 账户设置的**名称**。
|GITHUB_CREDENTIAL_ID
|github-id
|您在{ks_product_both}中为 GitHub 账户设置的**名称**,用于将标签推送至您的 GitHub 仓库。
// |KUBECONFIG_CREDENTIAL_ID
// |demo-kubeconfig
// |您在{ks_product_both}中为 kubeconfig 设置的**名称**,用于访问运行中的 Kubernetes 集群。
|REGISTRY
|docker.io
|默认为 **docker.io**,用作推送镜像的地址。
|DOCKERHUB_NAMESPACE
|your-dockerhub-id
|请替换为您的 Docker Hub 账户名,也可以替换为该账户下的 Organization 名称。
|GITHUB_ACCOUNT
|your-github-id
|请替换为您的 GitHub 账户名。例如,如果您的 GitHub 地址是 link:https://github.com/kubesphere/[],则您的 GitHub 账户名为 **kubesphere**,也可以替换为该账户下的 Organization 名称。
|APP_NAME
|devops-maven-sample
|应用名称。
|SONAR_CREDENTIAL_ID
|sonar-token
|您在{ks_product_both}中为 SonarQube 令牌设置的**名称**,用于代码质量检测。
|===
//note
[.admon.note,cols="a"]
|===
|说明
|
Jenkinsfile 中 **mvn** 命令的参数 **-o** 表示开启离线模式。本教程中已下载相关依赖项,以节省时间并适应某些环境中的网络干扰。离线模式默认开启。
|===
--
. 编辑环境变量后,点击 **Commit changes**,更新 v4.1.0-sonarqube 分支中的文件。
// == 步骤 3创建项目
// 创建两个项目,例如 **kubesphere-sample-dev** 和 **kubesphere-sample-prod**,分别代表开发环境和生产环境。待流水线成功运行,将在这两个项目中自动创建应用程序的相关部署 (Deployment) 和服务 (Service)。
// //note
// [.admon.note,cols="a"]
// |===
// |说明
// |
// 您需要提前创建 **project-admin** 账户,用作 CI/CD 流水线的审核者。
// |===
// . 以 **project-admin** 用户登录{ks_product_left},在创建 DevOps 项目的企业空间中创建以下两个项目。
// +
// --
// [%header,cols="1a,1a"]
// |===
// |项目名称|别名
// |kubesphere-sample-dev
// |development environment
// |kubesphere-sample-prod
// |production environment
// |===
// --
// . 邀请 **project-regular** 账户至这两个项目,并赋予 **operator** 角色。
== 步骤 3创建流水线
. 以 **project-regular** 用户登录{ks_product_both} Web 控制台。
. 点击**企业空间管理**并进入您的 DevOps 项目,在**流水线**页面点击**创建**。
. 在弹出的对话框中,将其命名为 **jenkinsfile-in-scm**。
. 在**流水线类别**下,选择**多分支流水线**。
. 在**代码仓库**下,选择一个代码仓库,点击**下一步**继续。
+
--
若没有可用的代码仓库,点击下方的**创建代码仓库**。有关更多信息请参阅link:../../04-import-code-repositories/[导入代码仓库]。
--
.. 在**导入代码仓库**对话框,输入代码仓库名称(自定义),点击选择代码仓库。
.. 在 **GitHub** 页签,从**凭证**的下拉菜单中选择 **github-token**,然后点击**确定**。
.. 在 GitHub 列表中,选择您的 GitHub 账户,与该令牌相关的所有仓库将在右侧列出。选择 **devops-maven-sample** 并点击**选择**。
.. 点击**确定**选择您的代码仓库。
. 在**高级设置**中,勾选**删除旧分支**。本教程中,建议**分支保留天数(天)**和**分支最大数量**使用默认值。
+
--
删除旧分支意味着您将一并丢弃分支记录。分支记录包括控制台输出、已归档制品以及特定分支相关的其他元数据。更少的分支意味着您可以节省 Jenkins 正在使用的磁盘空间。DevOps 提供两个选项来确定何时丢弃旧分支:
* 分支保留天数(天):超过保留期限的分支将被删除。
* 分支最大数量:分支数量超过最大数量时,删除最旧的分支。
//note
[.admon.note,cols="a"]
|===
|说明
|
**分支保留天数(天)**和**分支最大数量**可以同时应用于分支。只要某个分支满足其中一个字段所设置的条件,则会删除该分支。例如,如果您将保留天数和最大分支数分别指定为 2 和 3待某个分支的保留天数超过 2 或者分支保留数量超过 3则会删除该分支。DevOps 默认用 7 和 5 预填充这两个字段。
|===
--
. 在**策略设置**中DevOps 默认提供四种策略。本示例不会使用**从 Fork 仓库中发现 PR** 这条策略,因此您可以删除该策略。对于其他策略,无需修改设置,直接使用默认值即可。
+
--
Jenkins 流水线运行时,开发者提交的 Pull Request (PR) 也将被视为一个单独的分支。
**发现分支**
* **排除已提交 PR 的分支**:不扫描源分支,例如源仓库的 master 分支。需要合并这些分支。
* **只包括已提交 PR 的分支**:仅扫描 PR 分支。
* **包括所有分支**:拉取源仓库中的所有分支。
**从原仓库发现 PR**
* **拉取 PR 合并后的代码**PR 合并到目标分支后,基于源代码创建并运行流水线。
* **拉取 PR 提交时的代码**:根据 PR 本身的源代码创建并运行流水线。
* **分别创建两个流水线**:创建两个流水线,一个流水线使用 PR 与目标分支合并后的源代码版本,另一个使用 PR 本身的源代码版本。
//note
[.admon.note,cols="a"]
|===
|说明
|
选择 GitHub 作为代码仓库,才能启用此处的**策略设置**设置。
|===
--
. 向下滚动到**脚本路径**,将其更改为 **Jenkinsfile-online**,这是示例仓库中位于根目录下的 Jenkinsfile 的文件名。该字段指定代码仓库中的 Jenkinsfile 路径。它表示仓库的根目录。如果文件位置变更,则脚本路径也需要更改。
. 在**扫描触发器**中,勾选**定时扫描**并设置时间间隔为 **5 分钟**。点击**创建**完成配置。
//note
[.admon.note,cols="a"]
|===
|说明
|
设置特定的时间间隔让流水线扫描远程仓库,以便根据您在**策略设置**中设置的策略来检测代码更新或新的 PR。
|===
== 步骤 4运行流水线
. 流水线创建后,会展示在列表中。点击流水线名称查看其详情页。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
* 在**流水线**列表页面点击该流水线右侧的image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],选择**复制**来创建该流水线的副本。
* 如果要同时运行多个不包含多分支的流水线,在**流水线**列表页面,全部选中这些流水线,然后点击**运行**来批量运行它们。
* 流水线详情页面的**同步状态**,显示了{ks_product_both}和 Jenkins 之间的同步结果。若同步成功,将显示**成功**以及绿色的对号图标。
|===
--
. 在**运行记录**页签下,正在扫描多个分支。点击右侧的**运行**,流水线将根据您设置的行为策略来运行。从下拉列表中选择 **v4.1.0-sonarqube** 分支,然后添加标签号,例如 **v0.0.2**。点击**确定**开始运行。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
* 如果您在此页面上未看到任何运行记录,则需要手动刷新浏览器或点击**更多操作**按钮中的**扫描仓库**。
* 标签名称用于在 GitHub 和 Docker Hub 中指代新生成的发布版本和镜像。现有标签名称不能再次用于字段 **TAG_NAME**。否则,流水线将无法成功运行。
|===
--
. 稍等片刻,点击运行记录查看详情。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
运行失败可能由不同因素所引起。本示例中,在上述步骤中编辑分支的环境变量时,仅更改了 v4.1.0-sonarqube 分支的 Jenkinsfile。而 v4.1.0 分支中的这些变量没有修改(使用了错误的 GitHub 和 Docker Hub 账户从而导致失败。其他原因如网络问题、Jenkinsfile 中的编码不正确等也可能导致运行失败。
在运行记录详情页的**运行日志**页签下,查看其日志的详细信息,根据日志排除故障和问题。
|===
--
. 流水线如果运行到 **Push with Tag** 阶段,会在此阶段暂停,需要具有审核权限的用户点击**继续**。
// . 流水线如果运行成功,会在 **deploy to dev** 阶段暂停,需要具有审核权限的用户点击**继续**。
+
--
// 在 Jenkinsfile 中定义了三个阶段 **deploy to dev**、**push with tag** 和 **deploy to production**,每个阶段都需要审核。因此在运行到这些阶段时,流水线会暂停,等待审核。
在开发或生产环境中,可能需要具有更高权限的人员(例如版本管理员)来审核流水线、镜像以及代码分析结果。他们有权决定流水线是否能进入下一阶段。在 Jenkinsfile 中,支持使用 **input** 来指定审核流水线的用户。如果想指定一个用户(例如 **project-admin**)来审核,可以在 Jenkinsfile 中添加一个字段。如果有多个用户,则需要通过逗号进行分隔,如下所示:
[,bash]
----
input(id: 'release-image-with-tag', message: 'release image with tag?', submitter: 'project-admin,project-admin1')
----
--
. 以具有流水线审核权限的用户登录{ks_product_both} Web 控制台,点击**企业空间管理**并进入您的 DevOps 项目,点击流水线名称进入详情页。在**运行记录**页签下,点击要审核的记录,点击**继续**以批准流水线。
//note
[.admon.note,cols="a"]
|===
|说明
|
在{ks_product_both}中,如果不指定审核员,那么能够运行流水线的账户也能够继续或终止该流水线。此外,流水线创建者、拥有该项目管理员角色的用户或者您指定的账户也有权限继续或终止流水线。
|===
== 步骤 5检查流水线状态
. 在运行记录的**流水线**页签下,查看流水线的运行状态。流水线在刚创建时会初始化几分钟。示例流水线有八个阶段,它们已在 link:https://github.com/kubesphere/devops-maven-sample/blob/sonarqube/Jenkinsfile-online[Jenkinsfile-online] 中单独定义。
. 点击**运行日志**页签查看流水线运行日志。点击每个阶段查看其详细日志。点击**查看完整日志**,根据日志排除故障和问题,也可以将日志下载到本地进行进一步分析。
== 步骤 6验证结果
. 流水线成功运行后,点击**代码检查**通过 SonarQube 查看结果。
. 按照 Jenkinsfile 中的定义,通过流水线构建的 Docker 镜像也已成功推送到 Docker Hub。在 Docker Hub 中,您会看到带有标签 **v0.0.2** 的镜像,该标签在流水线运行之前已指定。
. 同时GitHub 中会生成一个新标签和一个新发布版本。
// . 示例应用程序将部署到 **kubesphere-sample-dev** 和 **kubesphere-sample-prod**,并创建相应的部署和服务。转到这两个项目,预期结果如下所示:
// +
// --
// [%header,cols="1a,2a,2a,2a,2a"]
// |===
// |环境 |URL |命名空间 |部署 |服务
// |开发环境
// |http://{$NodeIP}:{$30861}
// |kubesphere-sample-dev
// |ks-sample-dev
// |ks-sample-dev
// |生产环境
// |http://{$NodeIP}:{$30961}
// |kubesphere-sample-prod
// |ks-sample
// |ks-sample
// |===
// //note
// [.admon.note,cols="a"]
// |===
// |说明
// |
// 您可能需要在您的安全组中放行该端口,以便通过 URL 访问应用程序。
// |===
// --
// == 步骤 7访问示例服务
// . 以 **platform-admin** 用户登录{ks_product_both} Web 控制台。
// . 进入 **kubesphere-sample-dev** 项目,在**应用负载**下的**服务**中点击 **ks-sample-dev**。在详情页获取 Endpoint 用于访问该服务。
// . 在右下角的**工具箱**中使用 **kubectl** 执行如下命令:
// +
// [,bash]
// ----
// curl 10.233.120.230:8080
// ----
// . 预期输出:
// +
// --
// [,bash]
// ----
// Really appreciate your star, that's the power of our life.
// ----
// //note
// [.admon.note,cols="a"]
// |===
// |说明
// |
// 使用 **curl** 访问 Endpoint或者访问 {$Virtual IP}:{$Port} 或 {$Node IP}:{$NodePort}。
// |===
// --
// . 也可以在项目 **kubesphere-sample-prod** 中测试服务,您将看到相同的输出结果。
// +
// [,bash]
// ----
// $ curl 10.233.120.236:8080
// Really appreciate your star, that's the power of our life.
// ----

View File

@ -0,0 +1,123 @@
---
title: "使用流水线模板创建流水线"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps, 流水线"
description: "介绍如何使用流水线模板创建流水线。"
weight: 03
---
本文档演示如何在{ks_product_both}上使用流水线模板创建流水线。
DevOps 提供图形编辑面板,支持通过交互式操作来定义 Jenkins 流水线的阶段和步骤。内置多个流水线模板,如 Node.js、Maven 以及 Golang使用户能够快速创建对应模板的流水线。DevOps 还提供 CI 以及 CI & CD 流水线模板,但是这两个模板难以满足定制化需求,建议您采用其它内置模板或直接自定义流水线。
* CI 流水线模板
+
--
CI 流水线模板包含两个阶段。**clone code** 阶段用于检出代码,**build & push** 阶段用于构建镜像并将镜像推送至 Docker Hub。先为代码仓库和 Docker Hub 仓库创建凭证,然后在相应的步骤中设置仓库的 URL 以及凭证。完成编辑后,流水线即可开始运行。
--
* CI & CD 流水线模板
+
--
CI & CD 流水线模板包含六个阶段。有关每个阶段的更多信息请参阅link:../02-create-a-pipeline-using-jenkinsfile/[使用 Jenkinsfile 创建流水线]。先为代码仓库、Docker Hub 仓库创建凭证,然后在相应的步骤中设置仓库的 URL 以及凭证。完成编辑后,流水线即可开始运行。
// CI & CD 流水线模板包含六个阶段。有关每个阶段的更多信息请参阅link:../02-create-a-pipeline-using-jenkinsfile/[使用 Jenkinsfile 创建流水线]。先为代码仓库、Docker Hub 仓库和集群的 kubeconfig 创建凭证,然后在相应的步骤中设置仓库的 URL 以及凭证。完成编辑后,流水线即可开始运行。
--
== 前提条件
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
* 已创建一个企业空间、一个 DevOps 项目和一个用户 (例如 **project-regular**),并已邀请该用户至 DevOps 项目且授予 **operator** 角色。请参阅link:../../05-devops-settings/02-role-and-member-management[角色和成员管理]。
== 操作步骤
下面以 Node.js 为例演示如何使用内置流水线模板。使用 Maven 以及 Golang 流水线模板的操作基本相同。
. 以 **project-regular** 用户登录{ks_product_both} Web 控制台。
. 点击**企业空间管理**并进入您的 DevOps 项目,在**流水线**页面点击**创建**。
. 在弹出的对话框中,输入流水线名称,点击**下一步**,然后点击**创建**。
. 点击已创建的流水线,在**流水线配置**页签下,点击**编辑流水线**。
. 在**创建流水线**对话框,点击 **Node.js**,然后点击**下一步**。
. 在**参数设置**页签,按照实际情况设置以下参数,点击**创建**。
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
|GitURL
|需要克隆的项目仓库的地址。
|GitRevision
|需要检出的分支。
|NodeDockerImage
|Node.js 的 Docker 镜像版本。
|InstallScript
|安装依赖项的 Shell 脚本。
|TestScript
|项目测试的 Shell 脚本。
|BuildScript
|构建项目的 Sell 脚本。
|ArtifactsPath
|制品文件所在的路径。
|===
--
. 在左侧的可视化编辑页面,系统默认已添加一系列步骤,点击**添加步骤**或**添加并行阶段**进行修改。
. 点击一个步骤,在页面右侧,您可以执行以下操作。编辑完成后,点击**确定**。
+
--
* 修改阶段名称。
* 删除阶段。
* 设置代理类型。
* 添加条件。
* 编辑或删除某一任务。
* 添加步骤或嵌套步骤。
//note
[.admon.note,cols="a"]
|===
|说明
|
请参阅link:../01-create-a-pipeline-using-graphical-editing-panel/[使用图形编辑面板创建流水线],了解如何在流水线模板中自定义步骤和阶段。
|===
--
. 在右侧的**代理**区域,选择代理类型,默认值为 **kubernetes**,点击**确定**。
+
--
[%header,cols="1a,4a"]
|===
|代理类型|说明
|any
|调用默认的 base pod 模板创建 Jenkins agent 运行流水线。
|node
|调用指定类型的 pod 模板创建 Jenkins agent 运行流水线,可配置的 label 标签为 base、java、nodejs、maven、go 等。
|kubernetes
|通过 yaml 文件定义的标准 kubernetes pod 模板运行 agent执行流水线任务。
|===
--
. 查看已创建的流水线模板详情,点击**运行**即可运行该流水线。

View File

@ -0,0 +1,225 @@
---
title: "使用 GitLab 创建多分支流水线"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps, 流水线"
description: "介绍如何使用 GitLab 创建多分支流水线。"
weight: 04
---
link:https://gitlab.com/users/sign_in[GitLab] 是一款基于 web 的 Git 仓库管理工具,支持公开和私有仓库,并提供了全面的 DevOps 功能,包括源代码管理、代码审查、问题跟踪、持续集成等。通过 GitLab团队能够在一个平台上高效协作完成从代码编写到部署的整个软件开发过程。
{ks_product_right}支持在 DevOps 项目中使用 GitLab 创建多分支流水线。本文档演示如何使用 GitLab 创建多分支流水线。
== 前提条件
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
* 已创建一个企业空间、一个 DevOps 项目和一个用户 (例如 **project-regular**),并已邀请该用户至 DevOps 项目且授予 **operator** 角色。请参阅link:../../05-devops-settings/02-role-and-member-management[角色和成员管理]。
* 已有一个 link:https://gitlab.com/users/sign_in[GitLab] 账户以及一个 link:https://hub.docker.com/[Docker Hub] 账户。
== 步骤 1创建凭证
. 以 **project-regular** 用户登录{ks_product_both} Web 控制台。
. 点击**企业空间管理**并进入您的 DevOps 项目,在 **DevOps 项目设置**下的**凭证**中创建以下凭证。有关如何创建凭证的更多信息请参阅link:../../05-devops-settings/01-credential-management/[凭证管理]。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
如果您的账户或密码中包含任何特殊字符,例如 **@** 和 **$**,则可能会因为无法识别而在流水线运行时导致错误。在此情况下,您需要先在第三方网站(例如 link:https://www.urlencoder.org/[urlencoder])上对账户或密码进行编码,然后将输出结果复制粘贴作为您的凭证信息。
|===
[%header,cols="1a,2a,2a"]
|===
|凭证 ID|类型|用途
|dockerhub-id
|用户名和密码
|Docker Hub
|gitlab-id
|用户名和密码
|GitLab
// |demo-kubeconfig
// |kubeconfig
// |Kubernetes
|===
--
. 创建完成后,您将在凭证页面看到已创建的凭证。
== 步骤 2在 GitLab 仓库中编辑 Jenkinsfile
. 登录 GitLab 并创建一个公开项目。点击**新建项目 > 导入项目**,选择**从 URL 导入仓库**,输入 link:https://github.com/kubesphere/devops-maven-sample[devops-maven-sample] 的 URL可见性级别选择**公开**,然后点击**新建项目**。
. 在刚刚创建的项目中,从 v4.1.0 分支中创建一个新分支,命名为 **gitlab-demo**。
. 在 **gitlab-demo** 分支中,点击根目录中的 **Jenkinsfile-online** 文件。
. 点击**编辑**,分别将 **GITHUB_CREDENTIAL_ID**、**GITHUB_ACCOUNT** 以及 **@github.com** 更改为 **GITLAB_CREDENTIAL_ID**、**GITLAB_ACCOUNT** 以及 **@gitlab.com**,然后编辑下表所列条目。还要将 **push latest** 中 **branch** 的值更改为 **gitlab-demo**。
// . 点击**编辑**,分别将 **GITHUB_CREDENTIAL_ID**、**GITHUB_ACCOUNT** 以及 **@github.com** 更改为 **GITLAB_CREDENTIAL_ID**、**GITLAB_ACCOUNT** 以及 **@gitlab.com**,然后编辑下表所列条目。还要将 **push latest** 和 **deploy to dev** 中 **branch** 的值更改为 **gitlab-demo**。
+
--
[%header,cols="1a,2a,2a"]
|===
|条目|值|描述信息
|GITLAB_CREDENTIAL_ID
|gitlab-id
|您在{ks_product_both}中为自己的 GitLab 账户设置的**名称**,用于将标签推送至您的 GitLab 仓库。
|DOCKERHUB_NAMESPACE
|your-dockerhub-id
|请替换为您的 Docker Hub 账户名,也可以替换为该账户下的 Organization 名称。
|GITLAB_ACCOUNT
|your-gitlab-id
|请替换为您的 GitLab 账户名,也可以使用该账户的用户组名称。
|===
//note
[.admon.note,cols="a"]
|===
|说明
|
有关 Jenkinsfile 中环境变量的更多信息请参阅link:../02-create-a-pipeline-using-jenkinsfile/[使用 Jenkinsfile 创建流水线]。
|===
--
. 点击 **Commit changes** 更新该文件。
// == 步骤 3创建项目
// 创建两个项目,例如 **kubesphere-sample-dev** 和 **kubesphere-sample-prod**,分别代表开发环境和生产环境。待流水线成功运行,将在这两个项目中自动创建应用程序的相关部署 (Deployment) 和服务 (Service)。
// 有关更多信息请参阅link:../02-create-a-pipeline-using-jenkinsfile/#_步骤_2在_github_仓库中修改_jenkinsfile[使用 Jenkinsfile 创建流水线]。
== 步骤 3创建流水线
. 以 **project-regular** 用户登录{ks_product_both} Web 控制台。
. 点击**企业空间管理**并进入您的 DevOps 项目,在**流水线**页面点击**创建**。
. 在弹出的对话框中,将其命名为 **gitlab-multi-branch**。
. 在**流水线类别**下,选择**多分支流水线**。
. 在**代码仓库**下,选择一个代码仓库,点击**下一步**继续。
+
--
若没有可用的代码仓库,点击下方的**创建代码仓库**。有关更多信息请参阅link:../../04-import-code-repositories/[导入代码仓库]。
--
.. 在**导入代码仓库**对话框,输入代码仓库名称(自定义),点击选择代码仓库。
.. 在 **GitLab** 页签下的 **GitLab 服务器地址**中选择默认选项 link:https://gitlab.com[],在**项目组/所有者**中输入该 GitLab 项目所属组的名称,然后从**代码仓库**的下拉菜单中选择 **devops-maven-sample** 仓库。点击右下角的image:/images/ks-qkcp/zh/icons/check-dark.svg[check,18,18],然后点击**下一步**。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
如需使用 GitLab 私有仓库,请参考以下步骤:
* 在 GitLab 上前往**用户设置 > 访问令牌**,创建拥有 API 和 read_repository 权限的个人访问令牌。
* link:../../../04-how-to-integrate/01-sonarqube/[登录 Jenkins 面板],前往**系统管理 > Manage Credentials**,使用您的 GitLab 令牌创建 Jenkins 凭证,用于访问 GitLab。然后前往**系统管理 > 系统配置**,在 **GitLab 服务**中添加该凭证。
* 在 DevOps 项目中,选择 **DevOps 项目设置 > 凭证**,使用您的 GitLab 令牌创建一个凭证。创建流水线时,在 **GitLab** 页签的**凭证**中指定该凭证,以便流水线能够从您的 GitLab 私有仓库中拉取代码。
|===
--
. 在**高级设置**页签中,将**脚本路径**更改为 **Jenkinsfile-online** 然后点击**创建**。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
该字段指定代码仓库中的 Jenkinsfile 路径,它表示该仓库的根目录。如果文件位置变更,则脚本路径也需要更改。
|===
--
== 步骤 4运行流水线
. 流水线创建后,会展示在列表中。点击流水线名称查看其详情页。
. 点击右侧的**运行**。在弹出的对话框中,从下拉菜单中选择 **gitlab-demo** 并添加一个标签号,比如 **v0.0.2**。点击**确定**来触发一个新运行。
. 稍等片刻,点击运行记录查看详情。
. 流水线如果运行到 **Push with Tag** 阶段,会在此阶段暂停,需要具有审核权限的用户点击**继续**。
// . 流水线如果运行成功,会在 **Deploy to Dev** 阶段暂停,需要具有审核权限的用户点击**继续**。
// +
// --
// //note
// [.admon.note,cols="a"]
// |===
// |说明
// |
// 在 Jenkinsfile 中定义了三个阶段 **deploy to dev**、**push with tag** 和 **deploy to production**,每个阶段都需要审核。因此在运行到这些阶段时,流水线会暂停,等待审核。
// |===
// --
== 步骤 5检查流水线状态
. 在运行记录的**流水线**页签下,查看流水线的运行状态。
. 点击**运行日志**页签查看流水线运行日志。点击每个阶段查看其详细日志。点击**查看完整日志**,根据日志排除故障和问题,也可以将日志下载到本地进行进一步分析。
== 步骤 6验证结果
. 按照 Jenkinsfile 中的定义,通过流水线构建的 Docker 镜像也已成功推送到 Docker Hub。在 Docker Hub 中,您会看到带有标签 **v0.0.2** 的镜像,该标签在流水线运行之前已指定。
. 同时GitLab 中也已生成一个新标签。
// . 示例应用程序将部署到 **kubesphere-sample-dev** 和 **kubesphere-sample-prod**,并创建相应的部署和服务。转到这两个项目,预期结果如下所示:
// +
// --
// [%header,cols="1,2,2,1,1"]
// |===
// |环境|URL|命名空间|部署|服务
// |开发环境
// |http://{$NodeIP}:{$30861}
// |kubesphere-sample-dev
// |ks-sample-dev
// |ks-sample-dev
// |生产环境
// |http://{$NodeIP}:{$30961}
// |kubesphere-sample-prod
// |ks-sample
// |ks-sample
// |===
// //note
// [.admon.note,cols="a"]
// |===
// |说明
// |
// 您可能需要在安全组中打开端口,以便使用 URL 访问该应用。有关更多信息请参阅link:../02-create-a-pipeline-using-jenkinsfile/#_步骤_8访问示例服务[访问示例服务]。
// |===
// --

View File

@ -0,0 +1,202 @@
---
title: "设置流水线"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps, 流水线"
description: "介绍如何自定义流水线配置。"
weight: 05
---
创建流水线时,可以通过各种设置来自定义流水线配置。
流水线创建后,进入流水线详情页,点击**编辑信息**和更多操作中的**编辑设置**,也可以编辑流水线的配置。
本文档详细介绍如何设置流水线。
== 前提条件
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
* 已创建一个企业空间、一个 DevOps 项目和一个用户 (例如 **project-regular**),并已邀请该用户至 DevOps 项目且授予 **operator** 角色。请参阅link:../../05-devops-settings/02-role-and-member-management[角色和成员管理]。
== 基本信息
在**基本信息**页签,您可以自定义以下信息:
* **名称**:流水线的名称,同一个 DevOps 项目内的流水线不能重名。
* **DevOps 项目**:流水线所属的 DevOps 项目。
* **描述**:描述流水线的附加信息,描述信息不超过 256 个字符。
* **流水线类别**:普通流水线或多分支流水线。若选择多分支流水线,则需要选择一个代码仓库。
* **代码仓库(可选)**:选择一个代码仓库作为流水线的代码源,可选择 GitHub、GitLab、Bitbucket、以及 Git 作为代码源。
+
====
* GitHub
+
--
如果选择 **GitHub**,则必须指定用于访问 GitHub 的凭证。如果您已预先使用您的 GitHub 令牌创建了凭证,则从下拉菜单中选择已有凭证,或者点击**创建凭证**来创建新凭证。选择凭证后,点击**确定**即可在右侧选择您的仓库。完成所有操作后点击image:/images/ks-qkcp/zh/icons/check-dark.svg[check,18,18]。
--
* GitLab
+
--
如果选择 **GitLab**,则必须指定 GitLab 服务器地址、项目组/所有者和代码仓库。如果访问代码仓库需要凭证则需要指定一个凭证。完成所有操作后点击image:/images/ks-qkcp/zh/icons/check-dark.svg[check,18,18]。
--
* Bitbucket
+
--
如果选择 **Bitbucket**,则需要输入您的 Bitbucket 服务器地址。预先使用您的 Bitbucket 用户名和密码创建一个凭证,或者点击**创建凭证**来创建一个新凭证。输入信息后点击**确定**即可在右侧选择您的仓库。完成所有操作后点击image:/images/ks-qkcp/zh/icons/check-dark.svg[check,18,18]。
--
* Git
+
--
如果选择 **Git**,则需要指定仓库 URL。如果访问代码仓库需要凭证则需要指定一个凭证或者点击**创建凭证**来添加新凭证。完成所有操作后点击image:/images/ks-qkcp/zh/icons/check-dark.svg[check,18,18]。
--
====
== 高级设置
=== 指定代码仓库
如果指定了一个代码仓库,则可以在**高级设置**页签上自定义以下配置:
* 分支设置
+
--
**删除旧分支**:自动删除旧分支。分支记录将一起被删除。分支记录包括控制台输出、已归档制品以及特定分支相关的其他元数据。更少的分支意味着您可以节省 Jenkins 正在使用的磁盘空间。DevOps 提供两个选项来确定何时丢弃旧分支:
* **分支保留天数(天)**:超过保留期限的分支将被删除。
* **分支最大数量**:分支数量超过最大数量时,删除最旧的分支。
//note
[.admon.note,cols="a"]
|===
|说明
|
**分支保留天数(天)**和**分支最大数量**可以同时应用于分支。只要某个分支满足其中一个字段所设置的条件,则会删除该分支。例如,如果您将保留天数和最大分支数分别指定为 2 和 3待某个分支的保留天数超过 2 或者分支保留数量超过 3则会删除该分支。DevOps 默认用 7 和 5 预填充这两个字段。
|===
--
* 策略设置
+
--
在**策略设置**中DevOps 默认提供四种策略。Jenkins 流水线运行时,开发者提交的 PR (Pull Request) 也将被视为一个单独的分支。
**发现分支**
* **排除已提交 PR 的分支**:已提交 PR 的分支将被排除。
* **只包括已提交 PR 的分支**:只拉取已提交 PR 的分支。
* **包括所有分支**:拉取源仓库中的所有分支。
**发现标签**
* **启用标签发现**:拥有指定标签的分支将被扫描。
* **禁用标签发现**:拥有指定标签的分支不会被扫描。
**从原仓库发现 PR**
* **拉取 PR 合并后的代码**PR 合并到目标分支后,将基于源代码创建并运行流水线。
* **拉取 PR 提交时的代码**:根据 PR 本身的源代码创建并运行流水线。
* **分别创建两个流水线**:创建两个流水线,一个流水线使用 PR 与目标分支合并后的源代码版本,另一个使用 PR 本身的源代码版本。
**从 Fork 仓库发现 PR**
拉取策略:
* **拉取 PR 合并后的代码**PR 合并到目标分支后,将基于源代码创建并运行流水线。
* **拉取 PR 提交时的代码**:根据 PR 本身的源代码创建并运行流水线。
* **分别创建两个流水线**:创建两个流水线,一个流水线使用 PR 与目标分支合并后的源代码版本,另一个使用 PR 本身的源代码版本。
受信用户:
* **贡献者**:对 PR 做出贡献的用户。
* **所有人**:每个可以访问 PR 的用户。
* **具有管理员或有编辑权限的用户**:仅限于对 PR 具有管理员或编辑权限的用户。
* **无**:如果选择此选项,那么无论在**拉取策略**中选择了哪个选项,都不会发现 PR。
--
* 正则过滤
+
--
勾选选框以指定正则表达式来过滤分支、PR 和标签。
--
* 脚本路径
+
--
**脚本路径**参数指定代码仓库中的 Jenkinsfile 路径,它指代仓库的根目录。如果文件位置发生更改,则脚本路径也需要更改。
--
* 扫描触发器
+
--
勾选**定时扫描**,并从下拉列表中设置扫描时间间隔。
--
* 构建触发器
+
--
勾选**通过流水线事件触发**,从**创建流水线时触发**和**删除流水线时触发**的下拉列表中选择一个流水线,以便在创建新的流水线或删除流水线时自动触发指定流水线中的任务。
--
* 克隆设置
+
--
* **启用浅克隆**:如果开启浅克隆,则克隆的代码不会包含标签。
* **克隆深度**:克隆时需要提取的 commit 数量。
* **克隆超时时间min**:完成克隆过程所需要的时长(以分钟为单位)。
--
* Webhook
+
--
**Webhook** 能有效地让流水线发现远程代码仓库中的更改并自动触发新一轮运行。Webhook 应成为触发 Jenkins 自动扫描 GitHub 和 Git例如 GitLab的主要方法。有关更多信息请参阅link:../06-pipeline-webhook/[使用 Webhook 触发流水线]。
--
=== 不指定代码仓库
如果不指定代码仓库,则可以在**高级设置**页签上自定义以下配置:
* 构建设置
+
--
**删除过期构建记录**:指定何时删除分支下的构建记录。构建记录包括控制台输出、已归档制品以及与特定构建相关的其他元数据。保留较少的构建可以节省 Jenkins 所使用的磁盘空间。DevOps 提供两个选项来确定何时删除旧的构建:
* **构建记录保留期限(天)**:超过保留期限的构建记录将被删除。
* **构建记录最大数量**:当构建记录数量超过允许的最大数量,最早的构建记录将被删除。
//note
[.admon.note,cols="a"]
|===
|说明
|
**构建记录保留期限(天)**和**构建记录最大数量**可以同时应用于构建记录。只要某个构建记录满足其中一个字段所设置的条件,则会删除该构建记录。例如,如果您将保留期限和最大数量分别指定为 2 和 3待某个构建记录的保留天数超过 2 或者最大数量超过 3则会删除该构建记录。DevOps 默认用 7 和 10 预填充这两个字段。
|===
* **不允许并发构建**:如果勾选此选项,则不能并发运行多个构建。
--
* 构建参数
+
--
参数化的构建过程允许在开始运行流水线时传入一个或多个参数。DevOps 默认提供五种参数类型,包括**字符串**、**多行字符串**、**布尔值**、**选项**以及**密码**。当参数化项目时,构建会被替换为参数化构建,其中将提示用户为每个定义的参数输入值。
--
* 构建触发器
+
--
**定时构建**:允许定期执行构建。输入 CRON 表达式以设置定时计划。
--

View File

@ -0,0 +1,77 @@
---
title: "使用 Webhook 触发流水线"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps, 流水线"
description: "介绍如何在 GitHub 仓库中用 webhook 触发流水线。"
weight: 06
---
若要通过远程代码仓库创建基于 Jenkinsfile 的流水线,可以在远程仓库中配置 webhook以便在远程仓库变更时自动触发流水线。
本文档演示如何在 GitHub 仓库中用 webhook 触发流水线。
== 前提条件
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
* 已创建一个企业空间、一个 DevOps 项目和一个用户 (例如 **project-regular**),并已邀请该用户至 DevOps 项目且授予 **operator** 角色。请参阅link:../../05-devops-settings/02-role-and-member-management[角色和成员管理]。
* 已通过远程代码仓库创建一个基于 Jenkinsfile 的流水线。有关更多信息请参阅link:../02-create-a-pipeline-using-jenkinsfile/[使用 Jenkinsfile 创建流水线]。
== 配置 Webhook
=== 获取 webhook URL
. 以 **project-regular** 用户登录{ks_product_both} Web 控制台。
. 点击**企业空间管理**并进入您的 DevOps 项目。
. 在**流水线**页面,点击一个流水线(例如 **jenkins-in-scm**)以查看其详情页面。
. 点击**更多操作**,在下拉菜单中选择**编辑设置**。
. 在弹出的会话框中,滚动至 **Webhook** 以获得 Webhook push URL。
=== 在 GitHub 仓库中设置 webhook
. 登录您的 GitHub并进入 **devops-maven-sample** 仓库。
. 点击 **Settings** > **Webhooks**,然后点击 **Add webhook**。
. 在 **Payload URL** 中输入流水线中的 Webhook push URL然后点击 **Add webhook**。
本教程选择默认的 **Just the push event**,请根据实际需要进行配置。有关更多信息,请参阅 link:https://docs.github.com/en/developers/webhooks-and-events/webhooks/creating-webhooks[GitHub 文档]。
. 配置好的 webhook 会展示在 **Webhooks** 页面。
== 使用 Webhook 触发流水线
=== 提交拉取请求到仓库
. 在 devops-maven-sample 仓库的 **Code** 页面,点击 **master** 然后选择 **v4.1.0-sonarqube** 分支。
. 转到 **/deploy/dev-ol** 然后点击文件 **devops-sample.yaml**。
. 点击image:/images/ks-qkcp/zh/icons/pen-light.svg[pen-light,18,18]编辑文件。 例如,将 **spec.replicas** 的值改变为 **3**。
. 点击 **Commit changes**。
=== 检查 webhook 交付
. 在 devops-maven-sample 仓库的 **Settings** > **Webhooks** 页面,点击创建的 webhook。
. 点击 **Recent Deliveries**,然后点击一个具体交付记录查看详情。
== 检查流水线状态
. 以 **project-regular** 用户登录{ks_product_both} Web 控制台。
. 点击**企业空间管理**并进入您的 DevOps 项目。
. 在**流水线**页面,点击一个流水线(例如 **jenkins-in-scm**)以查看其详情页面。
. 在**运行记录**页签,检查提交到远程仓库 **v4.1.0-sonarqube** 分支的拉取请求是否触发了新的运行。
// . 转到 **kubesphere-sample-dev** 项目的 **工作负载 > 容器组** 页面,检查 3 个 Pods 的状态。如果 3 个 Pods 为运行状态,表示流水线运行正常。

View File

@ -0,0 +1,55 @@
---
title: "设置 Jenkins 系统"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps, 流水线"
description: "介绍如何在 Jenkins 仪表板上设置 Jenkins 并重新加载配置。"
weight: 07
---
DevOps 系统提供基于 Jenkins 的容器化 CI/CD 功能。Jenkins 作为 CI/CD 工作流的事实标准,具备强大而灵活的特性。然而,许多插件要求用户在使用 Jenkins 之前必须进行系统级配置。
为了提供可调度的 Jenkins 环境,{ks_product_right}采用了 **Configuration as Code** 的方式进行 Jenkins 系统设置。用户需要登录 Jenkins 仪表板,修改配置后再重新加载。
本文档演示如何在 Jenkins 仪表板上设置 Jenkins 并重新加载配置。
== 前提条件
{ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
== Jenkins Configuration as Code
{ks_product_right}默认安装 Jenkins Configuration as Code 插件,支持通过 YAML 文件定义 Jenkins 的期望状态,便于再现 Jenkins 的配置包括插件配置。请参阅link:https://github.com/jenkinsci/configuration-as-code-plugin/tree/master/demos[该目录]查看具体的 Jenkins 配置和示例 YAML 文件。
此外,还可以在 link:https://github.com/kubesphere/ks-jenkins[ks-jenkins] 仓库中找到 **formula.yaml** 文件,查看插件版本并按需自定义这些版本。
== 修改 ConfigMap
建议通过 Configuration as Code (CasC) 在{ks_product_both}中配置 Jenkins。将内置 Jenkins CasC 文件存储为 ConfigMap。
. 以 **platform-admin** 用户登录{ks_product_left} Web 控制台。
. 点击**集群管理**,进入一个集群。
. 在左侧导航栏中选择**配置**下的**配置字典**。在**配置字典**页面,从下拉列表中选择 **kubesphere-devops-system**,然后点击 **jenkins-casc-config**。
. 在详情页面,点击**更多操作**,在下拉列表中选择**编辑 YAML**。
. **jenkins-casc-config** 的配置模板是一个 YAML 文件,位于 **data:jenkins_user.yaml:** 部分。在 ConfigMap 的代理 (Kubernetes Jenkins Agent) 中修改容器镜像、标签、资源请求 (Request) 和限制 (Limit) 等内容,或者在 podTemplate 中添加容器。完成操作后,点击**确定**。
. 等待 1 ~ 2 分钟,会自动重新加载新的配置。
//note
[.admon.note,cols="a"]
|===
|说明
|
* 有关如何通过 CasC 设置 Jenkins 的更多信息,请参阅 link:https://github.com/jenkinsci/configuration-as-code-plugin[Jenkins 文档]。
* 在当前版本中,并非所有插件都支持 CasC 设置。CasC 仅会覆盖通过 CasC 设置的插件配置。
|===

View File

@ -0,0 +1,150 @@
---
title: "在流水线中使用 Jenkins 共享库"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps, 流水线"
description: "介绍如何在流水线中使用 Jenkins 共享库。"
weight: 08
---
对于包含相同阶段或步骤的 Jenkins 流水线,可以在 Jenkinsfile 中使用 Jenkins 共享库避免流水线代码重复。
本文档演示如何在 DevOps 流水线中使用 Jenkins 共享库。
== 前提条件
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
* 已创建一个企业空间、一个 DevOps 项目和一个用户 (例如 **project-regular**),并已邀请该用户至 DevOps 项目且授予 **operator** 角色。请参阅link:../../05-devops-settings/02-role-and-member-management[角色和成员管理]。
* 已有一个可用 Jenkins 共享库。本教程以 link:https://github.com/devops-ws/jenkins-shared-library[GitHub 仓库]中的 Jenkins 共享库为例。
== 步骤 1在 Jenkins 仪表盘配置共享库
. link:../../../04-how-to-integrate/01-sonarqube/[登录 Jenkins 仪表板]并点击左侧导航栏中的**系统管理**。
. 向下滚动并点击**系统配置**。
. 向下滚动到 **Global Pipeline Libraries**,然后点击**新增**。
. 配置字段如下所示。
* **Name** 为共享库设置名称(例如,`demo-shared-library`),以便在 Jenkinsfile 中引用此名称来导入共享库。
* **Default version** 设置共享库所在仓库的一个分支名称,将其作为导入共享库的默认分支。本教程将使用 master。
* 在 **Retrieval method** 下,选择 **Modern SCM**。
* 在 **Source Code Management** 下,选择 **Git**,并为**项目仓库**输入示例仓库的 URL 。如果您使用自己的仓库且访问此仓库需要凭证,还需要配置**凭证**。
. 编辑完成后,点击**应用**。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
您还可以配置link:https://www.jenkins.io/zh/doc/book/pipeline/shared-libraries/#folder-level-shared-libraries[文件夹级别的共享库]。
|===
--
== 步骤 2在流水线中使用共享库
=== 创建流水线
. 以 **project-regular** 用户登录{ks_product_both} Web 控制台。
. 点击**企业空间管理**并进入您的 DevOps 项目,在**流水线**页面点击**创建**。
. 在弹出的对话框中,将其命名为 **demo-shared-library**,点击**下一步**。
. 在**高级设置**中,直接点击**创建**,使用默认设置创建流水线。
=== 编辑流水线
. 在流水线列表页面,点击流水线名称进入其详情页面,然后点击**编辑 Jenkinsfile**。
. 在弹出的对话框中,添加以下示例 Jenkinsfile。完成编辑后点击**确定**。
+
--
[,json]
----
library identifier: 'devops-ws-demo@master', retriever: modernSCM([
$class: 'GitSCMSource',
remote: 'https://github.com/devops-ws/jenkins-shared-library',
traits: [[$class: 'jenkins.plugins.git.traits.BranchDiscoveryTrait']]
])
pipeline {
agent any
stages {
stage('Demo') {
steps {
script {
mvn.fake()
}
}
}
}
}
----
//note
[.admon.note,cols="a"]
|===
|说明
|
根据需要,为 **agent** 指定 **label**。
|===
--
+
或者,使用以 **@Library('<配置好的共享库名称>') _** 开头的 Jenkinsfile。如果使用这种类型的 Jenkinsfile需要提前在 Jenkins 仪表板上配置共享库。在本教程中,您可以使用以下示例 Jenkinsfile。
+
--
[,json]
----
@Library('demo-shared-library') _
pipeline {
agent any
stages {
stage('Demo') {
steps {
script {
mvn.fake()
}
}
}
}
}
----
//note
[.admon.note,cols="a"]
|===
|说明
|
使用 **@Library('demo-shared-library@<分支名称>') _** 来指定特定的分支。
|===
--
== 步骤 3运行流水线
. 在流水线详情页面,点击**运行**运行流水线。
. 点击**运行记录**页签下的记录,查看流水线运行详情。点击**运行日志**查看日志详细信息。

View File

@ -0,0 +1,62 @@
---
title: "为流水线设置电子邮件服务器"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps, 流水线"
description: "介绍如何为流水线设置电子邮件服务器。"
weight: 09
---
内置 Jenkins 无法与{ks_product_both}的通知系统共享相同的电子邮件配置。因此,您需要单独为 DevOps 流水线配置电子邮件服务器。
== 前提条件
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
* 您需要在{ks_product_both}平台具有**集群管理**权限。
== 操作步骤
. 以具有**集群管理**权限的账户登录{ks_product_left} Web 控制台。
. 点击**集群管理**,进入一个集群。
. 在左侧导航栏中选择**应用负载**下的**工作负载**,从下拉列表中选择 **kubesphere-devops-system** 项目。点击 **devops-jenkins** 右侧的image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],并选择**编辑 YAML**。
. 在 YAML 文件中编辑如下所示的字段。完成修改后,点击**确定**。
+
--
//warning
[.admon.warning,cols="a"]
|===
|警告
|
修改电子邮件服务器配置后,**devops-jenkins** 部署 (Deployment) 会重新启动。因此DevOps 系统将在几分钟内不可用,请在适当的时候修改这些配置。
|===
[%header,cols="1a,3a"]
|===
|环境变量名称 |描述信息
|EMAIL_SMTP_HOST
|SMTP 服务器地址
|EMAIL_SMTP_PORT
|SMTP 服务器端口25
|EMAIL_FROM_ADDR
|电子邮件发件人地址
|EMAIL_FROM_NAME
|电子邮件发件人姓名
|EMAIL_FROM_PASS
|电子邮件发件人密码
|EMAIL_USE_SSL
|是否启用 SSL 配置
|===
--

View File

@ -0,0 +1,219 @@
---
title: "选择 Jenkins Agent"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps, 流水线"
description: "介绍如何选择 Jenkins Agent。"
weight: 10
---
**agent** 部分指定整个流水线或特定阶段 (Stage) 将在 Jenkins 环境中执行的位置,具体取决于该 **agent** 部分的放置位置。该部分必须在 **pipeline** 块的顶层进行定义,但是阶段级别的使用是可选的。有关更多信息,请参阅 link:https://www.jenkins.io/zh/doc/book/pipeline/syntax/#代理[Jenkins 官方文档]。
== 内置 podTemplate
podTemplate 是一种 Pod 模板,用于创建 Agent。您可以定义在 Kubernetes 插件中使用的 podTemplate。
在流水线运行期间,每个 Jenkins Agent Pod 必须具有一个名为 **jnlp** 的容器,以便实现 Jenkins Controller 与 Jenkins Agent 之间的通信。此外,您可以在 podTemplate 中添加容器,以满足个性化需求。可选择使用自定义的 Pod YAML 来灵活控制运行时环境Runtime并通过 **container** 命令来切换容器。以下是相关示例。
[,json]
----
pipeline {
agent {
kubernetes {
//cloud 'kubernetes'
label 'mypod'
yaml """
apiVersion: v1
kind: Pod
spec:
containers:
- name: maven
image: maven:3.3.9-jdk-8-alpine
command: ['cat']
tty: true
"""
}
}
stages {
stage('Run maven') {
steps {
container('maven') {
sh 'mvn -version'
}
}
}
}
}
----
在目前版本中,{ks_product_right}内置了 4 种类型的 podTemplate**base**、**nodejs**、**maven** 和 **go**,并且在 Pod 中提供隔离的 Docker 环境。
您可以通过指定 Agent 的标签来使用内置 podTemplate。例如要使用 nodejs 的 podTemplate在创建流水线时指定标签为 **nodejs** 即可,具体参阅以下示例。
[,json]
----
pipeline {
agent {
node {
label 'nodejs'
}
}
stages {
stage('nodejs hello') {
steps {
container('nodejs') {
sh 'yarn -v'
sh 'node -v'
sh 'docker version'
sh 'docker images'
}
}
}
}
}
----
* podTemplate base
+
--
[%header,cols="1a,4a"]
|===
|名称 |类型/版本
|Jenkins Agent 标签
|base
|容器名称
|base
|操作系统
|centos-7
|Docker
|18.06.0
|Helm
|2.11.0
|Kubectl
|稳定版
|内置工具
|unzip、which、make、wget、zip、bzip2、git
|===
--
* podTemplate nodejs
+
--
[%header,cols="1a,4a"]
|===
|名称 |类型/版本
|Jenkins Agent 标签
|nodejs
|容器名称
|nodejs
|操作系统
|centos-7
|Node
|9.11.2
|Yarn
|1.3.2
|Docker
|18.06.0
|Helm
|2.11.0
|Kubectl
|稳定版
|内置工具
|unzip、which、make、wget、zip、bzip2、git
|===
--
* podTemplate maven
+
--
[%header,cols="1a,4a"]
|===
|名称|类型/版本
|Jenkins Agent 标签
|maven
|容器名称
|maven
|操作系统
|centos-7
|Jdk
|openjdk-1.8.0
|Maven
|3.5.3
|Docker
|18.06.0
|Helm
|2.11.0
|Kubectl
|稳定版
|内置工具
|unzip、which、make、wget、zip、bzip2、git
|===
--
* podTemplate go
+
--
[%header,cols="1a,4a"]
|===
|名称|类型/版本
|Jenkins Agent 标签
|go
|容器名称
|go
|操作系统
|centos-7
|Go
|1.11
|GOPATH
|/home/jenkins/go
|GOROOT
|/usr/local/go
|Docker
|18.06.0
|Helm
|2.11.0
|Kubectl
|稳定版
|内置工具
|unzip、which、make、wget、zip、bzip2、git
|===
--

View File

@ -0,0 +1,85 @@
---
title: "自定义 Jenkins Agent"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps, 流水线"
description: "介绍如何自定义 Jenkins Agent。"
weight: 11
---
若要使用运行特定环境(例如 JDK 11的 Jenkins Agent可以在{ks_product_both}上自定义 Jenkins Agent。
本文档描述如何在{ks_product_both}上自定义 Jenkins Agent。
== 前提条件
{ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
== 自定义 Jenkins Agent
. 以 **admin** 用户登录{ks_product_left} Web 控制台。
. 点击**集群管理**,进入一个集群。
. 在左侧导航栏选择**配置**下的**配置字典**。
. 在**配置字典**页面的搜索框中输入 **jenkins-casc-config** 并按**回车键**。
. 点击 **jenkins-casc-config** 进入其详情页面,点击**更多操作**,选择**编辑 YAML**。
. 在弹出的对话框中,搜寻至 **data:jenkins_user.yaml:jenkins:clouds:kubernetes:templates** 下方并输入以下代码,点击**确定**。
+
--
[,yaml]
----
- name: "maven-jdk11" # 自定义 Jenkins Agent 的名称。
label: "maven jdk11" # 自定义 Jenkins Agent 的标签。若要指定多个标签,请用空格来分隔标签。
inheritFrom: "maven" # 自定义 Jenkins Agent 所继承的现有容器组模板的名称。
containers:
- name: "maven" # 自定义 Jenkins Agent 所继承的现有容器组模板中指定的容器名称。
image: "kubespheredev/builder-maven:v3.2.0jdk11" # 此镜像只用于测试。请使用您自己的镜像。
----
//note
[.admon.note,cols="a"]
|===
|说明
|
请确保遵守 YAML 文件中的缩进。
|===
--
. 等待 1 ~ 2 分钟,会自动重新加载新的配置。
. 要使用自定义的 Jenkins Agent请参考下方的示例 Jenkinsfile在创建流水线时指定自定义 Jenkins Agent 对应的标签和容器名。
+
--
[,json]
----
pipeline {
agent {
node {
label 'maven && jdk11'
}
}
stages {
stage('Print Maven and JDK version') {
steps {
container('maven') {
sh '''
mvn -v
java -version
'''
}
}
}
}
}
----
--

View File

@ -0,0 +1,9 @@
---
title: "流水线"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps, 流水线"
description: "本节介绍如何使用流水线功能。"
weight: 02
layout: "second"
---
本节介绍如何使用流水线功能。

View File

@ -0,0 +1,255 @@
---
title: "使用 GitOps 实现应用持续部署"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps"
description: "介绍如何创建持续部署以实现应用的部署。"
weight: 03
---
{ks_product_right}引入了一种为云原生应用实现持续部署的理念 GitOps。GitOps 的核心思想是拥有一个 Git 仓库,并将应用系统的申明式基础架构和应用程序存放在 Git 仓库中进行版本控制。GitOps 结合 Kubernetes 能够利用自动交付流水线将更改应用到指定的任意多个集群中,从而解决跨云部署的一致性问题。
本文档演示如何创建持续部署以实现应用的部署。
== 前提条件
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
* 已有一个企业空间、一个 DevOps 项目和一个用户 (例如 **project-regular**),并已邀请该用户至 DevOps 项目且授予 **operator** 角色。请参阅link:../05-devops-settings/02-role-and-member-management[角色和成员管理]。
== 导入代码仓库
. 以 **project-regular** 用户登录{ks_product_both} Web 控制台。
. 点击**企业空间管理**并进入您的 DevOps 项目。
. 在左侧导航栏,点击**代码仓库**。
. 在右侧的代码仓库页面,点击**添加**。
. 在**导入代码仓库**对话框,输入代码仓库名称,如 **open-podcasts**,点击选择代码仓库。您也可以为代码仓库设置别名和添加描述信息。
. 在**选择代码仓库**对话框,点击 **Git**,在**代码仓库地址**区域,输入代码仓库地址,如 link:https://github.com/kubesphere-sigs/open-podcasts[],点击**确定**。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
此处导入的是公共仓库因此不需要创建凭证。如果您添加的是私有仓库则需要创建凭证。有关如何添加凭证的更多信息请参阅link:../05-devops-settings/01-credential-management/[凭证管理]。
|===
--
== 创建持续部署
. 在左侧导航栏,点击**持续部署**。
. 在右侧的**持续部署**页面,点击**创建**。
. 在**基本信息**页签,输入持续部署名称,如 **open-podcasts**。在**部署位置**区域,选择持续部署的部署集群和项目。点击**下一步**。
. 在**代码仓库设置**页签,选择上一步创建的代码仓库,设置代码仓库的分支或标签以及 Kustomization 清单文件路径。点击**下一步**。
+
--
[%header, cols="1a,3a"]
|===
|参数 |描述
|修订版本
|Git 仓库中的 commit ID、分支或标签。例如**master**, **v1.2.0**, **0a1b2c3** 或 **HEAD**。
|清单文件路径
|设置清单文件路径。例如,**config/default**。
|===
--
. 在**同步策略**区域,根据需要选择**自动同步**或**手动同步**。
+
--
* **自动同步**:在检测到 Git 仓库中的清单与部署资源的实时状态之间存在差异时,根据设置的同步选项,自动触发应用程序同步。具体参数如下表所示。
+
====
[%header, cols="1a,3a"]
|===
|参数 |描述
|清理资源
|如果勾选,自动同步时会删除 Git 仓库中不存在的资源。不勾选时,自动同步触发时不会删除集群中的资源。
|自恢复
|如果勾选,当检测到 Git 仓库中定义的状态与部署资源中有偏差时,将强制应用 Git 仓库中的定义。不勾选时,对部署资源做更改时不会触发自动同步。
|===
====
* **手动同步**:根据设置的同步选项,手动触发应用程序同步。
// 具体参数如下表所示。
// +
// ====
// [%header, cols="1a,3a"]
// |===
// |参数 |描述
// |清理资源
// |如果勾选,同步会删除 Git 仓库中不存在的资源。不勾选时,同步不会删除集群中的资源,而是会显示 **out-of-sync**。
// |模拟运行
// |模拟同步,不影响最终部署资源。
// |仅执行 Apply
// |如果勾选,同步应用资源时会跳过 **pre/post** 钩子,仅执行 **kubectl apply**。
// |强制 Apply
// |如果勾选,同步时会执行 **kubectl apply --force**。
// |===
// ====
--
. 在**同步设置**区域,根据需要设置同步相关参数。
+
--
[%header, cols="1a,3a"]
|===
|参数 |描述
|跳过规范校验
|跳过 **kubectl** 验证。执行 **kubectl apply** 时,增加 **--validate=false** 标识。
|自动创建项目
|在项目不存在的情况下自动为应用程序资源创建项目。
|最后清理
|同步操作时,其他资源都完成部署且处于健康状态后,再清理资源。
|选择性同步
|仅同步 **out-of-sync** 状态的资源。
|===
--
. 在**依赖清理策略**区域,根据需要选择依赖清理策略。
+
--
[%header, cols="1a,3a"]
|===
|参数 |描述
|foreground
|先删除依赖资源,再删除主资源。
|background
|先删除主资源,再删除依赖资源。
|orphan
|删除主资源,留下依赖资源成为孤儿。
|===
--
. 在**替换资源**区域,选择是否需要替换已存在的资源。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
如果勾选,将执行 **kubectl replace/create** 命令同步资源。不勾选时,使用 **kubectl apply** 命令同步资源。
|===
--
. 点击**创建**。资源创建完成后将显示在持续部署列表中。
== 查看已创建的持续部署信息
. 在**持续部署**页面上查看到已创建的持续部署信息。具体参数如下表所示。
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
|名称
|持续部署的名称。
|健康状态
|持续部署的健康状态。主要包含以下几种状态:
* **健康**:资源健康。
* **已降级**:资源已经被降级。
* **进行中**:资源正在同步。默认返回该状态。
* **暂停**:资源已经被暂停并等待恢复。
* **未知**:资源健康状态未知。
* **丢失**:资源已缺失。
|同步状态
|持续部署的同步状态。主要包含以下几种状态:
* **已同步**:资源同步已完成。
* **未同步**:资源的实际运行状态和期望状态不一致。
* **未知**:资源同步状态未知。
|部署位置
|资源部署的集群和项目。
|更新时间
|资源更新的时间。
|===
--
. 点击持续部署右侧的image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],您可以执行以下操作:
+
--
* **编辑信息**:编辑别名和描述信息。
* **编辑 YAML**:编辑持续部署的 YAML 文件。
* **同步**:触发资源同步。
* **删除**:删除持续部署。
//warning
[.admon.warning,cols="a"]
|===
|警告
|
删除持续部署的同时会删掉和该持续部署关联的资源。请谨慎操作。
|===
--
. 点击已创建的持续部署进入详情页面,查看同步状态和同步结果。
== 访问已创建的应用
. 进入持续部署所属的项目,在左侧导航栏,点击**应用负载** > **服务**。
. 在右侧的**服务**区域找到已部署的应用并点击右侧image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],选择**编辑外部访问**。
. 在**访问模式**中选择 **NodePort**,点击**确定**。
. 在服务列表页面的**外部访问**列,查看暴露的端口,通过 {Node IP}:{NodePort} 访问此应用。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
在访问服务之前,请确保安全组中的端口已打开。
|===
--

View File

@ -0,0 +1,100 @@
---
title: "导入代码仓库"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps"
description: "介绍如何导入代码仓库。"
weight: 04
---
{ks_product_right}支持导入 GitHub、GitLab、Bitbucket 或其它基于 Git 的代码仓库,如 Gitee。下面以 Github 仓库为例,展示如何导入代码仓库。
== 前提条件
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
* 已有一个企业空间、一个 DevOps 项目和一个用户 (例如 **project-regular**),并已邀请该用户至 DevOps 项目且授予 **operator** 角色。请参阅link:../05-devops-settings/02-role-and-member-management[角色和成员管理]。
== 操作步骤
. 以 **project-regular** 用户登录{ks_product_both} Web 控制台。
. 点击**企业空间管理**并进入您的 DevOps 项目。
. 在左侧导航栏,点击**代码仓库**。
. 在右侧的代码仓库页面,点击**添加**。
. 在**导入代码仓库**对话框,输入代码仓库名称,点击选择代码仓库。您也可以为代码仓库设置别名和添加描述信息。
+
--
下表列举了支持导入的代码仓库和参数设置项。以下步骤以 GitHub 为例。
[%header,cols="1a,4a"]
|===
|参数 |描述
|GitHub
|**凭证**:选择访问代码仓库的凭证。
|GitLab
|
* **GitLab 服务器地址**:选择 GitLab 服务器地址,默认值为 link:https://gitlab.com[]。
* **项目组/所有者**:输入 GitLab 账号。
* **凭证**:选择访问代码仓库的凭证。
* **代码仓库**:选择代码仓库。
|Bitbucket
|
* **Bitbucket 服务器地址**:设置 Bitbucket 服务器地址。
* **凭证**:选择访问代码仓库的凭证。
|Git
|
* **代码仓库地址**:输入代码仓库地址,如 link:https://gitee.com[]。
* **凭证**:选择访问代码仓库的凭证。
|===
//note
[.admon.note,cols="a"]
|===
|说明
|
如需使用 GitLab 私有仓库请参阅link:../02-pipelines/04-gitlab-multibranch-pipeline/[使用 GitLab 创建多分支流水线]。
|===
--
. 在**凭证**区域,点击**创建凭证**。在弹出的**创建凭证**对话框,设置以下参数,点击**确定**。
+
--
* **名称**:输入凭证名称,如 **github-id**。
* **类型**:取值包括**用户名和密码**、**SSH 密钥**和**访问令牌**。在 DevOps 项目中,建议使用**用户名和密码**。
// * **类型**:取值包括**用户名和密码**、**SSH 密钥**、**访问令牌**和 **kubeconfig**。在 DevOps 项目中,建议使用**用户名和密码**。
* **用户名**:此处默认用户名为 **admin**。
* **密码/令牌**:输入您的 GitHub 令牌。
* **描述**:添加描述信息。
//note
[.admon.note,cols="a"]
|===
|说明
|
更多关于如何添加凭证的信息请参阅link:../05-devops-settings/01-credential-management/[凭证管理]。
|===
--
. 在**凭证**下拉列表中,选择创建的凭证,点击**确定**。
. 在弹出的 GitHub 仓库中,选择代码仓库,点击**确定**。
. 点击代码仓库右侧的image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],可以执行以下操作:
+
--
* **编辑**:修改代码仓库别名和描述信息,以及重新选择代码仓库。
* **编辑 YAML**:编辑代码仓库 YAML 文件。
* **删除**:删除代码仓库。
--

View File

@ -0,0 +1,184 @@
---
title: "凭证管理"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps"
description: "介绍如何管理 DevOps 凭证。"
weight: 01
---
凭证是包含敏感信息的对象例如用户名和密码、SSH 密钥和令牌 (Token)。当{ks_product_left} DevOps 流水线运行时,会与外部环境中的对象进行交互,以执行一系列任务,包括拉取代码、推送和拉取镜像以及运行脚本等。此过程中需要提供相应的凭证,而这些凭证不会明文出现在流水线中。
具有必要权限的 DevOps 项目用户可以为 Jenkins 流水线配置凭证。用户在 DevOps 项目中添加或配置这些凭证后,便可以在 DevOps 项目中使用这些凭证与第三方应用程序进行交互。
目前,您可以在 DevOps 项目中创建以下类型的凭证:
* **用户名和密码**:用户名和密码,可以作为单独的组件处理,或者作为用冒号分隔的字符串(格式为 **username:password**)处理,例如 GitHub 和 GitLab 账户。
* **SSH 密钥**带有私钥的用户名SSH 公钥/私钥对。
* **访问令牌**:具有访问权限的令牌。
* **kubeconfig**:用于配置跨集群认证。
本文档演示如何在 DevOps 项目中创建和管理凭证。有关如何使用凭证的更多信息请参阅link:../../02-pipelines/02-create-a-pipeline-using-jenkinsfile/[使用 Jenkinsfile 创建流水线]和link:../../02-pipelines/01-create-a-pipeline-using-graphical-editing-panel/[使用图形编辑面板创建流水线]。
== 前提条件
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
* 已有一个企业空间、一个 DevOps 项目和一个用户 (例如 **project-regular**),并已邀请该用户至 DevOps 项目且授予 **operator** 角色。请参阅link:../02-role-and-member-management[角色和成员管理]。
== 创建凭证
. 以 **project-regular** 用户登录{ks_product_both} Web 控制台。
. 点击**企业空间管理**并进入您的 DevOps 项目。
. 在左侧导航栏,选择 **DevOps 项目设置 > 凭证**。
. 在右侧的**凭证**区域,点击**创建**。
. 在弹出的**创建凭证**对话框,输入凭证名称,并选择凭证类型。不同的凭证类型需要设置的参数不同,具体请参考以下内容。
+
====
* 创建用户名和密码凭证
+
--
以创建 GitHub 用户凭证为例,您需要设置以下参数:
[%header,cols="1a,2a"]
|===
|参数|描述
|名称
|设置凭证名称,如 **github-id**。
|类型
|选择**用户名和密码**。
|用户名
|输入您的 GitHub 用户名。
|密码/令牌
|输入您的 GitHub 令牌。
|描述
|凭证的简介。
|===
//note
[.admon.note,cols="a"]
|===
|说明
|
* 自 2021 年 8 月起GitHub 要求使用基于令牌的身份验证,此处需要输入令牌,而非 GitHub 密码。有关如何生成令牌请参阅link:https://docs.github.com/cn/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token[创建个人访问令牌]。
* 如果您的账户或密码中包含任何特殊字符,例如 **@** 和 **$**,可能会因为无法识别而在流水线运行时导致错误。在这种情况下,您需要先在一些第三方网站(例如 link:https://www.urlencoder.org/[urlencoder])上对账户或密码进行编码,然后将输出结果复制粘贴作为您的凭证信息。
|===
--
* 创建 SSH 密钥凭证
+
--
[%header,cols="1a,2a"]
|===
|参数|描述
|名称
|设置凭证名称。
|类型
|选择**SSH 密钥**。
|用户名
|输入您的用户名。
|私钥
|输入您的 SSH 密钥。
|密码短语
|输入密码短语。为了更好保护您的账户安全,建议设置该参数。
|描述
|凭证的简介。
|===
--
* 创建访问令牌凭证
+
--
[%header,cols="1a,2a"]
|===
|参数|描述
|名称
|设置凭证名称。
|类型
|选择**访问令牌**。
|令牌
|输入您的令牌。
|描述
|凭证的简介。
|===
--
* 创建 kubeconfig 凭证
+
--
[%header,cols="1a,2a"]
|===
|参数|描述
|名称
|设置凭证名称,例如 **demo-kubeconfig**。
|类型
|选择 **kubeconfig**。
|内容
|系统自动获取当前 Kubernetes 集群的 kubeconfig 文件内容,并自动填充该字段,您无须做任何更改。但是访问其他集群时,您可能需要更改 kubeconfig。
|描述
|凭证的简介。
|===
//note
[.admon.note,cols="a"]
|===
|说明
|
用于配置集群访问的文件称为 kubeconfig 文件。这是引用配置文件的通用方法。有关更多信息,请参阅 link:https://kubernetes.io/zh/docs/concepts/configuration/organize-cluster-access-kubeconfig/[Kubernetes 官方文档]。
|===
--
====
== 查看和管理凭证
. 点击已创建的凭证,进入其详情页面,查看凭证详情和与此凭证相关的所有事件。
. 点击**编辑**修改凭证信息,点击**删除**删除凭证。
//note
[.admon.note,cols="a"]
|===
|说明
|
编辑凭证时,{ks_product_right}不会显示现有用户名或密码信息。如果输入新的用户名和密码,则前一个将被覆盖。
|===

View File

@ -0,0 +1,118 @@
---
title: "角色和成员管理"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps"
description: "介绍如何在 DevOps 项目中管理角色和成员。"
weight: 02
---
本文档演示如何在 DevOps 项目中管理角色和成员。
在 DevOps 项目范围内,您可以向角色授予以下资源的权限:
* DevOps 项目设置
* 流水线
* 凭证
* 持续部署
* 代码仓库
* 访问控制
== 前提条件
* 已创建一个 DevOps 项目,例如 **demo-devops**。
* 已有一个在 DevOps 项目级别具有 **admin** 角色的用户(例如 **devops-admin**)。
== 内置角色
在 **DevOps 项目角色**中,有三个可用的内置角色,如下所示。创建 DevOps 项目时,会自动创建内置角色,并且无法编辑或删除这些角色。
[%header,cols="1a,4a"]
|===
|内置角色|描述信息
|viewer
|DevOps 项目观察者,查看 DevOps 项目中的所有资源。
|operator
|DevOps 项目普通成员,管理 DevOps 凭证和流水线以及查看 DevOps 项目中的成员和角色。
|admin
|DevOps 项目管理员,管理 DevOps 项目中的所有资源。
|===
== 创建 DevOps 项目角色
. 以 **devops-admin** 用户登录 {ks_product_both} Web 控制台。
. 前往 **DevOps 项目**页面点击一个 DevOps 项目(例如 **demo-devops**)。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
本文档使用 **devops-admin** 账户作为示例。只要账户被授予的角色包含 DevOps 项目级别**访问控制**中的**成员查看**、**角色管理**和**角色查看**的权限,此账户便可以创建 DevOps 项目角色。
|===
--
. 选择 **DevOps 项目设置**中的 **DevOps 项目角色**,点击**创建**。
. 设置**名称**。在本示例中,将创建一个名为 **pipeline-creator** 的角色。点击**编辑权限**继续。
. 在**流水线**页签,选择您希望授予该角色的权限。例如,为此角色选择**流水线管理**和**流水线查看**。点击**确定**完成操作。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
**依赖于**表示当前授权项依赖所列出的授权项,勾选该权限后系统会自动选上所有依赖权限。
|===
--
. 新创建的角色将显示在 **DevOps 项目角色**列表中。点击右侧的image:/images/ks-qkcp/zh/icons/more.svg[more,18,18]对其进行编辑。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
**pipeline-creator** 角色仅被授予**流水线管理**和**流水线查看**权限,可能无法满足您的实际需求。本示例仅用于演示,请根据实际需要创建自定义角色。
|===
--
== 邀请 DevOps 项目成员
. 在 **DevOps 项目设置**中选择 **DevOps 项目成员**,然后点击**邀请**。
. 点击image:/images/ks-qkcp/zh/icons/add-dark.svg[add,18,18]邀请账户加入此 DevOps 项目,并向此账户授予 **pipeline-creator** 角色。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
必须先邀请用户加入 DevOps 项目所在的企业空间。
|===
--
. 点击**确定**将用户添加到此 DevOps 项目。在 **DevOps 项目成员**页面,将显示新邀请的成员。
. 点击项目成员右侧的image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],修改现有成员的角色或从 DevOps 项目中删除该用户。

View File

@ -0,0 +1,31 @@
---
title: "添加持续部署白名单"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps"
description: "介绍如何添加持续部署白名单。"
weight: 03
---
{ks_product_right}支持通过设置白名单,限制资源持续部署的代码仓库和目标位置。
本文档介绍如何添加持续部署白名单。
== 前提条件
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
* 已有一个企业空间、一个 DevOps 项目和一个用户 (例如 **project-regular**),并已邀请该用户至 DevOps 项目且授予 **operator** 角色。请参阅link:../02-role-and-member-management[角色和成员管理]。
* 已link:../../04-import-code-repositories/[导入代码仓库]。
== 操作步骤
. 以 **project-regular** 用户登录{ks_product_both} Web 控制台。
. 点击**企业空间管理**并进入您的 DevOps 项目。
. 在左侧导航栏,选择 **DevOps 项目设置 > 基本信息**。
. 在右侧**基本信息**下的**持续部署白名单**区域,点击**编辑白名单**。
. 在弹出的**编辑白名单**对话框,选择代码仓库、部署集群和项目,点击**确定**。点击**添加**可添加多个代码仓库和部署位置。

View File

@ -0,0 +1,41 @@
---
title: "为依赖项缓存设置 CI 节点"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps"
description: "介绍如何为依赖项缓存设置 CI 节点。"
weight: 04
---
构建应用程序通常需要拉取不同的依赖项。拉取过程中可能会遇到某些问题,例如拉取时间长、网络不稳定,进而导致构建失败。为了提供更可靠和稳定的环境,可以配置节点或节点组,专门用于持续集成 (CI),并通过使用缓存来加快构建过程。
本文档演示如何设置 CI 节点,以便{ks_product_both}将流水线的任务调度到这些节点。
// 本文档演示如何设置 CI 节点,以便{ks_product_both}将流水线的任务以及 S2I/B2I 构建的任务调度到这些节点。
== 前提条件
您需要在{ks_product_both}平台具有**集群管理**权限。
== 标记 CI 节点
. 以具有**集群管理**权限的账户登录{ks_product_left} Web 控制台。
. 点击**集群管理**,进入一个集群。
. 在左侧导航栏中选择**节点**下的**集群节点**,查看当前集群中的现有节点。
. 从列表中选择一个节点用来运行 CI 任务。点击节点名称转到其详情页面,点击**更多操作** > **编辑标签**。
. 在弹出的对话框中,在键为 **node-role.kubernetes.io/worker** 的后面,输入 **ci** 作为此标签的值,点击**确定**。
== 给 CI 节点添加污点
流水线一般会根据link:https://kubernetes.io/zh/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity[节点亲和性]来确定是否调度任务到某一节点。如果要将节点专用于 CI 任务即不允许将其他工作负载调度到该节点可以在该节点上添加link:https://kubernetes.io/zh/docs/concepts/scheduling-eviction/taint-and-toleration/[污点]。
// 流水线和 S2I/B2I 工作流一般会根据link:https://kubernetes.io/zh/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity[节点亲和性]来确定是否调度任务到某一节点。如果要将节点专用于 CI 任务即不允许将其他工作负载调度到该节点可以在该节点上添加link:https://kubernetes.io/zh/docs/concepts/scheduling-eviction/taint-and-toleration/[污点]。
. 点击**更多操作** > **编辑污点**。
. 点击**添加**,输入键 **node.kubernetes.io/ci** 而不指定值。根据需要选择**阻止调度**、**尽可能阻止调度**或**阻止调度并驱逐现有容器组** 。
. 点击**确定**。{ks_product_right}将根据您设置的污点调度任务。

View File

@ -0,0 +1,10 @@
---
title: "DevOps 项目设置"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps"
description: "介绍如何管理 DevOps 项目的设置。"
weight: 05
layout: "second"
---
本节介绍如何管理 DevOps 项目的设置。

View File

@ -0,0 +1,10 @@
---
title: "使用 DevOps"
keywords: "Kubernetes, {ks_product}, DevOps 项目, 使用 DevOps"
description: "介绍如何使用 DevOps 功能。"
weight: 03
layout: "second"
---
本节介绍如何使用 DevOps 功能。

View File

@ -0,0 +1,372 @@
---
title: "将 SonarQube 集成到流水线"
keywords: "Kubernetes, {ks_product}, DevOps 项目"
description: "介绍如何将 SonarQube 集成到流水线。"
weight: 01
---
link:https://www.sonarqube.org/[SonarQube] 是一种主流的代码质量持续检测工具可用于代码库的静态和动态分析。SonarQube 集成到{ks_product_both}流水线后,如果在运行的流水线中检测到问题,将会在仪表板上直接显示常见代码问题。
本文档演示如何将 SonarQube 集成到流水线中。在link:../../03-how-to-use/02-pipelines/02-create-a-pipeline-using-jenkinsfile/[使用 Jenkinsfile 创建流水线]之前,请先阅读本节内容。
== 前提条件
{ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
== 安装 SonarQube 服务器
要将 SonarQube 集成到您的流水线,必须先安装 SonarQube 服务器。
. 安装 Helm以便使用该工具安装 SonarQube。例如运行以下命令安装 Helm 3
+
--
// Bash
[,bash]
----
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3|bash
----
查看 Helm 版本。
// Bash
[,bash]
----
helm version
version.BuildInfo{Version:"v3.4.1", GitCommit:"c4e74854886b2efe3321e185578e6db9be0a6e29", GitTreeState:"clean", GoVersion:"go1.14.11"}
----
//note
[.admon.note,cols="a"]
|===
|说明
|
有关更多信息,请参阅 link:https://helm.sh/zh/docs/intro/install/[Helm 文档]。
|===
--
. 执行以下命令安装 SonarQube 服务器。
+
--
// Bash
[,bash]
----
helm upgrade --install sonarqube sonarqube --repo https://charts.kubesphere.io/main -n \
kubesphere-devops-system --create-namespace --set service.type=NodePort
----
// Note
[.admon.note,cols="a"]
|===
|说明
|
请确保使用 Helm 3 安装 SonarQube 服务器。
|===
--
== 获取 SonarQube 控制台地址
. 执行以下命令获取 SonarQube NodePort。
+
--
// Bash
[,bash]
----
export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services sonarqube-sonarqube)
export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
----
--
. 预期输出结果:(您的 NodeIP 和 NodePort 应该不同)
+
--
// Bash
[,bash]
----
http://10.77.1.201:31377
----
--
== 配置 SonarQube 服务器
=== 步骤 1访问 SonarQube 控制台
. 执行以下命令查看 SonarQube 的状态。注意,只有在 SonarQube 启动并运行后才能访问 SonarQube 控制台。
+
--
// Bash
[,bash]
----
kubectl get pod -n kubesphere-devops-system
----
--
. 在浏览器中访问 SonarQube 控制台 link:http://NodeIP:NodePort[]。
. 点击右上角的 **Log in**,然后使用默认账户 **admin/admin** 登录。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
取决于实例的部署位置,您可能需要设置必要的端口转发规则,并在您的安全组中放行该端口,以便访问 SonarQube。
|===
--
=== 步骤 2创建 SonarQube 管理员令牌 (Token)
. 点击右上角字母 **A**,然后从菜单中选择 **My Account** 以转到 **Profile** 页面。
. 点击 **Security** 并输入令牌名称,例如 **kubesphere**。
. 点击 **Generate** 并复制此令牌。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
如提示所示,您无法再次查看此令牌,因此请确保复制成功。
|===
--
=== 步骤 3创建 Webhook 服务器
. 执行以下命令获取 SonarQube Webhook 的地址。
+
--
// Bash
[,bash]
----
export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services devops-jenkins)
export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT/sonarqube-webhook/
----
--
. 预期输出结果:
+
--
// Bash
[,bash]
----
http://10.77.1.201:30180/sonarqube-webhook/
----
--
. 依次点击 **Administration**、**Configuration** 和 **Webhooks** 创建一个 Webhook。
. 点击 **Create**。
. 在弹出的对话框中输入 **Name** 和 **Jenkins Console URL**(即 SonarQube Webhook 地址)。点击 **Create** 完成操作。
=== 步骤 4将 SonarQube 配置添加到 ks-installer
. 执行以下命令编辑 **ks-installer**。
+
--
// Bash
[,bash]
----
kubectl edit cc -n kubesphere-system ks-installer
----
--
. 搜寻至 **devops**。添加字段 **sonarqube** 并在其下方指定 **externalSonarUrl** 和 **externalSonarToken**。
+
--
[,yaml]
----
devops:
enabled: true
jenkinsJavaOpts_MaxRAM: 2g
jenkinsJavaOpts_Xms: 512m
jenkinsJavaOpts_Xmx: 512m
jenkinsMemoryLim: 2Gi
jenkinsMemoryReq: 1500Mi
jenkinsVolumeSize: 8Gi
sonarqube: # Add this field manually.
externalSonarUrl: http://10.77.1.201:31377 # The SonarQube IP address.
externalSonarToken: 00ee4c512fc987d3ec3251fdd7493193cdd3b91d # The SonarQube admin token created above.
----
--
. 完成操作后保存此文件。
=== 步骤 5将 SonarQube 服务器添加至 Jenkins
. 执行以下命令获取 Jenkins 的地址。
+
--
// Bash
[,bash]
----
export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services devops-jenkins)
export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
----
--
. 获取 Jenkins 的端口号。
+
--
// Bash
[,bash]
----
http://10.77.1.201:30180
----
--
. 使用地址 link:http://NodeIP:30180[] 访问 Jenkins。
+
--
安装 DevOps 时,默认情况下也会安装 Jenkins 仪表板。此外Jenkins 还配置有{ks_product_left} LDAP这意味着您可以直接使用{ks_product_both}账户登录 Jenkins。有关配置 Jenkins 的更多信息,请参阅 link:../../03-how-to-use/02-pipelines/07-jenkins-setting/[Jenkins 系统设置]。
//note
[.admon.note,cols="a"]
|===
|说明
|
取决于实例的部署位置,您可能需要设置必要的端口转发规则,并在您的安全组中放行端口 **30180**,以便访问 Jenkins。
|===
--
. 点击左侧导航栏中的**系统管理**。
. 向下滚动并点击**系统配置**。
. 搜寻到 **SonarQube servers**,然后点击 **Add SonarQube**。
. 输入 **Name** 和 **Server URL** (link:http://NodeIP:NodePort[])。 点击**添加**,选择 **Jenkins**,然后在弹出的对话框中用 SonarQube 管理员令牌创建凭证(如下方第二张截图所示)。创建凭证后,从 **Server authentication token** 旁边的下拉列表中选择该凭证。点击**应用**完成操作。
+
--
image:/images/ks-qkcp/zh/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/sonarqube-jenkins-settings.png[,100%]
image:/images/ks-qkcp/zh/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/add-credentials.png[,100%]
//note
[.admon.note,cols="a"]
|===
|说明
|
如果点击**添加**按钮无效,前往**系统管理**下的 **Manage Credentials** 并点击 **Stores scoped to Jenkins** 下的 **Jenkins**,再点击**全局凭据 (unrestricted)**,然后点击左侧导航栏的**添加凭据**,参考上方第二张截图用 SonarQube 管理员令牌添加凭证。添加凭证后,从 **Server authentication token** 旁边的下拉列表中选择该凭证。
|===
--
=== 步骤 6将 sonarqubeURL 添加到{ks_product_both}控制台
您需要指定 **sonarqubeURL**,以便可以直接从{ks_product_both} Web 控制台访问 SonarQube。
. 执行以下命令:
+
--
// Bash
[,bash]
----
kubectl editcm -n kubesphere-system ks-console-config
----
--
. 搜寻到 **data:client:enableKubeConfig**,在下方添加 **devops** 字段并指定 **sonarqubeURL**。
+
--
[,yaml]
----
client:
enableKubeConfig: true
devops: # 手动添加该字段。
sonarqubeURL: http://10.77.1.201:31377 # SonarQube IP 地址。
----
--
. 保存该文件。
=== 步骤 7重启服务
执行以下命令重启服务。
// Bash
[,bash]
----
kubectl -n kubesphere-devops-system rollout restart deploy devops-apiserver
----
// Bash
[,bash]
----
kubectl -n kubesphere-system rollout restart deploy ks-console
----
== 为新项目创建 SonarQube Token
创建一个 SonarQube 令牌,以便流水线在运行时可以与 SonarQube 通信。
. 在 SonarQube 控制台上,点击 **Create new project**。
+
image:/images/ks-qkcp/zh/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/sonarqube-create-project.png[,100%]
. 输入项目密钥,例如 **java-demo**,然后点击 **Set Up**。
+
image:/images/ks-qkcp/zh/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/jenkins-projet-key.png[,100%]
. 输入项目名称,例如 **java-sample**,然后点击 **Generate**。
+
image:/images/ks-qkcp/zh/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/generate-a-token.png[,100%]
. 创建令牌后,点击 **Continue**。
+
image:/images/ks-qkcp/zh/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/token-created.png[,100%]
. 分别选择 **Java** 和 **Maven**复制下图所示绿色框中的序列号。如果要在流水线中使用则需要在link:../../03-how-to-use/05-devops-settings/01-credential-management/[凭证]中添加此序列号。
+
image:/images/ks-qkcp/zh/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/sonarqube-example.png[,100%]
== 在{ks_product_both}控制台查看结果
link:../../03-how-to-use/02-pipelines/02-create-a-pipeline-using-jenkinsfile/[使用 Jenkinsfile 创建流水线]或link:../../03-how-to-use/02-pipelines/01-create-a-pipeline-using-graphical-editing-panel/[使用图形编辑面板创建流水线]之后,即可查看代码质量分析的结果。

View File

@ -0,0 +1,171 @@
---
title: "将 Harbor 集成到流水线"
keywords: "Kubernetes, {ks_product}, DevOps 项目"
description: "介绍如何将 Harbor 集成到流水线。"
weight: 02
---
本文档演示如何将 Harbor 集成到{ks_product_both}流水线。
== 前提条件
* {ks_product_right}平台需要安装并启用 **DevOps** 扩展组件。
* 已有一个企业空间、一个 DevOps 项目和一个用户 (例如 **project-regular**),并已邀请该用户至 DevOps 项目且授予 **operator** 角色。
== 安装 Harbor
执行以下命令,使用 Helm 3 安装 Harbor。
// Bash
[,bash]
----
helm repo add harbor https://helm.goharbor.io
# 如需快速安装,您可以通过 NodePort 暴露 Harbor 并禁用 tls。
# 请将 externalURL 设置为您的一个节点 IP并确保 Jenkins 能够访问它。
helm install harbor-release harbor/harbor --set expose.type=nodePort,externalURL=http://$ip:30002,expose.tls.enabled=false
----
== 获取 Harbor 凭证
. 安装 Harbor 后,访问 **<NodeIP>:30002** 并使用默认账户和密码 (**admin/Harbor12345**) 登录 Web 控制台。
. 在左侧导航栏中点击**项目**,然后点击**新建项目**。
. 在弹出的对话框中,设置项目名称 **ks-devops-harbor** 并点击**确定**。
. 点击刚刚创建的项目,在**机器人账户**页签下点击**添加机器人账户**。
. 在弹出的对话框中,为机器人账户设置名称 **robot-test** 并点击**添加**。请确保在**权限**中勾选推送制品的权限选框。
. 在弹出的对话框中,点击**导出到文件中**,保存该令牌。
== 启用 Insecure Registry
配置 Docker使其忽略您 Harbor 仓库的安全性。
. 在您的主机上运行 **vim /etc/docker/daemon.json** 命令以编辑 **daemon.json** 文件,输入以下内容并保存更改。
+
--
[,json]
----
{
"insecure-registries" : ["103.61.38.55:30002"]
}
----
//note
[.admon.note,cols="a"]
|===
|说明
|
请将 **103.61.38.55:30002** 替换为您自己的 Harbor 仓库地址。对于 Linux**daemon.json** 文件的路径为 **/etc/docker/daemon.json**;对于 Windows该文件的路径为 **C:\ProgramData\docker\config\daemon.json**。
|===
--
. 运行以下命令重启 Docker使更改生效。
+
--
[,bash]
----
sudo systemctl daemon-reload
sudo systemctl restart docker
----
//note
[.admon.note,cols="a"]
|===
|说明
|
建议您在隔离的测试环境或者严格控制的离线环境中使用该方案。有关更多信息,请参阅 link:https://docs.docker.com/registry/insecure/#deploy-a-plain-http-registry[Deploy a plain HTTP registry]。完成上述操作后,即可在项目中部署工作负载时使用您 Harbor 仓库中的镜像。您需要为自己的 Harbor 仓库创建一个镜像密钥,然后在**容器镜像**页签下的**容器设置**中,选择您的 Harbor 仓库并输入镜像的绝对路径以搜索您的镜像。
|===
--
== 创建凭证
. 以 **project-regular** 用户登录{ks_product_both} Web 控制台。
. 点击**企业空间管理**并进入您的 DevOps 项目。
. 在 **DevOps 项目设置**下的**凭证**页面为 Harbor 创建凭证。
. 在**创建凭证**页面,设置凭证 ID (**robot-test**)**类型**选择**用户名和密码****用户名**字段必须和您刚刚下载的 JSON 文件中 **name** 的值相同,并在**密码/令牌**中输入 Harbor 令牌文件中 **token** 的值。
. 点击**确定**以保存。
== 创建流水线
. 转到**流水线**页面,点击**创建**。
. 在**基本信息**页签,输入名称 **demo-pipeline**,然后点击**下一步**。
. **高级设置**中使用默认值,点击**创建**。
== 编辑 Jenkinsfile
. 点击该流水线进入其详情页面,然后点击**编辑 Jenkinsfile**。
. 将以下内容复制粘贴至 Jenkinsfile。注意必须将 **REGISTRY**、**HARBOR_NAMESPACE**、**APP_NAME** 和 **HARBOR_CREDENTIAL** 替换为您自己的值。
+
--
[,json]
----
pipeline {
agent {
node {
label 'maven'
}
}
environment {
// 您 Harbor 仓库的地址。
REGISTRY = '103.61.38.55:30002'
// 项目名称。
// 请确保您的机器人账户具有足够的项目访问权限。
HARBOR_NAMESPACE = 'ks-devops-harbor'
// Docker 镜像名称。
APP_NAME = 'docker-example'
// robot-test是您在{ks_product_both} Web 控制台上创建的凭证 ID。
HARBOR_CREDENTIAL = credentials('robot-test')
}
stages {
stage('docker login') {
steps{
container ('maven') {
// 请替换 -u 后面的 Docker Hub 用户名,不要忘记加上 ''。您也可以使用 Docker Hub 令牌。
sh '''echo $HARBOR_CREDENTIAL_PSW|docker login $REGISTRY -u 'robot$robot-test' --password-stdin'''
}
}
}
stage('build & push') {
steps {
container ('maven') {
sh 'git clone https://github.com/kstaken/dockerfile-examples.git'
sh 'cd dockerfile-examples/rethinkdb && docker build -t $REGISTRY/$HARBOR_NAMESPACE/$APP_NAME:devops-test .'
sh 'docker push$REGISTRY/$HARBOR_NAMESPACE/$APP_NAME:devops-test'
}
}
}
}
}
----
//note
[.admon.note,cols="a"]
|===
|说明
|
您可以通过带有环境变量的 Jenkins 凭证来传送参数至 **docker login -u**。但是,每个 Harbor 机器人账户的用户名都包含一个 **$** 字符当用于环境变量时Jenkins 会将其转换为 **$$**。Harbor v2.2以后可以自定义机器人后缀避免此类问题link:https://number1.co.za/rancher-cannot-use-harbor-robot-account-imagepullbackoff-pull-access-denied/[了解更多]。
|===
--
== 运行流水线
保存 Jenkinsfile 后,{ks_product_right}会自动在图形编辑面板上创建所有阶段和步骤。点击**运行**来运行该流水线。如果一切运行正常Jenkins 将推送镜像至您的 Harbor 仓库。

View File

@ -0,0 +1,10 @@
---
title: "工具集成"
keywords: "Kubernetes, {ks_product}, DevOps 项目"
description: "介绍如何将第三方工具与流水线集成。"
weight: 04
layout: "second"
---
本节介绍如何将第三方工具与流水线集成。

View File

@ -0,0 +1,16 @@
---
title: "DevOps"
keywords: "Kubernetes, {ks_product}, DevOps"
description: "如何在 DevOps 项目中进行管理和操作,包括运行流水线、创建凭证和集成工具等。"
weight: 01
layout: "second"
---
DevOps 支持在 Kubernetes 集群上部署和管理 CI/CD 任务以及相关的工作负载。安装 DevOps 扩展组件时,会自动部署 Jenkins支持通过 Jenkinsfile 构建流水线。此外DevOps 还提供图形编辑面板,将整个流程可视化,直观地呈现流水线在每个阶段的运行状态。
安装 DevOps 扩展组件后,企业空间左侧导航栏将显⽰ **DevOps 项⽬**。
本节介绍如何管理 DevOps 项目,以及如何在 DevOps 项目中进行管理和操作,包括运行流水线、创建凭证和集成工具等。

View File

@ -0,0 +1,62 @@
---
title: "创建应用模板"
keywords: "Kubernetes, {ks_product}, 企业空间,应用模板, 创建应用模板"
description: "介绍如何创建应用模板。"
weight: 01
---
:ks_permission: **应用/应用版本/应用实例创建**
:ks_navigation: **应用管理 > 应用模板**
本节介绍如何创建应用模板。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/workspaceManagement/workspaceManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
* 已准备 .tar.gz 或 .tgz 格式的 Helm Chart 压缩包,或应用的 yaml 文件。您可以link:https://kubesphere.io/files/application-templates/nginx-0.1.0.tgz[下载 Nginx Helm Chart] 用于测试。有关更多信息,请参阅 link:https://helm.sh/zh/docs/topics/charts/[Helm 官方文档]。
== 操作步骤
include::../../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../../../_ks_components/oper-clickCreate.adoc[]
+
. 在**创建应用**对话框,点击**上传 Helm Chart**,选择本地存储的 .tar.gz 或 .tgz 格式的 Helm Chart 压缩包。
+
或者点击**创建 yaml 应用**,输入应用名称和版本号,使用 yaml 文件创建应用。
+
--
//note
[.admon.note,cols="a"]
|===
|说明
|
点击image:/images/ks-qkcp/zh/icons/upload-dark-white.svg[upload-dark,18,18]可从本地上传 yaml 文件。
点击image:/images/ks-qkcp/zh/icons/download-dark-white.svg[download-dark,18,18]可将 yaml 文件下载到本地。
|===
--
. 点击**确定**。
+
--
应用模板创建完成后将显示在应用模板列表中。
--

View File

@ -0,0 +1,63 @@
---
title: "查看应用模板列表"
keywords: "Kubernetes, {ks_product}, 企业空间,应用模板, 查看应用模板列表"
description: "介绍如何查看应用模板列表。"
weight: 02
---
:ks_permission: **应用/应用版本/应用实例查看**
:ks_navigation: **应用管理 > 应用模板**
本节介绍如何查看应用模板列表。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/workspaceManagement/workspaceManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
====
* 应用模板列表提供以下信息:
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-appTemplateName.adoc[]
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-status_v4.adoc[]
|企业空间
|应用模板所属的企业空间。
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-latestVersion_v4.adoc[]
|应用模板
|应用模板的类型,如 **helm 应用**或 **yaml 应用**。
|更新时间
|应用模板的更新时间。
|===
--
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-searchForAppTemplates.adoc[]
include::../../../../../../_ks_components/oper-refreshListData.adoc[]
include::../../../../../../_ks_components/oper-customizeColumns.adoc[]
====

View File

@ -0,0 +1,106 @@
---
title: "查看应用模板详情"
keywords: "Kubernetes, {ks_product}, 企业空间,应用模板, 查看应用模板详情"
description: "介绍如何查看应用模板详情。"
weight: 03
---
:ks_permission: **应用/应用版本/应用实例查看**
:ks_navigation: **应用管理 > 应用模板**
本节介绍如何查看应用模板详情。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/workspaceManagement/workspaceManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-openDetailsPage.adoc[]
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-viewAttributes.adoc[]
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
|应用 ID
|应用名称。
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-status_v4.adoc[]
|分类
|应用模板所属的分类需手动设置。有关更多信息请参阅link:../04-edit-app-template-information/[编辑应用模板信息]。
|类型
|应用模板的类型,如 **helm 应用**或 **yaml 应用**。
|企业空间
|应用模板所属的企业空间。
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-creationTime.adoc[]
|===
--
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-viewVersions.adoc[]
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
|状态
|应用版本当前的状态。
* **未提交**:应用版本已上传到企业空间,但未提交给{ks_product_both}平台的应用商店管理员审核。
* **已提交**:应用版本已提交给{ks_product_both}平台的应用商店管理员审核。
* **已发布**:应用版本已获得{ks_product_both}平台的应用商店管理员的批准,可以上架到应用商店。
* **已拒绝**:应用版本未获得{ks_product_both}平台的应用商店管理员的批准,审核不通过。
* **未发布**:应用版本发布后被应用商店管理员取消发布,或应用版本上架到{ks_product_both}平台的应用商店后被应用商店管理员下架。
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-version.adoc[]
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-developer.adoc[]
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-versionUpdateTime.adoc[]
|===
--
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-viewAppInformation.adoc[]
+
// include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-viewAppReviewRecords.adoc[]
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-viewAppInstances.adoc[]

View File

@ -0,0 +1,70 @@
---
title: "编辑应用模板信息"
keywords: "Kubernetes, {ks_product}, 企业空间,应用模板, 编辑应用模板信息"
description: "介绍如何编辑应用模板信息。"
weight: 04
---
:ks_permission: **应用/应用版本/应用实例管理**
:ks_navigation: **应用管理 > 应用模板**
本节介绍如何编辑应用模板信息。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/workspaceManagement/workspaceManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-openDetailsPage.adoc[]
+
. 在应用模板详情页面左上角点击**编辑**。
. 在**编辑信息**对话框设置应用模板的参数,然后点击**确定**。
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
|别名
|应用的别名。别名只能包含中文、字母、数字和连字符(-),不得以连字符(-)开头或结尾,最长 63 个字符。
|描述
|应用的描述信息。描述可包含任意字符,最长 120 个字符。
|图标
|应用的图标。如果未设置应用模板的图标,系统将默认使用应用名称第一个字符大写作为图标。图标格式必须为 .png 或 .jpg不能超过 96 x 96 像素和 20 KB。
|应用分类
|应用的功能分类。应用模板在上传到应用商店后将被自动划分到此处选择的分类下。
|服务商网站
|服务商的网站地址。从应用商店安装应用的用户可联系服务商获取技术支持。
|应用截图
|应用的介绍图片。最多支持上传 6 张截图,每张截图大小不能超过 2 MB。
|应用介绍
|应用的介绍信息。支持输入 markdown 格式的图文介绍。
|===
--

View File

@ -0,0 +1,82 @@
---
title: "使用应用模板安装应用"
keywords: "Kubernetes, {ks_product}, 企业空间, 应用模板, 使用应用模板安装应用"
description: "介绍如何使用应用模板安装应用。"
weight: 05
---
:ks_permission: **应用/应用版本/应用实例管理**
:ks_navigation: **应用管理 > 应用模板**
本节介绍如何在企业空间中使用应用模板安装应用。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/workspaceManagement/workspaceManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-openDetailsPage.adoc[]
+
. 在应用模板详情页面右侧的**版本**页签,点击所需的应用版本,然后在展开的区域中点击**部署**。
. 在弹出的**位置**对话框,选择应用的安装位置,然后点击**确定**。
. 在**基本信息**页签,设置应用的基本信息,然后点击**下一步**。
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
|名称
|用户自定义的应用名称。名称只能包含小写字母、数字和连字符(-),必须以小写字母开头并以小写字母或数字结尾,最长 32 个字符。
|版本
|需要安装的应用版本。
|描述
|应用的描述信息。描述可包含任意字符,最长 256 个字符。
|位置
|应用所属的集群和项目。应用所属的企业空间默认为应用模板所属的企业空间。
|===
--
. 在**应用设置**页签,根据需要修改应用的参数设置,然后点击**安装**。
+
--
// Note
include::../../../../../../_ks_components/admonitions/note.adoc[]
{ks_product_right}的应用模板功能底层基于 Helm Chart 实现。**应用设置**页签的参数设置应符合 Helm Chart 的 Values 文件规范。有关更多信息,请参阅 link:https://helm.sh/zh/docs/chart_template_guide/values_files/[Helm 官方文档]。
include::../../../../../../_ks_components/admonitions/admonEnd.adoc[]
ifeval::["{file_output_type}" == "html"]
应用安装完成后,即可在目标项目中查看已安装的应用。
endif::[]
ifeval::["{file_output_type}" == "pdf"]
应用安装完成后,即可在目标项目中查看已安装的应用。有关更多信息,请参阅《{ks_product_right}项目管理指南》的“应用”章节。
endif::[]
--

View File

@ -0,0 +1,47 @@
---
title: "上传应用版本"
keywords: "Kubernetes, {ks_product}, 企业空间, 应用模板, 上传应用版本"
description: "介绍如何在应用模板创建后上传应用版本。"
weight: 06
---
:ks_permission: **应用/应用版本/应用实例管理**
:ks_navigation: **应用管理 > 应用模板**
本节介绍如何在应用模板创建后上传应用版本。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/workspaceManagement/workspaceManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
* 已准备 .tar.gz 或 .tgz 格式的 Helm Chart 压缩包。有关更多信息,请参阅 link:https://helm.sh/zh/docs/topics/charts/[Helm 官方文档]。
== 操作步骤
include::../../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-openDetailsPage.adoc[]
. 在应用模板详情页面右侧的**版本**页签,点击**上传版本**。
. 在弹出的对话框中,点击**上传 Helm Chart**,选择本地存储的 .tar.gz 或 .tgz 格式 Helm Chart 压缩包,然后点击**确定**。
+
--
应用新版本上传完成后将显示在应用模板详情页面的**版本**页签。
--

View File

@ -0,0 +1,50 @@
---
title: "删除应用版本"
keywords: "Kubernetes, {ks_product}, 企业空间, 应用模板, 删除应用版本"
description: "介绍如何在应用模板中删除应用版本。"
weight: 08
---
:ks_permission: **应用/应用版本/应用实例删除**
:ks_navigation: **应用管理 > 应用模板**
本节介绍如何在应用模板中删除应用版本。
// Warning
include::../../../../../../_ks_components/admonitions/warning.adoc[]
应用版本删除后无法恢复,请谨慎执行此操作。
include::../../../../../../_ks_components/admonitions/admonEnd.adoc[]
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/workspaceManagement/workspaceManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
* 如果需要删除的应用版本已上架到应用商店,您需要联系应用商店管理员将应用版本下架。
== 操作步骤
include::../../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-openDetailsPage.adoc[]
+
. 在应用模板详情页面右侧的**版本**页签,点击需要删除的应用版本,在展开的区域中点击**删除**,然后在弹出的对话框点击**确定**。

View File

@ -0,0 +1,44 @@
---
title: "下载 Helm Chart 压缩包"
keywords: "Kubernetes, {ks_product}, 企业空间, 应用模板, 下载 Helm Chart 压缩包"
description: "介绍如何下载应用版本的 Helm Chart 压缩包。"
weight: 09
---
:ks_permission: **应用/应用版本/应用实例查看**
:ks_navigation: **应用管理 > 应用模板**
本节介绍如何下载应用版本的 Helm Chart 压缩包。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/workspaceManagement/workspaceManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-openDetailsPage.adoc[]
+
. 在应用模板详情页面右侧的**版本**页签,点击所需的应用版本,然后在展开的区域中点击**下载**。
+
--
应用版本的 Helm Chart 压缩包将通过浏览器下载到本地。
--

View File

@ -0,0 +1,53 @@
---
title: "将应用版本发布到应用商店"
keywords: "Kubernetes, {ks_product}, 企业空间, 应用模板, 将应用版本发布到应用商店"
description: "介绍如何将应用模板发布到应用商店。"
weight: 10
---
:ks_permission: **应用/应用版本/应用实例管理**
:ks_navigation: **应用管理 > 应用模板**
本节介绍如何将应用版本发布到应用商店。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/workspaceManagement/workspaceManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-openDetailsPage.adoc[]
+
. 在应用模板详情页面右侧的**版本**页签,点击需要发布的应用版本,然后在展开的区域中点击**提交审核**。
. 待应用商店管理员审核通过并将其上架后,在页面左上角点击**应用商店**,即可在应用商店中查看已上架的应用版本。
+
--
// Note
include::../../../../../../_ks_components/admonitions/note.adoc[]
* 审核通过后,应用版本的状态将变为**已发布**,表示可以被应用商店管理员上架到应用商店。上架后,所有项目成员才可以从应用商店将应用版本安装到项目中。
* 有关应用审核和上架的更多信息请参阅link:../../../03-app-store-management/[应用商店管理]。
include::../../../../../../_ks_components/admonitions/admonEnd.adoc[]
--

View File

@ -0,0 +1,47 @@
---
title: "删除应用模板"
keywords: "Kubernetes, {ks_product}, 企业空间, 应用模板, 删除应用模板"
description: "介绍如何删除应用模板。"
weight: 11
---
:ks_permission: **应用/应用版本/应用实例删除**
:ks_navigation: **应用管理 > 应用模板**
本节介绍如何删除应用模板。
// Warning
include::../../../../../../_ks_components/admonitions/warning.adoc[]
应用模板删除后无法恢复,请谨慎执行此操作。
include::../../../../../../_ks_components/admonitions/admonEnd.adoc[]
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/workspaceManagement/workspaceManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
// * 已删除应用模板中的所有应用版本。有关更多信息请参阅link:../08-delete-an-app-version/[删除应用版本]。
== 操作步骤
include::../../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
. 在需要删除的应用模板右侧点击image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],然后在下拉列表中选择**删除**。
. 在**删除应用模板**对话框,输入应用模板的名称,然后点击**确定**。

View File

@ -0,0 +1,11 @@
---
title: "应用模板"
keywords: "Kubernetes, {ks_product}, 企业空间, 应用管理, 应用模板"
description: "介绍如何管理应用模板。"
weight: 01
layout: "second"
---
本节介绍如何管理企业空间的应用模板。
每个应用模板可包含一个或多个由 Helm Chart 定义的应用版本。您可以将 Helm Chart 作为应用模板上传到企业空间,从而在企业空间中的所有项目使用该应用模板安装应用。您也可以进一步将应用模板上传到应用商店,从而在{ks_product_both}平台的所有项目安装应用。

View File

@ -0,0 +1,22 @@
---
title: "应用管理"
keywords: "Kubernetes, {ks_product}, 企业空间, 应用管理, 应用模板"
description: "介绍如何通过企业空间管理应用模板。"
weight: 02
layout: "second"
---
在{ks_product_both}平台,应用特指由一个或多个工作负载、服务、应用路由等资源组成的业务程序。{ks_product_right}平台的应用模板功能底层基于 Helm 实现,通过 Helm Chart 定义应用的编排方式。
您可以在企业空间中创建包含一个或多个应用版本的应用模板(每个应用版本由一个 Helm Chart 定义),从而在企业空间的项目中安装应用模板中定义的应用。
ifeval::["{file_output_type}" == "html"]
有关企业空间中应用仓库的更多信息请参阅link:../../../08-workspace-management/05-app-management/02-app-repositories/[应用仓库]。
endif::[]
ifeval::["{file_output_type}" == "pdf"]
有关企业空间中应用仓库的更多信息,请参阅《{ks_product_right}企业空间管理指南》的“应用仓库”章节。
endif::[]
有关 Helm 的更多信息,请参阅 link:https://helm.sh/zh/docs/[Helm 官方文档]。

View File

@ -0,0 +1,69 @@
---
title: "查看应用模板列表"
keywords: "Kubernetes, {ks_product}, 应用商店管理, 应用, 查看应用模板列表"
description: "介绍如何查看应用模板列表。"
weight: 01
---
:ks_permission: **应用商店管理**
:ks_navigation: **应用**
本节介绍如何查看应用商店中的应用模板列表。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
====
* **应用**页面显示应用商店中的应用模板,并提供以下信息:
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-appTemplateName.adoc[]
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-status_v4.adoc[]
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-workspace.adoc[]
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-latestVersion_v4.adoc[]
// |分类
// |应用模板所属的分类。将应用模板分配到一个分类中以便于管理。有关更多信息请参阅link:../../02-app-categories/[应用分类]。
|应用模板
|应用模板的类型,如 **helm 应用**或 **yaml 应用**。
|更新时间
|应用模板的更新时间。
|===
--
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-searchForAppTemplates.adoc[]
include::../../../../../../_ks_components/oper-refreshListData.adoc[]
include::../../../../../../_ks_components/oper-customizeColumns.adoc[]
====

View File

@ -0,0 +1,105 @@
---
title: "查看应用模板详情"
keywords: "Kubernetes, {ks_product}, 应用商店管理, 应用, 查看应用模板详情"
description: "介绍如何查看应用模板详情。"
weight: 02
---
:ks_permission: **应用商店管理**
:ks_navigation: **应用**
本节介绍如何查看应用模板详情。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-openDetailsPage.adoc[]
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-viewAttributes.adoc[]
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
|应用 ID
|应用名称。
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-status_v4.adoc[]
|分类
|应用模板所属的分类。将应用模板分配到一个分类中以便于管理。有关更多信息请参阅link:../../02-app-categories/[应用分类]。
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-type.adoc[]
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-workspace.adoc[]
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-creationTime.adoc[]
|===
--
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-viewVersions.adoc[]
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
|状态
|应用版本当前的状态。
* **未提交**:应用版本已上传到企业空间,但未提交给{ks_product_both}平台的应用商店管理员审核。
* **已提交**:应用版本已提交给{ks_product_both}平台的应用商店管理员审核。
* **已发布**:应用版本已获得{ks_product_both}平台的应用商店管理员的批准,可以上架到应用商店。
* **已拒绝**:应用版本未获得{ks_product_both}平台的应用商店管理员的批准,审核不通过。
* **未发布**:应用版本发布后被应用商店管理员取消发布,或应用版本上架到{ks_product_both}平台的应用商店后被应用商店管理员下架。
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-version.adoc[]
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-developer.adoc[]
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-versionUpdateTime.adoc[]
|===
--
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-viewAppInformation.adoc[]
+
// include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-viewAppReviewRecords.adoc[]
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-viewAppInstances.adoc[]

View File

@ -0,0 +1,65 @@
---
title: "编辑应用模板"
description: "介绍如何编辑应用商店中的应用模板信息。"
weight: 04
---
:ks_permission: **应用商店管理**
:ks_navigation: **应用**
本节介绍如何编辑应用商店中的应用模板信息。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
. 在需要编辑的应用模板右侧点击image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],然后在下拉列表中选择**编辑**。
. 在**编辑信息**对话框设置应用模板的参数,然后点击**确定**。
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
|别名
|应用的别名。别名只能包含中文、字母、数字和连字符(-),不得以连字符(-)开头或结尾,最长 63 个字符。
|描述
|应用的描述信息。描述可包含任意字符,最长 120 个字符。
|图标
|应用的图标。如果未设置应用模板的图标,系统将默认使用应用名称第一个字符大写作为图标。图标格式必须为 .png 或 .jpg不能超过 96 x 96 像素和 20 KB。
|应用分类
|应用的功能分类。应用模板在上传到应用商店后将被自动划分到此处选择的分类下。
|服务商网站
|服务商的网站地址。从应用商店安装应用的用户可联系服务商获取技术支持。
|应用截图
|应用的介绍图片。最多支持上传 6 张截图,每张截图大小不能超过 2 MB。
|应用介绍
|应用的介绍信息。支持输入 markdown 格式的图文介绍。
|===
--

View File

@ -0,0 +1,48 @@
---
title: "上架应用模板"
description: "介绍如何上架应用模板。"
weight: 06
---
:ks_permission: **应用商店管理**
:ks_navigation: **应用**
本节介绍如何上架应用模板。
[.admon.attention,cols="a"]
|===
|注意
|
在上架应用模板之前,其所包含的应用版本必须至少有一个是**已发布**状态。
|===
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-openDetailsPage.adoc[]
. 在应用模板详情页面左上角点击**上架**。
+
应用成功上架后,可在页面左上角的**应用商店**页面查看该应用。{ks_product_right}平台的所有项目都可以安装该应用。

View File

@ -0,0 +1,45 @@
---
title: "取消发布应用版本"
description: "介绍如何取消应用版本的发布。"
weight: 08
---
:ks_permission: **应用商店管理**
:ks_navigation: **应用**
本节介绍如何取消发布应用版本。
应用模板上架后,若取消发布其中的应用版本,该版本将被从应用商店中移除。若应用模板中的应用版本均为**取消发布**状态,该应用模板将自动下架。
应用版本取消发布后,应用商店管理员和企业空间成员可以删除该应用版本。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-openDetailsPage.adoc[]
+
. 在应用模板详情页面右侧的**版本**页签,点击需要操作的应用版本,在展开的区域点击**取消发布**,然后在弹出的对话框中点击**确定**。

View File

@ -0,0 +1,41 @@
---
title: "删除应用版本"
description: "介绍如何删除应用版本。"
weight: 08
---
:ks_permission: **应用商店管理**
:ks_navigation: **应用**
本节介绍如何删除应用商店中的应用版本。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-openDetailsPage.adoc[]
+
. 在应用模板详情页面右侧的**版本**页签,点击需要操作的应用版本,在展开的区域点击**删除**,然后在弹出的对话框中点击**确定**。

View File

@ -0,0 +1,45 @@
---
title: "下架应用模板"
keywords: "Kubernetes, {ks_product}, 应用商店管理, 应用, 下架应用模板"
description: "介绍如何下架应用模板。"
weight: 10
---
:ks_permission: **应用商店管理**
:ks_navigation: **应用**
本节介绍如何下架应用模板。
应用模板下架后,应用模板及其中所有的应用版本将被从应用商店移除,同时应用商店管理员和企业空间成员可以删除整个应用模板或其中的某一个应用版本。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-oper-openDetailsPage.adoc[]
+
. 在应用模板详情页面左上角点击**下架**,然后在弹出的对话框中点击**确定**。

View File

@ -0,0 +1,37 @@
---
title: "删除应用模板"
description: "介绍如何删除应用模板。"
weight: 12
---
:ks_permission: **应用商店管理**
:ks_navigation: **应用**
本节介绍如何删除应用商店中的应用模板。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
. 在需要编辑的应用模板右侧点击image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],然后在下拉列表中选择**删除**。
. 在**删除应用模板**对话框,输入应用模板的名称,然后点击**确定**。

View File

@ -0,0 +1,10 @@
---
title: "应用"
keywords: "Kubernetes, {ks_product}, 平台管理, 应用商店管理, 应用"
description: "介绍如何管理应用商店中的应用。"
weight: 01
layout: "second"
---
本节介绍如何管理应用商店中的应用模板。您可以查看、编辑应用的信息,并上架或下架应用。

View File

@ -0,0 +1,56 @@
---
title: "管理应用分类"
keywords: "Kubernetes, {ks_product}, 应用商店管理, 应用分类, 管理应用分类"
description: "介绍如何创建、编辑和删除应用分类。"
weight: 01
---
:ks_permission: **应用商店管理**
:ks_navigation: **应用分类**
本节介绍如何创建、编辑和删除应用分类。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
. 在**应用分类**页面,根据需要创建、编辑或删除应用分类。
+
====
* 在应用分类列表右上角点击image:/images/ks-qkcp/zh/icons/add-light.svg[add,18,18],在弹出的对话框设置应用分类的名称和图标,然后点击**确定**可创建应用分类。
* 在已有的应用分类右侧点击image:/images/ks-qkcp/zh/icons/pen-light.svg[pen,18,18],可编辑应用分类名称和图标。
* 在已有的应用分类右侧点击image:/images/ks-qkcp/zh/icons/trash-light.svg[trash-light,18,18],然后在弹出的对话框中点击**确定**可删除应用分类。
+
--
// Note
include::../../../../../../_ks_components/admonitions/note.adoc[]
删除应用分类前,您需要先将分类中的应用分配到其他分类或设置为**未分类**。
include::../../../../../../_ks_components/admonitions/admonEnd.adoc[]
--
====

View File

@ -0,0 +1,42 @@
---
title: "设置应用所属的分类"
keywords: "Kubernetes, {ks_product}, 应用商店管理, 应用分类, 设置应用所属的分类"
description: "介绍如何设置应用的分类。"
weight: 02
---
:ks_permission: **应用商店管理**
:ks_navigation: **应用分类**
本节介绍如何设置应用所属的分类。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
. 在应用模板列表中,选择需要操作的应用模板左侧的复选框,然后在列表上方点击**更改分类**。
. 在**更改分类**对话框,设置应用的分类,然后点击**确定**。

View File

@ -0,0 +1,13 @@
---
title: "应用分类"
keywords: "Kubernetes, {ks_product}, 平台管理, 应用商店管理, 应用分类"
description: "介绍如何管理应用分类。"
weight: 02
layout: "second"
---
本节介绍如何管理应用分类。
您可以根据需要将应用模板分配到一个分类中以便于管理。

View File

@ -0,0 +1,53 @@
---
title: "审核应用版本"
keywords: "Kubernetes, {ks_product}, 应用商店, 应用审核, 审核应用版本"
description: "介绍如何审核提交到应用商店的应用版本。"
weight: 01
---
:ks_navigation: **应用审核**
:ks_permission: **应用商店管理**
本节介绍如何审核提交到应用商店的应用版本。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
* 企业空间成员已提交应用版本并且应用版本尚未被审核。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
. 在**新提交**页签,点击需要审核的应用版本的名称。
. 在**应用详情**区域,查看应用的相关信息,然后根据需要点击**拒绝**或**批准**。
+
--
// Note
include::../../../../../../_ks_components/admonitions/note.adoc[]
* 如果点击**拒绝**,您需要在**拒绝原因**对话框进一步输入拒绝应用发布的原因,然后点击**确定**。
* 应用版本审核通过后,还需要应用商店管理员将其上架,才能将应用版本发布到应用商店。
include::../../../../../../_ks_components/admonitions/admonEnd.adoc[]
--

View File

@ -0,0 +1,76 @@
---
title: "查看应用版本审核记录"
keywords: "Kubernetes, {ks_product}, 应用商店, 应用审核, 查看应用版本审核记录"
description: "介绍如何查看应用版本审核记录。"
weight: 02
---
:ks_menu: **平台管理 > 应用商店管理**
:ks_navigation: **应用审核**
:ks_permission: **应用商店管理**
本节介绍如何查看应用版本审核记录。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
. 在**应用审核**页面,点击**新提交**、**已完成**或**全部**页签,查看应用版本的审核记录。
+
====
* **应用审核**页面提供以下信息:
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
|名称
|应用版本名称、图标、Helm Chart 版本。
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-workspace.adoc[]
|提交者
|提交应用版本的用户。
|状态
|应用版本当前的审核状态。
* **待审核**:企业空间成员已提交应用版本,应用商店管理员尚未进行审核。
* **已发布**:应用商店管理员已批准应用发布。
* **已拒绝**:应用商店管理员已拒绝应用发布。
include::../../../../../_custom/workspaceManagement/appTemplates/appTemplates-para-versionUpdateTime.adoc[]
|===
--
* 在列表上方点击搜索框并输入关键字,可搜索名称包含特定关键字的应用版本。
include::../../../../../../_ks_components/oper-refreshListData.adoc[]
include::../../../../../../_ks_components/oper-customizeColumns.adoc[]
====

View File

@ -0,0 +1,13 @@
---
title: "应用审核"
keywords: "Kubernetes, {ks_product}, 平台管理, 应用商店管理, 应用审核"
description: "介绍如何审校提交到应用商店的应用版本。"
weight: 03
layout: "second"
---
本节介绍如何对企业空间成员提交的应用模板进行审核。
企业空间成员可以在创建应用模板后将应用模板提交到应用商店,由平台级别具有**应用管理**权限的用户对应用模板进行审核。应用模板审核通过后可以上架到应用商店。

View File

@ -0,0 +1,48 @@
---
title: "添加应用仓库"
keywords: "Kubernetes, {ks_product}, 平台, 应用仓库, 添加应用仓库"
description: "介绍如何添加应用仓库。"
weight: 01
---
:ks_permission: **应用商店管理**
:ks_navigation: **应用仓库**
本节介绍如何为{ks_product_both}平台添加应用仓库。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
* 已提前创建 Helm Chart 仓库。有关如何创建 Helm Chart 仓库,请参阅 link:https://helm.sh/zh/docs/topics/chart_repository/[Helm 官方文档]。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
. 在页面点击**添加**。
. 在**添加应用仓库**对话框,设置应用仓库的参数,然后点击**确定**。
+
--
include::../../../../../_custom/workspaceManagement/appRepositories/appRepositories-para-createAppRepository.adoc[]
应用仓库创建完成后将显示在应用仓库列表中。
--

View File

@ -0,0 +1,69 @@
---
title: "查看应用仓库列表"
keywords: "Kubernetes, {ks_product}, 企业空间, 应用仓库, 查看应用仓库列表"
description: "介绍如何查看应用仓库列表。"
weight: 02
---
:ks_permission: **应用商店管理**
:ks_navigation: **应用仓库**
本节介绍如何查看应用仓库列表。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
====
* 应用仓库列表提供以下信息:
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
|名称
|应用仓库的名称和描述信息。
|状态
|应用仓库当前的状态。
* **成功**:应用仓库已添加并同步成功。
* **同步中**:应用仓库正在与 Helm Chart 仓库同步中。
* **不同步**:同步间隔时间设置为 0 时,应用仓库不与 Helm Chart 仓库同步。
* **失败**:应用仓库与 Helm Chart 仓库同步失败。
|URL
|Helm Chart 仓库的 URL。
|===
--
* 在列表上方点击搜索框并输入关键字,可搜索名称包含特定关键字的应用仓库。
include::../../../../../../_ks_components/oper-refreshListData.adoc[]
include::../../../../../../_ks_components/oper-customizeColumns.adoc[]
====

View File

@ -0,0 +1,44 @@
---
title: "编辑应用仓库"
keywords: "Kubernetes, {ks_product}, 企业空间, 应用仓库, 编辑应用仓库"
description: "介绍如何编辑应用仓库。"
weight: 03
---
:ks_permission: **应用商店管理**
:ks_navigation: **应用仓库**
本节介绍如何编辑应用仓库。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
. 在需要编辑的应用仓库右侧点击image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],然后在下拉列表中选择**编辑**。
. 在**编辑应用仓库**对话框,设置应用仓库的参数,然后点击**确定**。
+
--
include::../../../../../_custom/workspaceManagement/appRepositories/appRepositories-para-createAppRepository.adoc[]
--

View File

@ -0,0 +1,47 @@
---
title: "删除应用仓库"
keywords: "Kubernetes, {ks_product}, 企业空间, 应用仓库, 删除应用仓库"
description: "介绍如何删除应用仓库。"
weight: 05
---
:ks_permission: **应用商店管理**
:ks_navigation: **应用仓库**
本节介绍如何删除应用仓库。
// Warning
include::../../../../../../_ks_components/admonitions/warning.adoc[]
应用仓库删除后,用户将不能从应用仓库安装应用,请谨慎执行此操作。
include::../../../../../../_ks_components/admonitions/admonEnd.adoc[]
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
. 在需要删除的应用仓库右侧点击image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],然后在下拉列表中选择**删除**。
. 在**删除应用仓库**对话框,输入应用仓库的名称,然后点击**确定**。

View File

@ -0,0 +1,13 @@
---
title: "应用仓库"
keywords: "Kubernetes, {ks_product}, 企业空间, 应用管理, 应用仓库"
description: "介绍如何添加和管理应用仓库以部署和管理应用。"
weight: 04
layout: "second"
---
本节介绍如何管理{ks_product_both}平台的应用仓库。
将 Helm Chart 仓库作为应用仓库添加到{ks_product_both}平台,从而在所有项目中安装应用仓库中的应用。有关如何创建 Helm Chart 仓库,请参阅 link:https://helm.sh/zh/docs/topics/chart_repository/[Helm 官方文档]。

View File

@ -0,0 +1,70 @@
---
title: "查看应用列表"
description: "介绍如何查看已部署的应用列表。"
weight: 01
---
:ks_permission: **应用商店管理**
:ks_navigation: **部署管理**
本节介绍如何查看已部署的应用列表。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
====
* 应用列表提供以下信息:
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
|名称
|应用的名称。
include::../../../../../_custom/projectManagement/apps/apps-para-status_v4.adoc[]
|应用类型
|应用模板的类型,如 **helm 应用**或 **yaml 应用**。
|应用模板
|创建应用所使用的应用模板。仅对基于模板的应用显示。
|版本
|应用的版本号。
* 对于基于模板的应用,显示 Helm Chart 的版本。
// * 对于自制应用,显示用户自定义的版本号。
|更新时间
|应用的更新时间。
|===
--
* 在列表上方点击搜索框并输入关键字,可按名称搜索应用。
include::../../../../../../_ks_components/oper-refreshListData.adoc[]
include::../../../../../../_ks_components/oper-customizeColumns.adoc[]
====

View File

@ -0,0 +1,83 @@
---
title: "查看应用详情"
description: "介绍如何查看应用详情。"
weight: 02
---
:ks_permission: **应用商店管理**
:ks_navigation: **部署管理**
本节介绍如何查看已部署应用的详情。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
. 在**部署管理**页面,点击一个应用的名称打开其详情页面。
. 在应用详情页面左侧的**属性**区域查看应用的资源属性。
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
|集群
|应用所属的集群。
|项目
|应用所属的项目。
include::../../../../../_custom/projectManagement/apps/apps-para-status_v4.adoc[]
|应用
|应用所使用的应用模板。
include::../../../../../_custom/projectManagement/apps/apps-para-details2.adoc[]
|===
--
+
include::../../../../../_custom/projectManagement/apps/apps-oper-viewResourceStatus_v4.adoc[]
+
. 在应用详情页面右侧点击**应用模板**查看应用模板的信息。
+
--
* 点击**应用描述**可查看应用的介绍信息。
* 点击 **Chart 文件**可查看 Helm Chart 压缩包中的文件。在 **Chart 文件**右侧点击下拉列表可选择需要查看的文件。点击image:/images/ks-qkcp/zh/icons/download-dark-white.svg[download,18,18]可将文件下载到本地。
--
. 在应用详情页面右侧点击**应用设置**查看应用的设置信息。
+
--
// Note
include::../../../../../../_ks_components/admonitions/note.adoc[]
应用的默认设置保存在 Helm Chart 压缩包中的 **values.yaml** 文件中。**应用设置**页面显示的是用户在安装应用时自定义的设置。
include::../../../../../../_ks_components/admonitions/admonEnd.adoc[]
--

View File

@ -0,0 +1,39 @@
---
title: "编辑应用信息"
description: "介绍如何编辑应用信息。"
weight: 04
---
:ks_permission: **应用商店管理**
:ks_navigation: **部署管理**
本节介绍如何编辑已部署应用的信息。
您可以编辑应用的别名和描述。{ks_product_right}不支持编辑已部署应用的名称。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
. 在需要编辑的应用右侧点击image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],然后在下拉列表中选择**编辑信息**。
. 在**编辑信息**对话框设置应用的别名和描述,然后点击**确定**。

View File

@ -0,0 +1,38 @@
---
title: "删除应用"
description: "介绍如何删除已部署的应用实例。"
weight: 06
---
:ks_permission: **应用商店管理**
:ks_navigation: **部署管理**
本节介绍如何删除已部署的应用实例。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
. 在需要删除的应用右侧点击image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],然后在下拉列表中选择**删除**。
. 在**删除应用**对话框输入应用名称,然后点击**确定**。

View File

@ -0,0 +1,71 @@
---
title: "从应用商店部署应用"
description: "介绍如何从应用商店部署应用。"
weight: 08
---
:ks_permission: **应用商店管理**
:ks_navigation: **部署管理**
本节介绍如何在应用商店管理页面从应用商店部署应用。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../../../_ks_components/oper-clickCreate.adoc[]
+
. 在**创建应用**对话框点击**从应用商店**。
. 在应用商店中,点击需要使用的应用模板,然后在右上角点击**部署**。
+
--
// Note
include::../../../../../../_ks_components/admonitions/note.adoc[]
如果弹出**部署须知**对话框,请仔细阅读相关内容,然后点击**同意**。
include::../../../../../../_ks_components/admonitions/admonEnd.adoc[]
--
. 在弹出的**位置**对话框,选择应用的安装位置,然后点击**确定**。
+
include::../../../../../_custom/projectManagement/apps/apps-oper-installApp.adoc[]
+
--
// Note
include::../../../../../../_ks_components/admonitions/note.adoc[]
应用商店中的应用由具有相关权限的企业空间成员发布或由第三方提供。有关应用功能参数的更多信息,请联系相关企业空间成员或应用的提供方。
include::../../../../../../_ks_components/admonitions/admonEnd.adoc[]
应用创建完成后将显示在应用列表中。
--

View File

@ -0,0 +1,70 @@
---
title: "从应用模板部署应用"
keywords: "Kubernetes, {ks_product}, 项目管理, 应用, 从应用模板安装应用"
description: "介绍如何从应用模板安装应用。"
weight: 10
---
:ks_permission: **应用商店管理**
:ks_navigation: **部署管理**
本节介绍如何在应用商店管理页面从应用模板部署应用。
== 前提条件
:relfileprefix: ../../../../../
* {empty}
include::../../../../../_custom/platformManagement/platformManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 应用商店管理**扩展组件。
== 操作步骤
include::../../../../../_custom/platformManagement/platformManagement-oper-logIn.adoc[]
. 在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**。
+
include::../../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../../../_ks_components/oper-clickCreate.adoc[]
+
. 在**创建应用**对话框点击**从应用模板**。
. 在**应用模板**页面,点击**当前企业空间**下拉列表,选择**当前企业空间**或一个应用仓库。
. 点击需要使用的应用模板,然后点击**安装**。
+
--
// Note
include::../../../../../../_ks_components/admonitions/note.adoc[]
应用模板由具有相关权限的企业空间成员创建,应用仓库由应用商店管理员创建。
有关更多信息请参阅link:../../../02-app-management/01-app-templates/01-create-an-app-template/[创建应用模板]和link:../../../03-app-store-management/04-app-repositories/01-add-an-app-repository/[添加应用仓库]。
include::../../../../../../_ks_components/admonitions/admonEnd.adoc[]
--
+
include::../../../../../_custom/projectManagement/apps/apps-oper-installApp.adoc[]
+
--
// Note
include::../../../../../../_ks_components/admonitions/note.adoc[]
有关应用功能参数的更多信息,请联系相关企业空间成员或应用的提供方。
include::../../../../../../_ks_components/admonitions/admonEnd.adoc[]
应用创建完成后将显示在应用列表中。
--

View File

@ -0,0 +1,11 @@
---
title: "部署管理"
keywords: "Kubernetes, {ks_product}, 平台管理, 应用, 应用管理, 应用部署"
description: "介绍如何管理所有已部署的应用实例,以及如何直接部署应用到项目。"
weight: 05
layout: "second"
---
本节介绍如何管理{ks_product_both}平台中所有已部署的应用实例,以及如何直接部署应用到项目。

View File

@ -0,0 +1,17 @@
---
title: "应用商店管理"
keywords: "Kubernetes, {ks_product}, 平台管理, 应用商店管理"
description: "介绍如何管理应用商店。"
weight: 03
layout: "second"
---
本节介绍如何管理应用商店。
应用商店提供了基于 Helm Chart 的应用模板,{ks_product_right}平台所有项目的成员都可以访问应用商店。
应用商店管理员可以对应用商店中的应用模板进行分类、审核、上架、下架等操作,管理平台的应用仓库和所有已部署的应用实例,并直接部署应用到项目。
安装“KubeSphere 应用商店管理”扩展组件后在页面右上角点击image:/images/ks-qkcp/zh/icons/grid.svg[grid,18,18]图标,选择**应用商店管理**,进入应用商店的管理页面。

View File

@ -0,0 +1,18 @@
---
title: "KubeSphere 应用商店管理"
weight: 02
layout: "second"
---
本节介绍如何使用“KubeSphere 应用商店管理”扩展组件。
安装“KubeSphere 应用商店管理”扩展组件后,企业空间左侧导航栏的**应⽤管理**菜单下将显⽰**应用模板**选项,页面右上角的扩展组件快捷入口中将显⽰**应⽤商店管理**选项。
使用该扩展组件:
- 企业空间管理员可以管理应用模板,提交应用模板中定义的应用到应用商店。待应用商店管理员审批通过并上架后,即可发布应用程序到应用商店,供{ks_product_both}平台的所有项目安装该应用。
- 应用商店管理员可以对应用商店中的应用模板进行分类、审核、上架、下架等操作,管理平台的应用仓库和所有已部署的应用实例,并直接部署应用到项目。

View File

@ -0,0 +1,66 @@
---
title: "创建自制应用"
keywords: "Kubernetes, {ks_product}, 项目管理, 应用, 创建自制应用"
description: "介绍如何创建自制应用。"
weight: 03
---
:ks_permission: ** Service Mesh 管理**
:ks_navigation: **服务网格 > 自制应用**
本节介绍如何创建自制应用。
include::../../../../_custom/projectManagement/apps/apps-compose-description.adoc[]
== 前提条件
:relfileprefix: ../../../../
* {empty}
include::../../../../_custom/projectManagement/projectManagement-prer-requiredPermission_new.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 服务网格**扩展组件。
== 操作步骤
include::../../../../_custom/projectManagement/projectManagement-oper-openProjectPage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../../_ks_components/oper-clickCreate.adoc[]
. 在**基本信息**页签,设置应用的基本信息,然后点击**下一步**。
+
--
include::../../../../_custom/projectManagement/apps/apps-basic-para.adoc[]
--
. 在**服务设置**页签,点击**创建服务**,选择**有状态服务**或**无状态服务**为应用创建服务,然后点击**下一步**。
+
--
include::../../../../_custom/clusterManagement/services/services-para-statelessStatefulExternal.adoc[]
ifeval::["{file_output_type}" == "html"]
有关**有状态服务**和**无状态服务**的参数设置请参阅link:../../../../09-project-management/03-application-workloads/02-services/01-create-a-service/01-create-a-stateful-or-stateless-service/#_参数描述[创建有状态服务或无状态服务]。
endif::[]
ifeval::["{file_output_type}" == "pdf"]
有关**有状态服务**和**无状态服务**的参数设置,请参阅《{ks_product_right}项目管理指南》的“创建有状态服务或无状态服务”章节。
endif::[]
--
. 在**路由设置**页签,点击**添加路由规则**为应用创建路由规则,然后点击**创建**。
+
--
include::../../../../_custom/clusterManagement/routes/routes-para-routingRules.adoc[]
应用创建完成后将显示在**自制应用**页面。
--

View File

@ -0,0 +1,68 @@
---
title: "查看自制应用列表"
keywords: "Kubernetes, {ks_product}, 项目管理, 应用, 查看应用列表"
description: "介绍如何查看应用列表。"
weight: 04
---
:ks_permission: ** Service Mesh 查看**
:ks_navigation: **服务网格 > 自制应用**
本节介绍如何查看自制应用列表。
== 前提条件
:relfileprefix: ../../../../
include::../../../../_custom/projectManagement/projectManagement-prer-requiredPermission_new.adoc[]
:relfileprefix: ./
== 操作步骤
include::../../../../_custom/projectManagement/projectManagement-oper-openProjectPage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
. 在**自制应用**页面,查看应用列表。
+
====
* 应用列表提供以下信息:
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
|名称
|应用的名称。
include::../../../../_custom/projectManagement/apps/apps-para-status_v4.adoc[]
|版本
|应用的版本号。
// * 对于基于模板的应用,显示 Helm Chart 的版本。
* 对于自制应用,显示用户自定义的版本号。
|创建时间
|应用的创建时间。
|===
--
* 在列表上方点击搜索框并输入关键字,可按名称搜索应用。
include::../../../../../_ks_components/oper-refreshListData.adoc[]
include::../../../../../_ks_components/oper-customizeColumns.adoc[]
====

View File

@ -0,0 +1,124 @@
---
title: "查看自制应用详情"
keywords: "Kubernetes, {ks_product}, 项目管理, 应用, 查看自制应用详情"
description: "介绍如何查看自制应用详情。"
weight: 05
---
:ks_permission: ** Service Mesh 查看**
:ks_navigation: **服务网格 > 自制应用**
本节介绍如何查看自制应用详情。
== 前提条件
:relfileprefix: ../../../../
include::../../../../_custom/projectManagement/projectManagement-prer-requiredPermission_new.adoc[]
:relfileprefix: ./
== 操作步骤
include::../../../../_custom/projectManagement/projectManagement-oper-openProjectPage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
. 在**自制应用**页面,点击一个应用的名称打开其详情页面。
. 在应用详情页面左侧的**属性**区域查看应用的资源属性。
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
include::../../../../_custom/projectManagement/apps/apps-para-details1.adoc[]
include::../../../../_custom/projectManagement/apps/apps-para-details2.adoc[]
|应用治理
|应用是否已启用应用治理。应用治理启用后,您可以使用流量监控、灰度发布和链路追踪功能。
|===
--
+
include::../../../../_custom/projectManagement/apps/apps-oper-viewResourceStatus.adoc[]
+
. 在应用详情页面右侧点击**流量监控**查看应用的流量信息。
+
--
点击图形面板中的服务,在页面右侧,查看服务的流量监控信息、相关的容器组信息,并进行**流量管理**。
[%header,cols="1a,4a"]
|===
|参数 |描述
|流量策略 > 负载均衡
|负载均衡算法
* **轮询**:将客户端请求轮流发送给各个后端。
* **最少请求**:随机选择两个健康的后端,并将客户端请求发送给请求数较少的后端。
* **随机**:将客户端请求发送给一个随机的健康后端。
* **透传**:将连接直接转发给调用者请求的原始 IP 地址,而不进行任何形式的负载均衡。用于高级配置,请谨慎使用。
|流量策略 > 会话保持
|
根据特定的标识(例如 HTTP header、Cookie、查询参数等将请求映射到后端服务器以实现请求的均衡分发和负载分担。
* **基于 HTTP Header 哈希**:基于特定的 HTTP header 进行哈希。
* **基于 HTTP Cookie 哈希**:基于 HTTP cookie 进行哈希。
* **基于 HTTP 查询参数哈希**:基于特定的 HTTP 查询参数进行哈希。
* **基于源 IP 地址哈希**:基于源 IP 地址进行哈希。适用于 TCP 和 HTTP 连接。
* **基于 ring/modulo 哈希**ring/modulo 哈希负载均衡器使用一致性哈希算法对后端主机进行哈希。
* **基于 Maglev 哈希**Maglev 哈希负载均衡器使用一致性哈希算法对后端主机进行哈希。
有关更多信息请参阅link:https://istio.io/v1.16/zh/docs/reference/config/networking/destination-rule/#LoadBalancerSettings-ConsistentHashLB[此文档]。
|连接池
|为应用程序创建固定数量的连接对象, 并将其存储在一个连接池中供重复使用。每次请求都从连接池中获取连接对象,并在使用后将连接对象返还到连接池。
启用后,需设置最大连接数、每个连接最大请求数、最大重试次数、连接超时、最大请求数量、最大等待请求数量。
|熔断器
|如果服务无法访问并且符合指定的条件, 熔断器会将服务标记为不可用,并在指定时间范围内直接向返回客户端错误响应。
启用后,需设置连续 5XX 错误数量、检查间隔(秒)、最大排除比例(%)、排除时间(秒)。
|===
--
. 在应用详情页面右侧点击**灰度发布**查看应用的灰度发布信息。有关更多信息请参阅link:../../02-grayscale-release/[灰度发布]。
+
--
// Note
include::../../../../../_ks_components/admonitions/note.adoc[]
如需使用**流量监控**和**灰度发布**功能您需要在创建自制应用时启用应用治理功能。有关更多信息请参阅link:../03-manually-compose-an-app/[创建自制应用]。
include::../../../../../_ks_components/admonitions/admonEnd.adoc[]
--
. 在应用详情页面右侧点击**链路追踪**查看应用请求链路信息。
+
--
// Note
include::../../../../../_ks_components/admonitions/note.adoc[]
* 如需使用**链路追踪**功能您需要在创建自制应用时启用应用治理功能。有关更多信息请参阅link:../03-manually-compose-an-app/[创建自制应用]。
* 同时需要启用项目网关,并为项目网关启用**链路追踪**功能。有关更多信息请参阅link:../../../12-gateway/01-project-gateway/01-enable-a-project-gateway[启用项目网关]。
include::../../../../../_ks_components/admonitions/admonEnd.adoc[]
--

View File

@ -0,0 +1,38 @@
---
title: "编辑自制应用信息"
keywords: "Kubernetes, {ks_product}, 项目管理, 应用负载, 应用, 编辑应用信息"
description: "介绍如何编辑应用信息。"
weight: 06
---
:ks_permission: ** Service Mesh 管理**
:ks_navigation: **服务网格 > 自制应用**
本节介绍如何编辑自制应用信息。
您可以编辑应用的别名和描述。{ks_product_right}不支持编辑已创建应用的名称。
== 前提条件
:relfileprefix: ../../../../
include::../../../../_custom/projectManagement/projectManagement-prer-requiredPermission_new.adoc[]
:relfileprefix: ./
== 操作步骤
include::../../../../_custom/projectManagement/projectManagement-oper-openProjectPage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../_custom/projectManagement/apps/apps-oper-editAppInformation.adoc[]

View File

@ -0,0 +1,72 @@
---
title: "为自制应用添加服务"
keywords: "Kubernetes, {ks_product}, 项目管理, 应用负载, 应用, 编辑应用设置"
description: "介绍如何为自制应用添加服务。"
weight: 07
---
:ks_permission: ** Service Mesh 管理**
:ks_navigation: **服务网格 > 自制应用**
本节介绍如何为自制应用添加有状态或无状态服务。
== 前提条件
:relfileprefix: ../../../../
include::../../../../_custom/projectManagement/projectManagement-prer-requiredPermission_new.adoc[]
:relfileprefix: ./
== 操作步骤
include::../../../../_custom/projectManagement/projectManagement-oper-openProjectPage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
. 在**自制应用**页面,点击一个应用的名称打开其详情页面。
. 在应用详情页面左上角选择**更多操作 > 添加服务**。
. 在**创建服务**对话框,根据需要选择**有状态服务**或**无状态服务**。
+
--
// Note
include::../../../../../_ks_components/admonitions/note.adoc[]
include::../../../../_custom/clusterManagement/services/services-para-statelessStatefulExternal.adoc[]
include::../../../../../_ks_components/admonitions/admonEnd.adoc[]
--
+
include::../../../../_custom/projectManagement/services/services-oper-setBasicInformation.adoc[]
+
. 在**容器组设置**页签,为服务后端工作负载管理的容器组设置副本数量、容器、更新策略、安全上下文、调度规则和元数据,然后点击**下一步**。
+
include::../../../../_custom/projectManagement/services/services-oper-setStorageAdvanced.adoc[]
+
--
ifeval::["{file_output_type}" == "html"]
有关**有状态服务**和**无状态服务**的参数设置请参阅link:../../../../09-project-management/03-application-workloads/02-services/01-create-a-service/01-create-a-stateful-or-stateless-service/#_参数描述[创建有状态服务或无状态服务]。
endif::[]
ifeval::["{file_output_type}" == "pdf"]
有关**有状态服务**和**无状态服务**的参数设置,请参阅《{ks_product_right}项目管理指南》的“创建有状态服务或无状态服务”章节。
endif::[]
--

View File

@ -0,0 +1,42 @@
---
title: "为自制应用添加应用路由"
keywords: "Kubernetes, {ks_product}, 项目管理, 应用负载, 应用, 编辑应用设置"
description: "介绍如何为自制应用添加应用路由。"
weight: 07
---
:ks_permission: ** Service Mesh 管理**
:ks_navigation: **服务网格 > 自制应用**
本节介绍如何为自制应用添加应用路由。
== 前提条件
:relfileprefix: ../../../../
include::../../../../_custom/projectManagement/projectManagement-prer-requiredPermission_new.adoc[]
:relfileprefix: ./
== 操作步骤
include::../../../../_custom/projectManagement/projectManagement-oper-openProjectPage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
. 在**自制应用**页面,点击一个应用的名称打开其详情页面。
. 在应用详情页面左上角选择**更多操作 > 添加应用路由**。
+
include::../../../../_custom/clusterManagement/routes/routes-oper-createARoute.adoc[]

View File

@ -0,0 +1,61 @@
---
title: "删除自制应用"
keywords: "Kubernetes, {ks_product}, 项目管理, 应用, 删除应用"
description: "介绍如何删除应用。"
weight: 10
---
:ks_permission: ** Service Mesh 管理**
:ks_navigation: **服务网格 > 自制应用**
本节介绍如何删除自制应用。
== 前提条件
:relfileprefix: ../../../../
* {empty}
include::../../../../_custom/projectManagement/projectManagement-prer-requiredPermission_new.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 服务网格**扩展组件。
== 删除单个应用
include::../../../../_custom/projectManagement/projectManagement-oper-openProjectPage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
. 在**自制应用**页面,查看应用列表。
. 在需要删除的应用右侧点击image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],然后在下拉列表中选择**删除**。
. 在**删除应用**对话框,输入应用的名称,然后点击**确定**。
== 批量删除应用
include::../../../../_custom/projectManagement/projectManagement-oper-openProjectPage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
. 在**自制应用**页面,查看应用列表。
. 选择需要删除的应用左侧的复选框,然后在应用列表上方点击**删除**。
. 在**批量删除应用**对话框,输入应用的名称,然后点击**确定**。
+
--
include::../../../../_custom/note-separateNamesByComma.adoc[]
--

View File

@ -0,0 +1,30 @@
---
title: "自制应用"
keywords: "Kubernetes, {ks_product}, 项目管理, 应用"
description: "介绍如何管理项目中安装的应用。"
weight: 01
layout: "second"
---
本节介绍如何管理自制应用。
include::../../../../_custom/projectManagement/apps/apps-types.adoc[]
ifeval::["{file_output_type}" == "html"]
[.admon.note,cols="a"]
|===
|说明
|有关基于模板的应用的更多信息请参阅link:../../../09-project-management/03-application-workloads/01-apps[应用]。
|===
endif::[]
ifeval::["{file_output_type}" == "pdf"]
[.admon.note,cols="a"]
|===
|说明
|有关基于模板的应用的更多信息,请参阅《{ks_product_right}项目管理指南》的“应用负载 > 应用”章节。
|===
endif::[]

View File

@ -0,0 +1,201 @@
---
title: "创建灰度发布任务"
keywords: "Kubernetes, {ks_product}, 项目管理, 灰度发布, 创建灰度发布任务"
description: "介绍如何创建灰度发布任务。"
weight: 01
---
:ks_permission: ** Service Mesh 管理**
:ks_navigation: **服务网格 > 灰度发布**
本节介绍如何创建灰度发布任务。
== 前提条件
:relfileprefix: ../../../../
* {empty}
include::../../../../_custom/projectManagement/projectManagement-prer-requiredPermission_new.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 服务网格**扩展组件。
* 提前准备新版本的容器镜像并上传到容器镜像服务,同时确保存容器镜像服务与{ks_product_both}网络连接正常。
== 操作步骤
请参阅link:#_参数描述[参数描述]设置灰度发布任务的参数。
include::../../../../_custom/projectManagement/projectManagement-oper-openProjectPage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
. 根据需要创建灰度发布任务类型,将光标悬停在**蓝绿部署**、**金丝雀发布**或**流量镜像**区域,然后点击**创建**。
. 在**基本信息**页签,设置灰度发布任务的名称,然后点击**下一步**。
. 在**服务设置**页签,选择需要进行灰度发布的应用和服务,然后点击**下一步**。
. 在**新版本设置**页签,设置新版本的服务版本号、容器组副本数量和容器,然后点击**下一步**。
. 在**策略设置**页签,设置灰度发布任务的流量转发策略,然后点击**创建**。
+
--
灰度发布任务创建完成后将显示在**灰度发布**页面的**发布任务**页签。
--
== 参数描述
以下介绍如何设置灰度发布任务的参数。
* 基本信息
+
--
设置任务的名称。名称只能包含小写字母、数字和连字符(-),必须以小写字母或数字开头和结尾,最长 253 个字符。
--
* 服务设置
+
--
选择需要进行灰度发布的自制应用和服务。
* 点击下拉列表选择一个自制应用。
* 在需要进行灰度发布的服务右侧点击**选择**。
// Note
include::../../../../../_ks_components/admonitions/note.adoc[]
灰度发布仅支持自制应用,不支持基于模板的应用。
include::../../../../../_ks_components/admonitions/admonEnd.adoc[]
--
* 新版本设置
+
--
设置新版本的服务版本号、容器组副本数量和容器。
[%header,cols="1a,4a"]
|===
|参数 |描述
|新版本号
|新版本的服务版本号。新版本号只能包含小写字母和数字, 最长 16 个字符。
|副本
|
新版本的容器组副本数量。点击image:/images/ks-qkcp/zh/icons/chevron-up.svg[chevron-up,18,18]/image:/images/ks-qkcp/zh/icons/chevron-down.svg[chevron-down,18,18]可增加/减少容器组副本的数量。
|添加容器
|
include::../../../../_custom/clusterManagement/workloads/createWorkload/workloads-para-addContainer.adoc[]
* 直接在文本框中输入容器镜像的 URL 可替换旧版本的容器镜像,同时保持其他容器设置不变。
|===
--
* 新版本设置 > 添加容器 > 容器设置
+
--
include::../../../../_custom/clusterManagement/workloads/createWorkload/workloads-desc-setImageNameTypeResource.adoc[]
[%header,cols="1a,4a"]
|===
|参数 |描述
include::../../../../_custom/clusterManagement/workloads/createWorkload/workloads-para-containerImage.adoc[]
include::../../../../_custom/clusterManagement/workloads/createWorkload/workloads-para-containerName.adoc[]
include::../../../../_custom/clusterManagement/workloads/createWorkload/workloads-para-containerType.adoc[]
|CPU 预留
|为容器预留的 CPU 资源,单位为核。
|CPU 上限
|允许容器使用的 CPU 资源上限,单位为核。
|内存预留
|为容器预留的内存资源,单位为 MiB。
|内存上限
|允许容器使用的内存资源上限,单位为 MiB。
|===
--
* 新版本设置 > 添加容器 > 端口设置
+
--
include::../../../../_custom/clusterManagement/workloads/createWorkload/workloads-para-Port.adoc[]
--
* 新版本设置 > 添加容器 > 镜像拉取策略
+
--
include::../../../../_custom/clusterManagement/workloads/createWorkload/workloads-para-imagePullPolicy.adoc[]
--
* 新版本设置 > 添加容器 > 健康检查
+
--
include::../../../../_custom/clusterManagement/workloads/createWorkload/workloads-para-healthCheck.adoc[]
--
* 新版本设置 > 添加容器 > 健康检查 > 添加探针
+
--
include::../../../../_custom/clusterManagement/workloads/createWorkload/workloads-para-addProbe.adoc[]
--
* 新版本设置 > 添加容器 > 生命周期管理
+
--
include::../../../../_custom/clusterManagement/workloads/createWorkload/workloads-para-lifecycleManagement.adoc[]
--
* 新版本设置 > 添加容器 > 生命周期管理 > 添加动作
+
--
include::../../../../_custom/clusterManagement/workloads/createWorkload/workloads-para-addAction.adoc[]
--
* 新版本设置 > 添加容器 > 启动命令
+
--
include::../../../../_custom/clusterManagement/workloads/createWorkload/workloads-para-startCommand.adoc[]
--
* 新版本设置 > 添加容器 > 环境变量
+
--
include::../../../../_custom/clusterManagement/workloads/createWorkload/workloads-para-environmentVariables.adoc[]
--
* 新版本设置 > 添加容器 > 容器组安全上下文
+
--
include::../../../../_custom/clusterManagement/workloads/createWorkload/workloads-para-containerSecurityContext.adoc[]
--
* 新版本设置 > 添加容器 > 同步主机时区
+
--
include::../../../../_custom/clusterManagement/workloads/createWorkload/workloads-para-syncTimeZone.adoc[]
--
* 策略设置
+
====
设置灰度发布任务的业务流量转发策略。
include::../../../../_custom/projectManagement/grayscaleRelease/grayscaleRelease-para-strategySettings.adoc[]
====

View File

@ -0,0 +1,52 @@
---
title: "查看灰度发布任务列表"
keywords: "Kubernetes, {ks_product}, 项目管理, 灰度发布, 查看灰度发布任务列表"
description: "介绍如何查看灰度发布任务列表。"
weight: 02
---
:ks_permission: ** Service Mesh 查看**
:ks_navigation: **服务网格 > 灰度发布**
本节介绍如何查看灰度发布任务列表。
== 前提条件
:relfileprefix: ../../../../
* {empty}
include::../../../../_custom/projectManagement/projectManagement-prer-requiredPermission_new.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 服务网格**扩展组件。
== 操作步骤
include::../../../../_custom/projectManagement/projectManagement-oper-openProjectPage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
. 在**灰度发布**页面,点击**发布任务**打开灰度发布任务列表。
+
--
灰度发布任务列表提供以下信息:
[%header,cols="1a,4a"]
|===
|参数 |描述
|名称
|灰度发布任务的名称、应用、发布模式和服务。
|版本
|新旧版本的版本号和容器组副本数量。
include::../../../../_custom/projectManagement/grayscaleRelease/grayscaleRelease-para-trafficSuccessLatency.adoc[]
|===
--

View File

@ -0,0 +1,61 @@
---
title: "查看灰度发布任务详情"
keywords: "Kubernetes, {ks_product}, 项目管理, 灰度发布, 查看灰度发布任务详情"
description: "介绍如何查看灰度发布任务详情。"
weight: 03
---
:ks_permission: ** Service Mesh 查看**
:ks_navigation: **服务网格 > 灰度发布**
本节介绍如何查看灰度发布任务详情。
== 前提条件
:relfileprefix: ../../../../
* {empty}
include::../../../../_custom/projectManagement/projectManagement-prer-requiredPermission_new.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 服务网格**扩展组件。
== 操作步骤
include::../../../../_custom/projectManagement/projectManagement-oper-openProjectPage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../_custom/projectManagement/grayscaleRelease/grayscaleRelease-oper-openDetailsPage.adoc[]
+
--
灰度发布任务详情页面提供以下信息:
[%header,cols="1a,4a"]
|===
|参数 |描述
|名称
|灰度发布任务的名称和发布模式。
|版本
|新旧版本的容器组副本数量、容器组名称、CPU 用量和内存用量。
|流量分配
|
* 对于蓝绿部署,显示当前接收全部流量的服务版本。
* 对于金丝雀发布,显示新旧版本的流量接收比例。
* 对于流量镜像,显示旧版本接收新版本流量的相同副本。
include::../../../../_custom/projectManagement/grayscaleRelease/grayscaleRelease-para-trafficSuccessLatency.adoc[]
|===
--

View File

@ -0,0 +1,38 @@
---
title: "切换上线版本(蓝绿部署)"
keywords: "Kubernetes, {ks_product}, 项目管理, 灰度发布, 切换上线版本(蓝绿部署)"
description: "介绍如何为蓝绿部署任务切换上线版本。"
weight: 04
---
:ks_permission: ** Service Mesh 管理**
:ks_navigation: **服务网格 > 灰度发布**
本节介绍如何为蓝绿部署任务切换上线版本。
根据业务需要,您可以一键设置蓝绿部署任务中的新版本或旧版本立即接管全部业务流量。
== 前提条件
:relfileprefix: ../../../../
* {empty}
include::../../../../_custom/projectManagement/projectManagement-prer-requiredPermission_new.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 服务网格**扩展组件。
== 操作步骤
include::../../../../_custom/projectManagement/projectManagement-oper-openProjectPage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
. 在**灰度发布**页面,点击**发布任务**,然后点击一个蓝绿部署任务的名称打开其详情页面。
. 在**版本**区域在一个版本右上角点击image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],然后在下拉列表中选择**接管**可设置该版本立即接管全部业务流量。

View File

@ -0,0 +1,40 @@
---
title: "调整流量分配比例(金丝雀发布)"
keywords: "Kubernetes, {ks_product}, 项目管理, 灰度发布, 调整流量分配比例(金丝雀发布)"
description: "介绍如何为金丝雀发布任务调整流量分配比例。"
weight: 05
---
:ks_permission: ** Service Mesh 管理**
:ks_navigation: **服务网格 > 灰度发布**
本节介绍如何为金丝雀发布任务调整流量分配比例。
根据业务需要,您可以手动调整金丝雀发布任务中的新版本和旧版本接收业务流量的分配比例。
== 前提条件
:relfileprefix: ../../../../
* {empty}
include::../../../../_custom/projectManagement/projectManagement-prer-requiredPermission_new.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 服务网格**扩展组件。
== 操作步骤
include::../../../../_custom/projectManagement/projectManagement-oper-openProjectPage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
. 在**灰度发布**页面,点击**发布任务**,然后点击一个金丝雀发布任务的名称打开其详情页面。
. 在**流量分配**区域,拖动滑块调整新旧版本接收流量的比例,然后在弹出的对话框中点击**确定**。系统将按照设置的比例在新旧版本之间分配业务流量。
. (可选)在**版本**区域在一个版本右上角点击image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],然后在下拉列表中选择**接管**可设置该版本立即接管全部业务流量。

View File

@ -0,0 +1,56 @@
---
title: "编辑灰度发布任务设置"
keywords: "Kubernetes, {ks_product}, 项目管理, 灰度发布, 编辑灰度发布任务设置"
description: "介绍如何编辑灰度发布任务设置。"
weight: 06
---
:ks_permission: ** Service Mesh 管理**
:ks_navigation: **服务网格 > 灰度发布**
本节介绍如何编辑灰度发布任务设置。
== 前提条件
:relfileprefix: ../../../../
* {empty}
include::../../../../_custom/projectManagement/projectManagement-prer-requiredPermission_new.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 服务网格**扩展组件。
== 操作步骤
include::../../../../_custom/projectManagement/projectManagement-oper-openProjectPage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../_custom/projectManagement/grayscaleRelease/grayscaleRelease-oper-openDetailsPage.adoc[]
+
. 在**版本**区域在新版本右上角点击image:/images/ks-qkcp/zh/icons/more.svg[more,18,18],然后在下拉列表中选择**编辑**。
. 在**新版本设置**页签点击image:/images/ks-qkcp/zh/icons/chevron-up.svg[chevron-up,18,18]/image:/images/ks-qkcp/zh/icons/chevron-down.svg[chevron-down,18,18]可增加/减少容器组副本的数量。
+
--
// Note
include::../../../../../_ks_components/admonitions/note.adoc[]
灰度发布不支持修改新版本的版本号和容器镜像。
include::../../../../../_ks_components/admonitions/admonEnd.adoc[]
--
. 点击**策略设置**页签,设置灰度发布任务的流量转发策略,然后点击**确定**。
+
====
include::../../../../_custom/projectManagement/grayscaleRelease/grayscaleRelease-para-strategySettings.adoc[]
====

View File

@ -0,0 +1,52 @@
---
title: "删除灰度发布任务"
keywords: "Kubernetes, {ks_product}, 项目管理, 灰度发布, 删除灰度发布任务"
description: "介绍如何删除灰度发布任务。"
weight: 07
---
:ks_permission: ** Service Mesh 管理**
:ks_navigation: **服务网格 > 灰度发布**
本节介绍如何删除灰度发布任务。
// Warning
include::../../../../../_ks_components/admonitions/warning.adoc[]
只有在新旧版本之一已接管全部业务流量时才能删除灰度发布任务。灰度发布任务删除后,未接管业务流量的版本(服务、工作负载和容器组)也将被删除。
include::../../../../../_ks_components/admonitions/admonEnd.adoc[]
== 前提条件
:relfileprefix: ../../../../
* {empty}
include::../../../../_custom/projectManagement/projectManagement-prer-requiredPermission_new.adoc[]
:relfileprefix: ./
* {ks_product_right}平台需要安装并启用 **KubeSphere 服务网格**扩展组件。
* 新旧版本之一已接管全部业务流量。有关更多信息请参阅link:../04-switch-versions-blue-green-deployment/[切换上线版本(蓝绿部署)]和link:../05-adjust-traffic-distribution-ratio-canary-release/[调整流量分配比例(金丝雀发布)]。
== 操作步骤
include::../../../../_custom/projectManagement/projectManagement-oper-openProjectPage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../_custom/projectManagement/grayscaleRelease/grayscaleRelease-oper-openDetailsPage.adoc[]
+
. 在灰度发布详情页面右上角,点击**删除**。
+
--
系统将删除灰度发布任务,同时删除未接管业务流量的版本。
--

View File

@ -0,0 +1,27 @@
---
title: "灰度发布"
keywords: "Kubernetes, {ks_product}, 项目管理, 灰度发布"
description: "介绍如何管理灰度发布任务。"
weight: 02
layout: "second"
---
本节介绍如何使用灰度发布功能。
当容器的版本需要更新时,如果新版本未经充分测试而直接发布到生产环境,可能会给业务带来很大风险。使用灰度发布功能将生产环境的业务流量转发给测试中的新版本,从而在新版本正式发布前充分暴露并及时修复新版本可能存在的问题。
{ks_product_right}支持以下灰度发布模式:
* 蓝绿部署:将业务流量发送给新版本进行测试。如果新版本运行不正常,可立即将业务流量切换给旧版本。
* 金丝雀发布:将业务流量按一定比例分配给新版本和旧版本,在测试新版本的同时保证业务连续性。
* 流量镜像:将业务流量的副本发送给新版本进行测试,而不实际暴露新版本。
// Note
include::../../../../../_ks_components/admonitions/note.adoc[]
灰度发布仅支持自制应用,不支持基于模板的应用。
include::../../../../../_ks_components/admonitions/admonEnd.adoc[]

View File

@ -0,0 +1,25 @@
---
title: "KubeSphere 服务网格"
keywords: "Kubernetes, {ks_product}, 服务网格"
description: "介绍如何使用 KubeSphere 服务网格组件。"
weight: 03
layout: "second"
---
本节介绍如何使用“KubeSphere 服务网格”扩展组件。
“KubeSphere 服务网格”扩展组件用于启用{ks_product_both}平台的服务网格功能,基于开源项目 Istio 构建,将微服务治理和流量管理可视化。它拥有强大的工具包,包括熔断机制、蓝绿部署、金丝雀发布、流量镜像、链路追踪、可观测性和流量控制等。
// 服务网格支持代码无侵入的微服务治理帮助开发者快速上手Istio 的学习曲线也极大降低。其中,灰度发布策略为用户在不影响微服务之间通信的情况下测试和发布新的应用版本发挥了重要作用。
安装“KubeSphere 服务网格”扩展组件后,项⽬左侧导航栏将显⽰**服务网格**选项,支持创建自制应用、管理自制应用的灰度发布。
// ⾃制应⽤详情⻚⾯将显⽰**流量监控**、**灰度发布**和**链路追踪**⻚签。在创建自制应用时,启用应用治理可使用流量监控、灰度发布和链接追踪功能。
[.admon.attention,cols="a"]
|===
|注意
|
安装 KubeSphere 服务网格前,需要在扩展组件配置中设置可用的 Prometheus 服务和 OpenSearch 服务。有关组件配置的更多信息请参阅扩展中心“KubeSphere 服务网格”扩展组件的详情页说明。
|===

View File

@ -0,0 +1,40 @@
---
title: "登录并进入联邦项目"
keywords: "Kubernetes, {ks_product}, 项目管理, Web 控制台, 联邦项目"
description: "介绍如何登录并进入联邦项目。"
weight: 01
---
本节介绍如何登录{ks_product_left} Web 控制台并进入联邦项目。
== 前提条件
* {ks_product_right}平台需要安装并启用**联邦集群应用管理**扩展组件。
* 您需要获取联邦项目成员用户名和密码。
include::../../../../_custom/workspaceManagement/webConsole/webConsole-prer-logIn.adoc[]
== 操作步骤
include::../../../../_custom/workspaceManagement/webConsole/webConsole-oper-logIn.adoc[]
+
--
[.admon.note,cols="a"]
|===
|说明
|
include::../../../../_custom/workspaceManagement/webConsole/webConsole-note-firstLogin.adoc[]
|===
--
. 点击**企业空间管理**,然后点击一个企业空间的名称进入企业空间。
. 在左侧导航栏选择**项目**,然后点击**联邦项目**进入联邦项目列表页面。
. 在**联邦项目**页面,点击一个联邦项目的名称进入联邦项目。

View File

@ -0,0 +1,11 @@
---
title: "Web 控制台"
keywords: "Kubernetes, {ks_product}, 联邦项目, Web 控制台"
description: "介绍如何进入联邦项目。"
weight: 01
layout: "second"
---
本节介绍如何登录{ks_product_left} Web 控制台并进入联邦项目。

View File

@ -0,0 +1,57 @@
---
title: "创建联邦项目"
keywords: "Kuberentes, {ks_product}, 企业空间管理, 联邦项目, 创建联邦项目"
description: "介绍如何创建联邦项目。"
weight: 01
---
:ks_permission: **联邦项目管理**
:ks_navigation: **项目 > 联邦项目**
本节介绍如何创建联邦项目。
== 前提条件
* {ks_product_right}平台需要安装并启用**联邦集群应用管理**扩展组件。
:relfileprefix: ../../../../
* {empty}
include::../../../../_custom/workspaceManagement/workspaceManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
== 操作步骤
include::../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
include::../../../../../_ks_components/oper-clickCreate.adoc[]
+
. 在弹出的对话框,设置项目的参数,然后点击**确定**。
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
include::../../../../_custom/clusterManagement/projects/projects-para-name.adoc[]
include::../../../../_custom/clusterManagement/projects/projects-para-aliasDescription.adoc[]
|集群
|可供项目使用的集群。项目中的资源运行在此处选择的集群中。创建联邦项目时,可点击**添加**选择多个集群从而使项目中的资源运行不同的集群中。
|===
项目创建完成后,您可以邀请用户加入项目并在项目中部署业务。
--

View File

@ -0,0 +1,69 @@
---
title: "查看联邦项目列表"
keywords: "Kuberentes, {ks_product}, 企业空间管理, 联邦项目, 介绍如何查看项目列表"
description: "介绍如何查看项目列表。"
weight: 02
---
:ks_permission: **联邦项目查看**
:ks_navigation: **项目 > 联邦项目**
include::../../../../_custom/workspaceManagement/projects/projects-desc-viewProjectList.adoc[]
== 前提条件
* {ks_product_right}平台需要安装并启用**联邦集群应用管理**扩展组件。
:relfileprefix: ../../../../
* {empty}
include::../../../../_custom/workspaceManagement/workspaceManagement-prer-requiredPermission_v4.adoc[]
:relfileprefix: ./
== 操作步骤
include::../../../../_custom/workspaceManagement/workspaceManagement-oper-openWorkspacePage.adoc[]
+
include::../../../../../_ks_components/oper-navigate.adoc[]
+
====
* 项目列表提供以下信息:
+
--
[%header,cols="1a,4a"]
|===
|参数 |描述
|名称
|项目的名称和描述信息。
|状态
|项目当前所处的状态。
* **活跃**:项目状态正常。
* **删除中**:项目正在删除中。
|集群
|可供项目使用的集群。
|创建时间
|项目的创建时间。
|===
--
include::../../../../_custom/workspaceManagement/projects/projects-oper-searchForProjects.adoc[]
include::../../../../../_ks_components/oper-refreshListData.adoc[]
include::../../../../../_ks_components/oper-customizeColumns.adoc[]
* 在列表中点击一个项目的名称可打开项目管理页面。您可以在项目管理页面查看和管理项目中的资源。
====

Some files were not shown because too many files have changed in this diff Show More