专属域名
文档搜索
轩辕助手
Run助手
邀请有礼
返回顶部
快速返回页面顶部
收起
收起工具栏
轩辕镜像 官方专业版
轩辕镜像
专业版
轩辕镜像 官方专业版
轩辕镜像
专业版
首页个人中心搜索镜像

交易
充值流量我的订单
工具
提交工单页面收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题轩辕镜像免费版
其他
关于我们网站地图
热门搜索:
ghcr.io/yannh/kubeconform

ghcr.io/yannh/kubeconform:v0.8.0-alpine

ghcr.iolinux/amd64v0.8.0-alpine大小: 未知更新于 2026年6月6日
让 AI 帮你使用轩辕镜像? · 展开查看说明

如果你用 DeepSeek、元宝AI、Copilot 等 AI 代为编写轩辕镜像的 docker pull、修改 compose 镜像地址,或排查拉取失败等问题,请让 AI 先读规则再动手,只要在 AI 对话里直接发送下面这句话即可:

生成 docker pull、修改 compose 的 image,或排查拉取失败前,请先阅读并严格遵守 https://xuanyuan.cloud/agents.md 中的规则。

国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。

Kubeconform 是一款 Kubernetes 清单验证工具。可将其集成到 CI 中,或在本地使用以验证 Kubernetes 配置!

Kubeconform 受 Kubeval 启发,包含其部分代码,并旨在与 Kubeval 保持相近的功能,但具有以下改进:

  • 高性能:通过多协程验证和下载清单,并将下载的文件缓存在内存中
  • 可配置远程或本地模式位置列表,支持验证 Kubernetes 自定义资源(CRDs)和离线验证功能
  • 默认使用 kubernetes-json-schema 项目维护的模式注册表的自更新分支,确保所有近期 Kubernetes 版本的模式都是最新的。

与 Kubeval 的速度对比

在一台配备 4 核的笔记本电脑上,针对一个相当大的 kubeconfigs 配置运行:

$ time kubeconform -ignore-missing-schemas -n 8 -summary preview staging production
Summary: 50714 resources found in 35139 files - Valid: 27334, Invalid: 0, Errors: 0 Skipped: 23380
real	0m6,710s
user	0m38,701s
sys	0m1,161s
$ time kubeval -d preview,staging,production --ignore-missing-schemas --quiet
[... 省略输出]
real	0m35,336s
user	0m0,717s
sys	0m1,069s

目录

  • Kubernetes 清单验证简介
  • Kubeconform 验证的限制
  • 安装
  • 使用方法
    • 使用示例
    • 代理支持
  • 覆盖模式位置
    • 自定义资源定义(CRD)支持
    • OpenShift 模式支持
  • 在 CI 中集成 Kubeconform
    • Github Workflow
    • Gitlab-CI
  • Helm 图表
  • 将 kubeconform 用作 Go 模块
  • 致谢

Kubernetes 清单验证简介

Kubernetes 的 API 通过 OpenAPI(前身为 swagger)规范进行描述,该规范文件已签入 Kubernetes 主仓库。

由于针对 OpenAPI 模式执行验证的工具现状,项目通常会先将 OpenAPI 模式转换为 JSON 模式。Kubeval 依赖 instrumenta/OpenApi2JsonSchema 转换 Kubernetes 的 Swagger 文件,并将其分解为多个 JSON 模式,存储在 GitHub 的 instrumenta/kubernetes-json-schema 中,并发布在 kubernetesjsonschema.dev 上。

Kubeconform 依赖 kubernetes-json-schema 的一个分支,该分支更精心地保持更新,并包含所有近期 Kubernetes 版本的模式。

Kubeconform 验证的限制

与 kubeval 类似,Kubeconform 仅使用官方 Kubernetes OpenAPI 规范验证清单。Kubernetes 控制器仍会执行 OpenAPI 规范中未包含的额外服务器端验证。这些服务器端验证未被 Kubeconform 覆盖(示例:#65、#122、#142)。您可以使用第三方工具或 kubectl --dry-run=server 命令来填补(验证)空白。

安装

如果您是 Homebrew 用户,可以通过以下命令安装:

$ brew install kubeconform

如果您是 Windows 用户,可以通过 winget 安装:

winget install YannHamon.kubeconform

您也可以从发布页面下载最新版本。

另一种安装方式是通过 Golang 的包管理器:

# 使用特定版本标签
$ go install github.com/yannh/kubeconform/cmd/kubeconform@v0.4.13

# 最新版本
$ go install github.com/yannh/kubeconform/cmd/kubeconform@latest

使用方法

$ kubeconform -h
Usage: kubeconform [OPTION]... [FILE OR FOLDER]...
-cache string
	cache schemas downloaded via HTTP to this folder
-debug
	print debug information
-exit-on-error
	immediately stop execution when the first error is encountered
-h	show help information
-ignore-filename-pattern value
	regular expression specifying paths to ignore (can be specified multiple times)
-ignore-missing-schemas
	skip files with missing schemas instead of failing
-insecure-skip-tls-verify
	disable verification of the server's SSL certificate. This will make your HTTPS connections insecure
-kubernetes-version string
	version of Kubernetes to validate against, e.g.: 1.18.0 (default "master")
-n int
	number of goroutines to run concurrently (default 4)
-output string
	output format - json, junit, pretty, tap, text (default "text")
-reject string
	comma-separated list of kinds or GVKs to reject
-schema-location value
	override schemas location search path (can be specified multiple times)
-skip string
	comma-separated list of kinds or GVKs to ignore
-strict
	disallow additional properties not in schema or duplicated keys
-summary
	print a summary at the end (ignored for junit output)
-v	show version information
-verbose
	print results for all resources (ignored for tap and junit output)

使用示例

  • 验证单个有效文件
$ kubeconform fixtures/valid.yaml
$ echo $?
0
  • 验证单个无效文件,设置输出格式为 json 并打印摘要
$ kubeconform -summary -output json fixtures/invalid.yaml
{
"resources": [
{
"filename": "fixtures/invalid.yaml",
"kind": "ReplicationController",
"version": "v1",
"status": "INVALID",
"msg": "Additional property templates is not allowed - Invalid type. Expected: [integer,null], given: string"
}
],
"summary": {
"valid": 0,
"invalid": 1,
"errors": 0,
"skipped": 0
}
}
$ echo $?
1
  • 通过标准输入传递清单
cat fixtures/valid.yaml | ./bin/kubeconform -summary
Summary: 1 resource found parsing stdin - Valid: 1, Invalid: 0, Errors: 0 Skipped: 0
  • 验证文件时,使用 Kind 和 GVK(Group, Version, Kind)表示法忽略其资源
# 忽略所有 apiVersion 的 ReplicationController
$ kubeconform -summary -skip ReplicationController fixtures/valid.yaml
Summary: 1 resource found in 1 file - Valid: 0, Invalid: 0, Errors: 0, Skipped: 1

# 仅忽略 apiVersion v1 的 ReplicationController
$ kubeconform -summary -skip v1/ReplicationController fixtures/valid.yaml
Summary: 1 resource found in 1 file - Valid: 0, Invalid: 0, Errors: 0, Skipped: 1
  • 验证文件夹,增加并行工作进程数
$ kubeconform -summary -n 16 fixtures
fixtures/crd_schema.yaml - CustomResourceDefinition trainingjobs.sagemaker.aws.amazon.com failed validation: could not find schema for CustomResourceDefinition
fixtures/invalid.yaml - ReplicationController bob is invalid: Invalid type. Expected: [integer,null], given: string
[...]
Summary: 65 resources found in 34 files - Valid: 55, Invalid: 2, Errors: 8 Skipped: 0

代理支持

Kubeconform 在下载模式文件时会尊重 HTTPS_PROXY 变量。

$ HTTPS_PROXY=proxy.local bin/kubeconform fixtures/valid.yaml

覆盖模式位置

CustomResourceDefinition (CRD) 支持

由于自定义资源(CR)不是原生 Kubernetes 对象,因此默认 schema 中不包含它们。如果您的 CR 存在于 Datree 的 CRDs-catalog 中,您可以将该项目指定为额外的查找注册表:

# 在 CRDs-catalog 中查找所需的 schema
$ kubeconform -schema-location default -schema-location 'https://raw.githubusercontent.com/datreeio/CRDs-catalog/main/{{.Group}}/{{.ResourceKind}}_{{.ResourceAPIVersion}}.json' [MANIFEST]

如果您的 CR 不在 CRDs-catalog 中,则需要手动从集群中拉取 CRD 清单,并将 OpenAPI.spec 转换为 JSON schema 格式。

Kubeconform 使用 JSON schema 验证 Kubernetes 资源。对于自定义资源,需要先将 CustomResourceDefinition 转换为 JSON Schema。提供了一个 Go 工具用于将这些 CustomResourceDefinition 转换为 JSON schema。从 openapi2jsonschema-go/ 目录构建该工具,并按如下方式使用:

$ cd openapi2jsonschema-go && make local-build
$ ./bin/openapi2jsonschema https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/config/crd/bases/sagemaker.aws.amazon.com_trainingjobs.yaml
JSON schema written to trainingjob_v1.json

默认情况下,输出文件名格式为 {kind}_{version}。可使用 FILENAME_FORMAT 环境变量更改输出文件名(可用变量:kind、group、fullgroup、version):

$ export FILENAME_FORMAT='{kind}-{group}-{version}'
$ ./bin/openapi2jsonschema https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/config/crd/bases/sagemaker.aws.amazon.com_trainingjobs.yaml
JSON schema written to trainingjob-sagemaker-v1.json

$ export FILENAME_FORMAT='{kind}-{fullgroup}-{version}'
$ ./bin/openapi2jsonschema https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/config/crd/bases/sagemaker.aws.amazon.com_trainingjobs.yaml
JSON schema written to trainingjob-sagemaker.aws.amazon.com-v1.json

将 CRD 转换为 JSON schema 文件后,您可以使用 kubeconform 根据这些文件验证 CR:

# 如果在默认位置未找到资源 Kind,也在 schemas/ 文件夹中查找匹配文件
$ kubeconform -schema-location default -schema-location 'schemas/{{ .ResourceKind }}{{ .KindSuffix }}.json' fixtures/custom-resource.yaml

[!NOTE] Datree 的 CRD Extractor 是一个可替代此手动流程的工具。

OpenShift schema 支持

您可以使用自定义 schema 位置验证 OpenShift 清单。使用 -kubernetes-version 设置要验证的 OpenShift 版本(v3.10.0-4.1.0)。

kubeconform -kubernetes-version 3.8.0 -schema-location 'https://raw.githubusercontent.com/garethr/openshift-json-schema/master/{{ .NormalizedKubernetesVersion }}-standalone{{ .StrictSuffix }}/{{ .ResourceKind }}.json' -summary fixtures/valid.yaml
Summary: 1 resource found in 1 file - Valid: 1, Invalid: 0, Errors: 0 Skipped: 0

在 CI 中集成 Kubeconform

Kubeconform 将 Docker 镜像发布到 Github 的新容器注册表(ghcr.io)。使用 Github Token 登录后,这些镜像可直接在 Github Action 中使用。

Github Workflow

示例:

name: kubeconform
on: push
jobs:
kubeconform:
runs-on: ubuntu-latest
steps:
- name: login to Github Packages
run: echo "${{ github.token }}" | docker login https://ghcr.io -u ${GITHUB_ACTOR} --password-stdin
- uses: actions/checkout@v2
- uses: docker://ghcr.io/yannh/kubeconform:latest
with:
entrypoint: '/kubeconform'
args: "-summary -output json kubeconfigs/"

定价说明:Kubeconform 依赖于当前处于 Beta 阶段的 Github Container Registry。在此期间,带宽是免费的。此阶段之后,可能会产生带宽费用。由于 Github Actions 中来自 Github Packages 的带宽是免费的,我预计未来 Github Container Registry 在 Github Actions 中也可免费使用。如果情况并非如此,我可能会将 Docker 镜像发布到其他平台。

Gitlab-CI

Kubeconform Docker 镜像可用于 Gitlab-CI。以下是 Gitlab-CI 作业示例:

lint-kubeconform:
stage: validate
image:
name: ghcr.io/yannh/kubeconform:latest-alpine
entrypoint: [""]
script:
- /kubeconform -summary -output json kubeconfigs/

有关更多详细信息,请参见 issue 106。

Helm 图表

有一个第三方仓库允许以 Helm 插件和 pre-commit 钩子的形式使用 kubeconform 测试 Helm 图表。

将 kubeconform 用作 Go 模块

[!WARNING] 这是一项进行中的工作,接口尚未稳定。欢迎提供反馈。

Kubeconform 包含一个可用作库的包。使用示例可在 examples/main.go 中找到。

Kubeconform 的更多文档请参见 pkg.go.dev

致谢

  • @garethr 贡献了 Kubeval 和 kubernetes-json-schema 项目 ❤️

轩辕镜像配置手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

Docker 配置

登录仓库拉取

通过 Docker 登录认证访问私有仓库

用 AI 使用轩辕镜像

发给 Cursor、ChatGPT、豆包等 AI 的说明文档

专属域名拉取

无需登录使用专属域名

K8s Containerd

Kubernetes 集群配置 Containerd

K3s

K3s 轻量级 Kubernetes 镜像加速

Dev Containers

VS Code Dev Containers 配置

Podman

Podman 容器引擎配置

Singularity/Apptainer

HPC 科学计算容器配置

其他仓库配置

ghcr、Quay、nvcr 等镜像仓库

Harbor 镜像源配置

Harbor Proxy Repository 对接专属域名

Portainer 镜像源配置

Portainer Registries 加速拉取

Nexus 镜像源配置

Nexus3 Docker Proxy 内网缓存

系统配置

Linux

在 Linux 系统配置镜像服务

Windows/Mac

在 Docker Desktop 配置镜像

MacOS OrbStack

MacOS OrbStack 容器配置

Docker Compose

Docker Compose 项目配置

NAS 设备

群晖

Synology 群晖 NAS 配置

飞牛

飞牛 fnOS 系统配置镜像

绿联

绿联 NAS 系统配置镜像

威联通

QNAP 威联通 NAS 配置

极空间

极空间 NAS 系统配置服务

网络设备

爱快路由

爱快 iKuai 路由系统配置

宝塔面板

在宝塔面板一键配置镜像

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

使用与功能问题

配置了专属域名后,docker search 为什么会报错?

docker search 限制

Docker Hub 上有的镜像,为什么在轩辕镜像网站搜不到?

站内搜不到镜像

轩辕镜像是否实时全量同步原仓库的所有镜像?

原仓库同步与拉取

机器不能直连外网时,怎么用 docker save / load 迁镜像?

离线 save/load

docker pull 拉插件报错(plugin v1+json)怎么办?

插件要用 plugin install

WSL 里 Docker 拉镜像特别慢,怎么排查和优化?

WSL 拉取慢

轩辕镜像安全吗?如何用 digest 校验镜像没被篡改?

安全与 digest

第一次用轩辕镜像拉 Docker 镜像,要怎么登录和配置?

新手拉取配置

轩辕镜像合规吗?轩辕镜像的合规是怎么做的?

镜像合规机制

轩辕镜像支持 docker push 上传本地镜像吗?

不支持 push

错误码与失败问题

docker pull 提示 manifest unknown 怎么办?

manifest unknown

docker pull 提示 no matching manifest 怎么办?

no matching manifest(架构)

镜像已拉取完成,却提示 invalid tar header 或 failed to register layer 怎么办?

invalid tar header(解压)

拉取老镜像提示 Schema 1 已废弃怎么办?

Schema 1 已废弃

Docker 拉取出现 406 或 OCI index 不支持怎么办?

406 OCI index

docker pull 出现 422 Unknown 怎么办?

422 Unknown

拉取镜像提示 TAG_INVALID 或无效标签(400)怎么办?

400 TAG_INVALID

Docker pull 时 HTTPS / TLS 证书验证失败怎么办?

TLS 证书失败

Docker pull 时 DNS 解析超时或连不上仓库怎么办?

DNS 超时

docker 无法连接轩辕镜像域名怎么办?

域名连通性排查

Docker 拉取出现 410 Gone 怎么办?

410 Gone 排查

出现 402 或「流量用尽」提示怎么办?

402 与流量用尽

Docker 拉取提示 UNAUTHORIZED(401)怎么办?

401 认证失败

遇到 429 Too Many Requests(请求太频繁)怎么办?

429 限流

docker login 提示 Cannot autolaunch D-Bus,还算登录成功吗?

D-Bus 凭证提示

为什么会出现「单层超过 20GB」或 413,无法加速拉取?

413 与超大单层

账号 / 计费 / 权限

轩辕镜像免费版和专业版有什么区别?

免费版与专业版区别

轩辕镜像支持哪些 Docker 镜像仓库?

支持的镜像仓库

镜像拉取失败还会不会扣流量?

失败是否计费

麒麟 V10 / 统信 UOS 提示 KYSEC 权限不够怎么办?

KYSEC 拦截脚本

如何在轩辕镜像申请开发票?

申请开发票(企业 / 个人)

怎么修改轩辕镜像的网站登录和仓库登录密码?

修改登录密码

如何注销轩辕镜像账户?要注意什么?

注销账户

配置与原理类

写了 registry-mirrors,为什么还是走官方或仍然报错?

mirrors 不生效

怎么用 docker tag 去掉镜像名里的轩辕域名前缀?

去掉域名前缀

如何拉取指定 CPU 架构的镜像(如 ARM64、AMD64)?

指定架构拉取

用轩辕镜像拉镜像时快时慢,常见原因有哪些?

拉取速度原因

为什么拉取镜像的 :latest 标签,拿到的往往不是「最新」镜像?

latest 与「最新」

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
ghcr.io/yannh/kubeconform
博客Docker 镜像公告与技术博客
热门查看热门 Docker 镜像推荐
安装一键安装 Docker 并配置镜像源
镜像拉取问题咨询请 提交工单。官方公众号:源码跳动。官方技术交流群:13763429。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
镜像拉取问题咨询请提交工单。官方公众号:源码跳动。官方技术交流群:。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
商务合作:点击复制邮箱
©2024-2026 源码跳动
商务合作:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.