本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
Chainloop 是一个开源的软件供应链控制平面,作为元数据和工件的单一事实来源,以及声明式证明过程。它提供了对软件供应链的全面控制,确保供应链的透明度、安全性和可追溯性。
Chainloop 官方网站
商标说明:本软件列表由 Bitnami 打包。产品中提及的各个商标分别归各自公司所有,使用这些商标并不意味着任何关联或认可。
helm install my-release oci://registry-1.docker.io/bitnamicharts/chainloop
如需在生产环境中使用 Chainloop,建议尝试 VMware Tanzu Application Catalog,这是 Bitnami 目录的商业版本。
已验证兼容以下 Ingress 控制器,其他控制器可能工作也可能不工作:
此图表提供两种部署模式:标准模式 和 开发模式。
!部署架构
默认部署模式依赖预先可用的外部依赖项。
此模式下的 Helm Chart 包括:
安装过程中,您需要提供:
创建 ECDSA 密钥对的说明可在此处找到。
注意:我们不建议以明文形式传递或存储敏感数据。对于生产环境,请考虑使用 Sops、Helm Secrets 或 Sealed Secrets 等工具对覆盖值进行加密。
部署 Chainloop,配置为使用捆绑的 PostgreSQL、外部 OIDC IDp 和 Vault 实例。
helm install [RELEASE_NAME] oci://REGISTRY_NAME/REPOSITORY_NAME/chainloop \ # Open ID Connect (OIDC) --set controlplane.auth.oidc.url=[OIDC URL] \ --set controlplane.auth.oidc.clientID=[clientID] \ --set controlplane.auth.oidc.clientSecret=[clientSecret] \ # 密钥后端 --set secretsBackend.vault.address="https://[vault address]:8200" \ --set secretsBackend.vault.token=[token] \ # 服务器身份验证密钥对 --set casJWTPrivateKey="$(cat private.ec.key)" \ --set casJWTPublicKey="$(cat public.pem)"
使用 AWS Secrets Manager 代替 Vault 进行部署:
helm install [RELEASE_NAME] oci://REGISTRY_NAME/REPOSITORY_NAME/chainloop \ # Open ID Connect (OIDC) # ... # 密钥后端 --set secretsBackend.backend=awsSecretManager \ --set secretsBackend.awsSecretManager.accessKey=[AWS ACCESS KEY ID] \ --set secretsBackend.awsSecretManager.secretKey=[AWS SECRET KEY] \ --set secretsBackend.awsSecretManager.region=[AWS region]\ # 服务器身份验证密钥对 # ...
使用 GCP Secret Manager:
helm install [RELEASE_NAME] oci://REGISTRY_NAME/REPOSITORY_NAME/chainloop \ # Open ID Connect (OIDC) # ... # 密钥后端 --set secretsBackend.backend=gcpSecretManager \ --set secretsBackend.gcpSecretManager.projectId=[GCP Project ID] \ --set secretsBackend.gcpSecretManager.serviceAccountKey=[GCP Auth KEY] \ # 服务器身份验证密钥对 # ...
使用 Azure KeyVault:
helm install [RELEASE_NAME] oci://REGISTRY_NAME/REPOSITORY_NAME/chainloop \ # Open ID Connect (OIDC) # ... # 密钥后端 --set secretsBackend.backend=azureKeyVault \ --set secretsBackend.azureKeyVault.tenantID=[AD tenant ID] \ --set secretsBackend.azureKeyVault.clientID=[Service Principal ID] \ --set secretsBackend.azureKeyVault.clientSecret=[Service Principal secret] \ --set secretsBackend.azureKeyVault.vaultURI=[Azure KeyVault URI] # 服务器身份验证密钥对 # ...
连接到外部 PostgreSQL 数据库:
helm install [RELEASE_NAME] oci://REGISTRY_NAME/REPOSITORY_NAME/chainloop \ # Open ID Connect (OIDC) # ... # 密钥后端 # ... # 服务器身份验证密钥对 # ... # 外部数据库设置 --set postgresql.enabled=false \ --set controlplane.externalDatabase.host=[DB_HOST] \ --set controlplane.externalDatabase.user=[DB_USER] \ --set controlplane.externalDatabase.password=[DB_PASSWORD] \ --set controlplane.externalDatabase.database=[DB_NAME]
为了提供一种简单的方式来试用 Chainloop,此 Helm Chart 提供了一个可选的开发模式,可以通过标志 development=true 启用。
重要:请勿在生产环境中使用此模式
!开发环境部署
此模式下的 Helm Chart 包括:
图表上的预设用户配置包括两个用户,信息如下:
用户名: *** 密码: password 用户名: *** 密码: password
完整的 OIDC 配置可以在 values.yaml 文件中找到。
警告:不要在生产环境中使用此模式,生产环境应使用标准模式。
利用内置的 Vault 和 PostgreSQL 实例进行部署:
helm install [RELEASE_NAME] oci://REGISTRY_NAME/REPOSITORY_NAME/chainloop --set development=true
| 名称 | 描述 | 默认值 |
|---|---|---|
global.imageRegistry | 全局 Docker 镜像仓库 | "" |
global.imagePullSecrets | 全局 Docker 仓库密钥名称数组 | [] |
global.security.allowInsecureImages | 允许跳过镜像验证 | false |
global.compatibility.openshift.adaptSecurityContext | 调整部署的 securityContext 部分,使其与 Openshift restricted-v2 SCC 兼容:删除 runAsUser、runAsGroup 和 fsGroup,让平台使用其允许的默认 ID。可能的值:auto(如果检测到运行的集群是 Openshift,则应用),force(始终执行适配),disabled(不执行适配) | auto |
development | 部署预先配置的 Chainloop,仅用于开发。包括开发模式的 Vault 实例和预先配置的身份验证证书和密码 | true |
| 名称 | 描述 | 默认值 |
|---|---|---|
kubeVersion | 覆盖 Kubernetes 版本 | "" |
apiVersions | 覆盖 .Capabilities 报告的 Kubernetes API 版本 | [] |
nameOverride | 部分覆盖 common.names.name 的字符串 | "" |
fullnameOverride | 完全覆盖 common.names.fullname 的字符串 | "" |
namespaceOverride | 完全覆盖 common.names.namespace 的字符串 | "" |
commonAnnotations | 要添加到所有部署对象的注解 | {} |
commonLabels | 要添加到所有部署对象的标签 | {} |
extraDeploy | 要与发布一起部署的额外对象数组 | [] |
rbac.create | 指定是否应创建 RBAC 资源 | false |
rbac.rules | 要设置的自定义 RBAC 规则 | [] |
| 名称 | 描述 | 默认值 |
|---|---|---|
secretsBackend.backend | 密钥后端类型("vault"、"awsSecretManager"、"gcpSecretManager" 或 "azureKeyVault") | vault |
secretsBackend.secretPrefix | 将添加到存储后端中所有密钥的前缀 | chainloop |
secretsBackend.vault.address | Vault 地址 | "" |
secretsBackend.vault.token | Vault 身份验证令牌 | "" |
secretsBackend.awsSecretManager.accessKey | AWS 访问密钥 ID | "" |
secretsBackend.awsSecretManager.secretKey | AWS 密钥 | "" |
secretsBackend.awsSecretManager.region | AWS Secrets Manager 区域 | "" |
secretsBackend.gcpSecretManager.projectId | GCP 项目 ID | "" |
secretsBackend.gcpSecretManager.serviceAccountKey | GCP 身份验证密钥 | "" |
secretsBackend.azureKeyVault.tenantID | Active Directory 租户 ID | "" |
secretsBackend.azureKeyVault.clientID | 已注册应用程序/服务主体客户端 ID | "" |
secretsBackend.azureKeyVault.clientSecret | 服务主体客户端密钥 | "" |
secretsBackend.azureKeyVault.vaultURI | Azure Key Vault URL | "" |
ECDSA 密钥对是控制平面和 Artifact CAS 之间执行身份验证所必需的。
您可以通过运行以下命令生成私钥和公钥:
# 私钥 (private.ec.key) openssl ecparam -name secp521r1 -genkey -noout -out private.ec.key # 公钥 (public.pem) openssl ec -in private.ec.key -pubout -out public.pem
然后,您可以在自定义的 values.yaml 文件覆盖中提供它们:
casJWTPrivateKey: |- -----BEGIN EC PRIVATE KEY----- REDACTED -----END EC PRIVATE KEY----- casJWTPublicKey: | -----BEGIN PUBLIC KEY----- REDACTED -----END PUBLIC KEY-----
或者如前所示,在 Helm 安装/升级期间将它们作为命令式输入提供:--set casJWTPrivateKey="$(cat private.ec.key)" --set casJWTPublicKey="$(cat public.pem)"
Chainloop 使用 gRPC 流来执行工件上传。这种方法在高延迟场景下可能会非常慢。#375
要提高上传速度,您需要增加 http2 流控制缓冲区。这可以通过在 ingress 资源中设置以下注解在 NGINX 中完成:
# 通过添加 http2 控制流使用的客户端缓冲来提高上传速度 nginx.ingress.kubernetes.io/client-body-buffer-size: "3M"
注意:对于其他反向代理,您需要找到等效的配置。
Chainloop 使用三个端点,因此我们需要为每个端点启用 ingress 资源。
以下是 values.yaml 覆盖的示例:
controlplane: ingress: enabled: true hostname: cp.chainloop.dev ingressAPI: enabled: true hostname: api.cp.chainloop.dev cas: ingressAPI: enabled: true hostname: api.cas.chainloop.dev
使用以下组件的完整设置:
配置如下:
controlplane: ingress: enabled: true tls: true ingressClassName: nginx hostname: cp.chainloop.dev annotations: # 这取决于您配置的颁发者 cert-manager.io/cluster-issuer: "letsencrypt-prod" ingressAPI: enabled: true tls: true ingressClassName: nginx hostname: api.cp.chainloop.dev annotations: nginx.ingress.kubernetes.io/backend-protocol: "GRPC" cert-manager.io/cluster-issuer: "letsencrypt-prod" cas: ingressAPI: enabled: true tls: true ingressClassName: nginx hostname: api.cas.chainloop.dev annotations: nginx.ingress.kubernetes.io/backend-protocol: "GRPC" cert-manager.io/cluster-issuer: "letsencrypt-prod" # 限制通过代理的文件大小 # 0 表示不检查请求大小,这样我们不会收到 413 错误。 # 现在我们将限制设置为 100MB 文件 # 尽管我们以 1MB 的块发送数据,但此大小是指在流连接中发送的所有数据 nginx.ingress.kubernetes.io/proxy-body-size: "100m"
请记住,设置域名后,确保使用指向您实例的 CLI 而不是默认值。
# 禁用内置数据库 postgresql: enabled: false # 提供外部连接 controlplane: externalDatabase: host: 1.2.3.4 port: 5432 user: chainloop password: [REDACTED] database: chainloop-controlplane-prod
或者,如果您使用 Google Cloud SQL 并在 Google Kubernetes Engine 中运行 Chainloop,您可以通过 代理 连接:
通过以下方式可以在此图表中轻松启用此方法:
# 禁用内置数据库 postgresql: enabled: false # 提供外部连接 controlplane: sqlProxy: # 注入代理 sidecar enabled: true ## @param controlplane.sqlProxy.connectionName Google Cloud SQL 连接名称 connectionName: "my-sql-instance" # 然后您需要将数据库设置配置为使用代理 IP 地址 externalDatabase: host: [proxy-side
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429