禁用目录包

功能概述

当目录中包含不应对用户或 resolver 客户端可见的资源时,请使用禁用包规则。规则可以禁用整个包,也可以只禁用特定版本。

有两个配置入口点:

来源类型配置重新加载行为
由 ConfigMap 支持的 Git repositoryrepository.yaml.gitRepositories[].repositories[].disabledPackages在 ConfigMap 更改后热重载。
内置或静态 filesystem catalogHelm 值 config.disabledPackages需要由 chart 管理的 pod 配置进行滚动更新。

在 ConfigMap Repository 中禁用包

disabledPackages 添加到 repository ConfigMap 中。

apiVersion: v1
kind: ConfigMap
metadata:
  name: artifacthub-shim-team-a-tasks
  namespace: artifacthub-shim-system
  labels:
    artifacthub-shim.alauda.io/repository: "true"
data:
  repository.yaml: |
    gitRepositories:
      - url: https://git.example.com/team-a/tekton-catalog.git
        revision: main
        repositories:
          - name: team-a-tasks
            displayName: Team A Tasks
            kind: task
            path: task
            disabledPackages:
              - name: unsafe-task
              - name: legacy-task
                versions:
                  - "0.1"
                  - "0.2"

在此示例中:

  • unsafe-task 被完全隐藏。
  • 仅隐藏 legacy-task0.10.2 版本。
  • 不会影响其他 repository 和其他包名称。

由 ConfigMap 支持的规则是 source-local 的。如果另一个 repository 中也包含 legacy-task,除非该 repository 也有自己的禁用规则,否则它仍然可见。

在内置 Catalog 中禁用包

对于内置 catalog 或静态 filesystem 源,Helm chart 值为 config.disabledPackages

config:
  disabledPackages:
    - catalog: catalog
      kind: task
      packages:
        - name: unsafe-task
        - name: legacy-task
          versions:
            - "0.1"
    - catalog: catalog-pipelines
      kind: pipeline
      packages:
        - name: deprecated-pipeline

当 artifacthub-shim 通过 ACP 集群插件安装时,请在 spec.config.extraConfigValues 中配置相同的规则。插件会将 extraConfigValues 注入到 chart 的 config: 块中,因此该值中不得包含顶层 config: 键。

最小 ModuleInfo 示例:

apiVersion: cluster.alauda.io/v1alpha1
kind: ModuleInfo
metadata:
  name: edge-build-artifacthub-shim
spec:
  config:
    extraConfigValues: |2-
        disabledPackages:
          - catalog: catalog
            kind: task
            packages:
              - name: chart-build-push

不要在 ModuleInfo 中将 disabledPackages 直接放在 spec.config 下;该字段不会渲染到 chart values 中。插件升级滚动完成后, 生成的 artifacthub-shim-config ConfigMap 应在 ARTIFACTHUB_SHIM_DISABLED_PACKAGES 下包含该规则。

验证

对于由 ConfigMap 支持的 repository,请检查更新后的 ConfigMap 是否已被接受,以及该源是否已就绪:

kubectl describe configmap artifacthub-shim-team-a-tasks \
  -n artifacthub-shim-system

期望的 Events 是 RepositoryConfigAcceptedRepositorySourceReady。 然后从 DevOps Hub UI 或使用 resolver: hub 的工作负载中验证,已禁用的包或版本不再可选或 可解析。

对于内置或静态 filesystem catalog 规则,请检查 chart 管理的 pod 滚动更新和 artifacthub-shim 日志:

kubectl rollout status deployment/artifacthub-shim -n artifacthub-shim-system
kubectl logs -n artifacthub-shim-system deployment/artifacthub-shim --tail=200

日志中包含源状态行,显示规则应用后哪些 repositories 处于 Ready、Invalid 或 Degraded 状态。

说明

  • 已禁用的包会从列表、搜索、详情和 resolver API 响应中移除。
  • ConfigMap 删除、label 移除或禁用包变更会在下一次 snapshot 中移除 受影响的 repository 内容。
  • 短暂的 Git 故障可能会继续提供最后一次成功的源分片,但显式的禁用规则不会继续提供已禁用内容。

了解更多