1.3. 管理应用程序资源
通过控制台,您可以使用 Git 仓库、Helm 仓库和对象存储库创建应用程序。
重要:Git 频道可以与所有其他频道类型共享命名空间:Helm、对象存储和其他 Git 命名空间。
请参阅以下主题以开始管理应用程序:
1.3.1. 使用 Git 存储库管理应用程序
当您使用应用程序部署 Kubernetes 资源时,这些资源位于特定的存储库中。了解如何在以下流程中从 Git 存储库部署资源。如需了解更多有关应用程序模型的信息,请参阅应用程序模型和定义:
用户需要的访问权限:可创建应用的用户角色。您只能执行分配了相关角色的操作。如需更多关于访问要求的信息,请参阅基于角色的访问控制文档。
- 在控制台导航菜单中点 Manage application。
点 Create application。
对于以下步骤,选择 YAML:在 上,在控制台中创建应用程序时查看 YAML。请参阅后面的 YAML 示例。
在正确的字段中输入以下值:
- name:输入应用程序的有效 Kubernetes 名称。
- Namespace:从列表中选择一个命名空间。如果分配了正确的访问角色,您还可以使用有效的 Kubernetes 名称创建命名空间。
- 从可以使用的存储库列表中选择 Git。
输入所需的 URL 路径或选择现有路径。
如果选择了现有的 Git 存储库路径,则不需要指定连接信息(如果这是私有存储库)。连接信息是预先设置的,您不需要查看这些值。
如果输入了新的 Git 存储库路径,则可以选择性地输入 Git 连接信息(如果这是一个私有 Git 存储库)。
- 输入可选字段的值,如分支和文件夹。
设置任何可选的部署前和部署后的任务。
技术预览:如果您有要在订阅部署应用程序资源之前或之后运行的 Ansible Tower 作业,则设置 Ansible Tower secret。定义 Ansible 作业的 Ansible Tower 任务必须放置在此存储库的 prehook 和 posthook 文件夹中。
如果在应用程序命名空间中创建了 secret,可以从下拉菜单中选择 Ansible Tower secret。在这个实例中,连接信息是预先设置的,您不需要查看这些值。
如果输入了新的 Ansible Tower secret 名称以创建新 secret,则需要输入 Ansible Tower 主机和令牌。
在 Select clusters to deploy 中,您可以更新应用程序的放置规则信息。从中选择:
- 在本地集群中部署
- 部署到所有在线集群和本地集群
- 仅在与指定标签匹配的集群上部署应用程序资源
- 如果在现有的、并已定义了放置规则的命名空间中创建应用程序,则可以选择 Select existing placement configuration 选项。
- 在 Settings 中,您可以指定应用程序的行为。要在指定时间窗内阻止或激活对部署的更改,为 Deployment window 和您的 Time window configuration 选择一个选项。
- 您可以选择另一个存储库或点 Save。
- 您会被重定向到 Overiew 页,可以在其中查看详情和拓扑。
1.3.1.1. YAML 示例
以下示例频道定义显示了 Git 仓库的频道示例。在以下示例中,secretRef
是指用于访问 pathname
中指定的 Git 仓库的用户身份。如果您有一个公共仓库库,则不需要 secretRef
:
apiVersion: apps.open-cluster-management.io/v1 kind: Channel metadata: name: hive-cluster-gitrepo namespace: gitops-cluster-lifecycle spec: type: Git pathname: https://github.com/open-cluster-management/gitops-clusters.git secretRef: name: github-gitops-clusters --- apiVersion: v1 kind: Secret metadata: name: github-gitops-clusters namespace: gitops-cluster-lifecycle data: user: dXNlcgo= # Value of user and accessToken is Base 64 coded. accessToken: cGFzc3dvcmQ
备注:要查看 REST API,请使用 API。
1.3.1.2. 应用程序 Git Ops
使用 local-cluster
放置规则,您可以使用订阅向 hub 集群提供与配置相关的资源。
这些资源可以是用来配置应用程序和策略、运行 Ansible 作业、在置备或导入后配置集群的订阅。
1.3.1.2.1. GitOps 的 Repo 示例
在以下示例仓库中,您会看到每个 hub 集群的文件夹。您还可以为每个 hub 集群或每个 hub 集群创建一个仓库。
在 hub 集群上定义的单个订阅将拉取所有其他配置资源,如 hub 集群配置、策略和将配置和部署到 hub 和受管集群的通用应用程序。
用于存储这类信息的 Git 仓库类似以下示例文件和目录结构。参阅 root 路径、受管集群和 hub 集群部分:
1.3.1.2.2. GitOps 根路径
仓库根路径中的这些文件会创建一个订阅,该订阅会引用此 Git 仓库并应用所有 YAML,但 .kubernetesignore
中指定的除外。它包括这四个订阅文件和 ./managed-cluster-common
目录。
/ # Repository root directory # The subscription that delivers all the previous content to the hub cluster: hub-application.yaml # This represents the hub cluster configuration in the console hub-channels.yaml # This points to `rhacm-hub-cluster` Git repository hub-subscriptions.yaml # This defines the time window, branch to be used, and defines which directories containing appropriate configs, such as `hub-policies`, should be used (can be all) hub-placement.yaml # Points back to the `local-cluster` (hub cluster that is managed) .kubernetesignore # Tells the subscription to ignore hub-application.yaml, hub-channels.yaml, hub-subscription.yaml & hub-placement.yaml
1.3.1.2.3. 受管集群的 GitOps 应用程序
以下目录包含了将应用程序应用到 managed 集群的订阅。这些订阅通过 root 目录中的订阅应用到 hub 集群。
在以下示例中,您会看到一个订阅到另一个订阅的订阅:
common-managed/ apps/ app-name-0/ application.yaml subscription.yaml channel.yaml # This points to a repository named `app-name-0`, of type Git, Helm, or Object Storage placementrule.yaml app-name-1/ application.yaml subscription.yaml channel.yaml # This points to a repository named `app-name-0`, of type Git, Helm, or Object Storage placementrule.yaml config/ application.yaml # named: `day2-config` subscription.yaml # Points to the `managed-cluster-common/config` parent directory channel.yaml # Can point to this Git repository or a different repository with the day-two configuration placementrule.yaml # Defines the clusters to target managed-cluster-common/ configs/ # These configurations are referenced through the `config` subscription certmanagement.yaml auth-oidc.yaml autoscaler.yaml descheduler.yaml
1.3.1.2.4. hub 集群的 GitOps 应用程序
以下策略应用于 hub 集群,为 hub 集群以及远程集群提供策略配置。
这些是通过 root 订阅交付的,如下例所示:
managed-cluster-common/ policies/ policy-0.yaml policy-1.yaml hub-policies/ policy-0.yaml vault.yaml operators.yaml
1.3.1.2.5. 应用 GitOps
使用前面的组合示例,您可以指定以下内容:
- 可使用 CLI 命令应用一个根订阅。根订阅将返回此仓库,将所有 YAML 应用到 hub 集群。
-
第 1 步中的订阅,它会应用应用程序并从
common-managed/
配置订阅。 -
第 2 步的配置订阅,它应用
managed-cluster-common/
中定义的资源。 -
在
managed-cluster-common/
中定义的策略也由第 1 步的订阅应用到 hub 集群。这些策略包括针对 hub 集群的策略,以及那些针对受管集群的策略。