1.4. 管理应用程序资源
通过控制台,您可以使用 Git 仓库、Helm 仓库和对象存储库创建应用程序。
重要: Git 频道可以与所有其他频道类型共享命名空间: Helm、对象存储和其他 Git 命名空间。
请参阅以下主题以开始管理应用程序:
1.4.1. 使用 Git 存储库管理应用程序
当您使用应用程序部署 Kubernetes 资源时,这些资源位于特定的存储库中。了解如何在以下流程中从 Git 存储库部署资源。如需了解更多有关应用程序模型的信息,请参阅应用程序模型和定义。
用户需要访问权限: 可以创建应用程序的用户角色。您只能执行分配了相关角色的操作。了解 基于角色的访问控制文档中的访问要求。
- 在控制台导航菜单中点 Applications 来查看列出的应用程序并创建新应用。
- 可选: 在选择要创建的应用程序类型后,您可以选择 YAML: On 在控制台上按照创建和编辑应用程序查看 YAML。请参阅后面的 YAML 示例。
从可以使用的存储库列表中选择 Git,并在正确的字段中输入值。按照控制台中的指南,根据您的输入查看 YAML 编辑器更改值。
备注:
- 如果选择了现有的 Git 存储库路径,则不需要指定连接信息(如果这是私有存储库)。连接信息是预先设置的,您不需要查看这些值。
- 如果输入了新的 Git 存储库路径,则可以选择性地输入 Git 连接信息(如果这是一个私有 Git 存储库)。
-
请注意协调选项。
merge
选项是默认选择,这代表要添加新字段,并在资源中更新现有字段。您可以选择replace
。使用replace
选项,现有资源被替换为 Git 源。当订阅协调率被设置为low
时,订阅的应用程序资源最多可能需要一小时才能完成协调。在单个应用程序视图的卡上,单击 Sync 以手动协调。如果设为off
,则永远不会协调。
-
设置任何可选的部署前和部署后的任务。如果您有要在订阅部署应用程序资源之前或之后运行的 Ansible Automation Platform 作业,则设置 Ansible Automation Platform secret。定义作业的 Ansible Automation Platform 任务必须放置在此存储库的
prehook
和posthook
文件夹中。 - 如果需要使用控制台添加凭证,可以点 Add credential。按照控制台中的指示进行操作。请参阅管理凭证概述。
- 点 Create。
- 您会被重定向到 Overiew 页,可以在其中查看详情和拓扑。
1.4.1.1. 更多示例
-
有关
root-subscription/
的示例,请参阅application-subscribe-all
。 -
有关指向同一仓库中其他文件夹的订阅示例,请参阅
subscribe-all
。 -
请参阅
nginx-apps
存储库中带有应用程序工件的common-managed
文件夹示例。 - 请参阅策略集合中的策略示例。
1.4.1.2. 使用 Git 删除订阅后保留部署的资源
使用 Git 存储库创建订阅时,您可以添加 do-not-delete
注解,以便在删除订阅后保留特定的部署资源。do-not-delete
注解仅适用于顶级部署资源。要添加 do-not-delete
注解,请完成以下步骤:
- 创建至少部署一个资源的订阅。
在您要保留的资源或资源中添加以下注解,即使您删除订阅:
apps.open-cluster-management.io/do-not-delete: 'true'
请参见以下示例:
apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: apps.open-cluster-management.io/do-not-delete: 'true' apps.open-cluster-management.io/hosting-subscription: sub-ns/subscription-example apps.open-cluster-management.io/reconcile-option: merge pv.kubernetes.io/bind-completed: "yes"
删除订阅后,带有 do-not-delete
注解的资源仍然存在,而其他资源也会被删除。
注: 使用 do-not-delete
注解绑定到命名空间来保持部署的资源。因此,在删除剩余的资源前,您无法删除命名空间。
1.4.2. 使用 Helm 仓库管理应用程序
当您使用应用程序部署 Kubernetes 资源时,这些资源位于特定的存储库中。了解如何在以下流程中从 Helm 仓库部署资源。如需了解更多有关应用程序模型的信息,请参阅应用程序模型和定义。
用户需要访问权限: 可以创建应用程序的用户角色。您只能执行分配了相关角色的操作。了解 基于角色的访问控制文档中的访问要求。
- 在控制台导航菜单中点 Applications 来查看列出的应用程序并创建新应用。
- 可选: 在选择要创建的应用程序类型后,您可以选择 YAML: On 在控制台上按照创建和编辑应用程序查看 YAML。请参阅后面的 YAML 示例。
- 从可以使用的存储库列表中选择 Helm,并在正确的字段中输入值。按照控制台中的指南,根据您的输入查看 YAML 编辑器更改值。
- 点 Create。
- 您会被重定向到 Overiew 页,可以在其中查看详情和拓扑。
1.4.2.1. YAML 示例
以下示例频道定义将 Helm 仓库抽象为频道:
注: 对于 Helm,Helm chart 中包含的所有 Kubernetes 资源都必须具有标签发行版本。{{ .Release.Name }}`
用于正确显示应用程序拓扑。
apiVersion: v1 kind: Namespace metadata: name: hub-repo --- apiVersion: apps.open-cluster-management.io/v1 kind: Channel metadata: name: helm namespace: hub-repo spec: pathname: [https://kubernetes-charts.storage.googleapis.com/] # URL points to a valid chart URL. type: HelmRepo
以下频道定义显示了 Helm 仓库频道的另一个示例:
apiVersion: apps.open-cluster-management.io/v1 kind: Channel metadata: name: predev-ch namespace: ns-ch labels: app: nginx-app-details spec: type: HelmRepo pathname: https://kubernetes-charts.storage.googleapis.com/
注: 要查看 REST API,使用 API。
1.4.2.2. 使用 Helm 删除订阅后保留部署的资源
Helm 提供了一个注解,用于在删除订阅后保留特定部署的资源。如需更多信息,请参阅 Tell Helm Not Uninstall a Resource。
注: 注解必须位于 Helm chart 中。
1.4.3. 使用对象存储存储库管理应用程序
当您使用应用程序部署 Kubernetes 资源时,这些资源位于特定的存储库中。如需了解更多有关应用程序模型的信息,请参阅应用程序模型和定义:
用户需要访问权限: 可以创建应用程序的用户角色。您只能执行分配了相关角色的操作。了解 基于角色的访问控制文档中的访问要求。
- 在控制台导航菜单中点 Applications 来查看列出的应用程序并创建新应用。
- 可选: 在选择要创建的应用程序类型后,您可以选择 YAML: On 在控制台上按照创建和编辑应用程序查看 YAML。请参阅后面的 YAML 示例。
- 从可以使用的存储库列表中选择 Object store,并在正确的字段中输入值。按照控制台中的指南,根据您的输入查看 YAML 编辑器更改值。
- 点 Create。
- 您会被重定向到 Overiew 页,可以在其中查看详情和拓扑。
1.4.3.1. YAML 示例
以下示例频道定义将对象存储抽象为频道:
apiVersion: apps.open-cluster-management.io/v1 kind: Channel metadata: name: dev namespace: ch-obj spec: type: Object storage pathname: [http://sample-ip:#####/dev] # URL is appended with the valid bucket name, which matches the channel name. secretRef: name: miniosecret gates: annotations: dev-ready: true
注: 要查看 REST API,使用 API。
1.4.3.2. 创建 Amazon Web Services (AWS) S3 对象存储存储桶
您可以设置订阅来订阅在 Amazon Simple Storage Service (Amazon S3) 对象存储服务中定义的资源。请参见以下步骤:
- 使用您的 AWS 帐户、用户名和密码登录到 AWS 控制台。
- 进入 Amazon S3 > Buckets 到存储桶主页。
- 点击 Create Bucket 创建存储桶。
- 选择 AWS region,这对连接 AWS S3 对象存储桶至关重要。
- 创建存储桶访问令牌。
- 导航到导航栏中的用户名,然后从下拉菜单中选择 My Security Credentials。
- 进入 AWS IAM credentials 标签页中的 Access keys for CLI, SDK, & API access,点 Create access key。
- 保存您的 Access key ID、Secret access key。
- 将对象 YAML 文件上传到存储桶。
1.4.3.3. 订阅 AWS 存储桶中的对象
- 创建一个带有 secret 的对象存储桶类型频道,以指定用于连接 AWS bucket 的 AccessKeyID、SecretAccessKey 和 Region。创建 AWS 存储桶时会创建这三个字段。
添加 URL。如果 URL 包含
s3://
或s3 and aws
关键字,则 URL 用来标识 AWS S3 存储桶中的频道。例如,请查看以下所有存储桶 URL 都有 AWS s3 存储桶标识符:https://s3.console.aws.amazon.com/s3/buckets/sample-bucket-1 s3://sample-bucket-1/ https://sample-bucket-1.s3.amazonaws.com/
注: 不需要 AWS S3 对象存储桶 URL 来将存储桶与 AWS S3 API 连接。
1.4.3.4. AWS 订阅示例
请参阅以下完整的 AWS S3 对象存储桶频道示例 YAML 文件:
apiVersion: apps.open-cluster-management.io/v1 kind: Channel metadata: name: object-dev namespace: ch-object-dev spec: type: ObjectBucket pathname: https://s3.console.aws.amazon.com/s3/buckets/sample-bucket-1 secretRef: name: secret-dev --- apiVersion: v1 kind: Secret metadata: name: secret-dev namespace: ch-object-dev stringData: AccessKeyID: <your AWS bucket access key id> SecretAccessKey: <your AWS bucket secret access key> Region: <your AWS bucket region> type: Opaque
弃用: 您可以继续创建其他 AWS 订阅和放置规则对象,如以下示例 YAML 添加了 kind: PlacementRule
和 kind: Subscription
:
apiVersion: apps.open-cluster-management.io/v1 kind: PlacementRule metadata: name: towhichcluster namespace: obj-sub-ns spec: clusterSelector: {} --- apiVersion: apps.open-cluster-management.io/v1 kind: Subscription metadata: name: obj-sub namespace: obj-sub-ns spec: channel: ch-object-dev/object-dev placement: placementRef: kind: PlacementRule name: towhichcluster
您还可以订阅对象存储桶中特定子文件夹内的对象。将 subfolder
注解添加到订阅中,它会强制对象存储桶订阅仅应用子文件夹路径中的所有资源。
请参阅带有 subfolder-1
的注解作为 bucket-path
:
annotations: apps.open-cluster-management.io/bucket-path: <subfolder-1>
有关子文件夹,请参见以下完整示例:
apiVersion: apps.open-cluster-management.io/v1 kind: Subscription metadata: annotations: apps.open-cluster-management.io/bucket-path: subfolder1 name: obj-sub namespace: obj-sub-ns labels: name: obj-sub spec: channel: ch-object-dev/object-dev placement: placementRef: kind: PlacementRule name: towhichcluster
1.4.3.5. 使用对象存储删除订阅后保留部署的资源
使用对象存储存储库创建订阅时,您可以添加 do-not-delete
注解,以便在删除订阅后保留特定的部署资源。do-not-delete
注解仅适用于顶级部署资源。要添加 do-not-delete
注解,请完成以下步骤:
- 创建至少部署一个资源的订阅。
在您要保留的资源或资源中添加以下注解,即使您删除订阅:
apps.open-cluster-management.io/do-not-delete: 'true'
请参见以下示例:
apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: apps.open-cluster-management.io/do-not-delete: 'true' apps.open-cluster-management.io/hosting-subscription: sub-ns/subscription-example apps.open-cluster-management.io/reconcile-option: merge pv.kubernetes.io/bind-completed: "yes"
删除订阅后,带有 do-not-delete
注解的资源仍然存在,而其他资源也会被删除。
注: 使用 do-not-delete
注解绑定到命名空间来保持部署的资源。因此,在删除剩余的资源前,您无法删除命名空间。