搜索

1.4. 管理应用程序资源

download PDF

通过控制台,您可以使用 Git 仓库、Helm 仓库和对象存储库创建应用程序。

重要: Git 频道可以与所有其他频道类型共享命名空间: Helm、对象存储和其他 Git 命名空间。

请参阅以下主题以开始管理应用程序:

1.4.1. 使用 Git 存储库管理应用程序

当您使用应用程序部署 Kubernetes 资源时,这些资源位于特定的存储库中。了解如何在以下流程中从 Git 存储库部署资源。如需了解更多有关应用程序模型的信息,请参阅应用程序模型和定义

用户需要访问权限: 可以创建应用程序的用户角色。您只能执行分配了相关角色的操作。了解 基于角色的访问控制文档中的访问要求。

  1. 在控制台导航菜单中点 Applications 来查看列出的应用程序并创建新应用。
  2. 可选: 在选择要创建的应用程序类型后,您可以选择 YAML: On 在控制台上按照创建和编辑应用程序查看 YAML。请参阅后面的 YAML 示例。
  3. 从可以使用的存储库列表中选择 Git,并在正确的字段中输入值。按照控制台中的指南,根据您的输入查看 YAML 编辑器更改值。

    备注:

    • 如果选择了现有的 Git 存储库路径,则不需要指定连接信息(如果这是私有存储库)。连接信息是预先设置的,您不需要查看这些值。
    • 如果输入了新的 Git 存储库路径,则可以选择性地输入 Git 连接信息(如果这是一个私有 Git 存储库)。
    • 请注意协调选项。merge 选项是默认选择,这代表要添加新字段,并在资源中更新现有字段。您可以选择 replace。使用 replace 选项,现有资源被替换为 Git 源。当订阅协调率被设置为 low 时,订阅的应用程序资源最多可能需要一小时才能完成协调。在单个应用程序视图的卡上,单击 Sync 以手动协调。如果设为 off,则永远不会协调。
  4. 设置任何可选的部署前和部署后的任务。如果您有要在订阅部署应用程序资源之前或之后运行的 Ansible Automation Platform 作业,则设置 Ansible Automation Platform secret。定义作业的 Ansible Automation Platform 任务必须放置在此存储库的 prehookposthook 文件夹中。
  5. 如果需要使用控制台添加凭证,可以点 Add credential。按照控制台中的指示进行操作。请参阅管理凭证概述
  6. Create
  7. 您会被重定向到 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 注解,请完成以下步骤:

  1. 创建至少部署一个资源的订阅。
  2. 在您要保留的资源或资源中添加以下注解,即使您删除订阅:

    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 仓库部署资源。如需了解更多有关应用程序模型的信息,请参阅应用程序模型和定义

用户需要访问权限: 可以创建应用程序的用户角色。您只能执行分配了相关角色的操作。了解 基于角色的访问控制文档中的访问要求。

  1. 在控制台导航菜单中点 Applications 来查看列出的应用程序并创建新应用。
  2. 可选: 在选择要创建的应用程序类型后,您可以选择 YAML: On 在控制台上按照创建和编辑应用程序查看 YAML。请参阅后面的 YAML 示例。
  3. 从可以使用的存储库列表中选择 Helm,并在正确的字段中输入值。按照控制台中的指南,根据您的输入查看 YAML 编辑器更改值。
  4. Create
  5. 您会被重定向到 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 资源时,这些资源位于特定的存储库中。如需了解更多有关应用程序模型的信息,请参阅应用程序模型和定义

用户需要访问权限: 可以创建应用程序的用户角色。您只能执行分配了相关角色的操作。了解 基于角色的访问控制文档中的访问要求。

  1. 在控制台导航菜单中点 Applications 来查看列出的应用程序并创建新应用。
  2. 可选: 在选择要创建的应用程序类型后,您可以选择 YAML: On 在控制台上按照创建和编辑应用程序查看 YAML。请参阅后面的 YAML 示例。
  3. 从可以使用的存储库列表中选择 Object store,并在正确的字段中输入值。按照控制台中的指南,根据您的输入查看 YAML 编辑器更改值。
  4. Create
  5. 您会被重定向到 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) 对象存储服务中定义的资源。请参见以下步骤:

  1. 使用您的 AWS 帐户、用户名和密码登录到 AWS 控制台
  2. 进入 Amazon S3 > Buckets 到存储桶主页。
  3. 点击 Create Bucket 创建存储桶。
  4. 选择 AWS region,这对连接 AWS S3 对象存储桶至关重要。
  5. 创建存储桶访问令牌。
  6. 导航到导航栏中的用户名,然后从下拉菜单中选择 My Security Credentials
  7. 进入 AWS IAM credentials 标签页中的 Access keys for CLI, SDK, & API access,点 Create access key
  8. 保存您的 Access key IDSecret access key
  9. 将对象 YAML 文件上传到存储桶。

1.4.3.3. 订阅 AWS 存储桶中的对象

  1. 创建一个带有 secret 的对象存储桶类型频道,以指定用于连接 AWS bucket 的 AccessKeyIDSecretAccessKeyRegion。创建 AWS 存储桶时会创建这三个字段。
  2. 添加 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: PlacementRulekind: 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 注解,请完成以下步骤:

  1. 创建至少部署一个资源的订阅。
  2. 在您要保留的资源或资源中添加以下注解,即使您删除订阅:

    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 注解绑定到命名空间来保持部署的资源。因此,在删除剩余的资源前,您无法删除命名空间。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.