如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
这是一个 Docker 容器,旨在在 Kubernetes 集群内运行,用于收集带有指定标签的 config map,并将包含的文件存储在本地文件夹中。它还可以在 configmap 更改后向指定 URL 发送 HTTP 请求。其主要目标是作为 sidecar 容器运行,为应用程序提供来自集群的信息。
这是我们将 configmap 或 secret 中的文件提供给服务并在运行时保持其更新的简单方法。
在单个 pod 中使用共享卷运行此仓库创建的容器和您的应用程序。指定应监控的标签以及文件的存储位置。通过添加额外的环境变量,容器可以向指定 URL 发送 HTTP 请求。
镜像可在以下位置获取:
所有镜像均为相同的多架构镜像,支持 amd64、arm64 和 arm/v7。
ppc64le 和 s390x在 v2.x 版本中,我们已停止支持 ppc64le 和 s390x 架构。如果您仍需要这些架构,请联系我们。一种可能的解决方案是使用原生运行器而非 qemu 设置专门的构建任务。
| 名称 | 描述 | 是否必填 | 默认值 | 类型 |
|---|---|---|---|---|
LABEL | 用于过滤的标签 | 是 | - | 字符串 |
LABEL_VALUE | 要过滤资源的标签值。不设置值则按任意值过滤 | 否 | - | 字符串 |
FOLDER | 文件存放的文件夹 | 是 | - | 字符串 |
FOLDER_ANNOTATION | sidecar在configmap中查找的注解,用于覆盖文件的目标文件夹。注解值可以是绝对路径或相对路径。相对路径将相对于 FOLDER。 | 否 | k8s-sidecar-target-directory | 字符串 |
NAMESPACE | 逗号分隔的命名空间列表。如果指定,sidecar将在这些命名空间中搜索configmap。也可指定 ALL 以搜索所有命名空间。 | 否 | sidecar运行所在的命名空间 | 字符串 |
RESOURCE | sidecar监控的资源类型。选项:configmap、secret、both | 否 | configmap | 字符串 |
RESOURCE_NAME | 逗号分隔的资源名称列表,由sidecar监控。项目可前缀命名空间和资源类型,例如 secret/resource-name 或 namespace/secret/resource-name。设置此参数后,method 设为 WATCH 将被视为 SLEEP | 否 | - | 字符串 |
METHOD | 如果 METHOD 设为 LIST,sidecar将仅列出configmap/secret并退出。设为 SLEEP 时,将列出所有configmap/secret,然后休眠 SLEEP_TIME 秒。其他值将持续监控变更(参见 Kubernetes 文档)。 | 否 | - | 字符串 |
SLEEP_TIME | 使用 SLEEP 方法时,更新configmap/secret前等待的秒数 | 否 | 60 | 整数 |
REQ_URL | configmap/secret重新加载后发送请求的URL | 否 | - | URI |
REQ_METHOD | 发送到 REQ_URL 的请求方法,GET 或 POST | 否 | GET | 字符串 |
REQ_PAYLOAD | 如果使用 REQ_METHOD=POST,可提供JSON payload | 否 | - | json |
REQ_RETRY_TOTAL | 所有HTTP请求允许的总重试次数(*.url 触发的请求、发送到 REQ_URI 的请求以及K8s API请求) | 否 | 5 | 整数 |
REQ_RETRY_CONNECT | 所有HTTP请求允许的连接相关错误重试次数(*.url 触发的请求、发送到 REQ_URI 的请求以及K8s API请求) | 否 | 10 | 整数 |
REQ_RETRY_READ | 所有HTTP请求允许的读取错误重试次数(*.url 触发的请求、发送到 REQ_URI 的请求以及K8s API请求) | 否 | 5 | 整数 |
REQ_RETRY_BACKOFF_FACTOR | 所有HTTP请求在第二次尝试后应用的退避因子(*.url 触发的请求、发送到 REQ_URI 的请求以及K8s API请求) | 否 | 1.1 | float |
REQ_TIMEOUT | 对于 *.url 触发的请求或发送到 REQ_URI 的请求,等待服务器发送数据的秒数(不适用于K8s API请求) | 否 | 10 | float |
REQ_USERNAME | 用于 REQ_URL 请求和 *.url 触发请求的基本认证用户名 | 否 | - | 字符串 |
REQ_PASSWORD | 用于 REQ_URL 请求和 *.url 触发请求的基本认证密码 | 否 | - | 字符串 |
REQ_BASIC_AUTH_ENCODING | 用户名和密码的编码方式,默认未定义(例如 utf-8) | 否 | latin1 | 字符串 |
REQ_SKIP_INIT | 使用 WATCH 方法时,设为 true 可跳过启动时对 REQ_URL 的初始请求 | 否 | false | 布尔值 |
SCRIPT | configmap重新加载后执行的脚本绝对路径。在调用 REQ_URI 之前运行。如果文件不可执行,将传递给 sh;否则直接执行。已知有效的Shebang(Unix)) 为 #!/bin/sh 和 #!/usr/bin/env python | 否 | - | 字符串 |
ERROR_THROTTLE_SLEEP | 发生错误时,再次监控资源前等待的秒数 | 否 | 5 | 整数 |
SKIP_TLS_VERIFY | 设为 true 可跳过Kube API调用的TLS验证 | 否 | - | 布尔值 |
DISABLE_X509_STRICT_VERIFICATION | 设为 true 可禁用严格的X.509证书验证(对旧K8s集群有用)。 | 否 | - | 布尔值 |
REQ_SKIP_TLS_VERIFY | 设为 true 可跳过所有HTTP请求的TLS验证(Kube API服务器除外,由 SKIP_TLS_VERIFY 控制)。 | 否 | - | 布尔值 |
UNIQUE_FILENAMES | 设为 true 可在同一或多个命名空间的ConfigMap和/或Secret之间存在重复数据键时生成唯一文件名。 | 否 | false | 布尔值 |
DEFAULT_FILE_MODE | 每个文件的默认文件系统权限。使用三位数字(例如 '500'、'440' 等) | 否 | - | 字符串 |
KUBECONFIG | 如果提供且指向文件,或挂载了 ~/.kube/config,则从该文件加载K8s配置;否则尝试使用“incluster”K8s配置。 | 否 | - | 字符串 |
ENABLE_5XX | 设为 true 可从configmap拉取5XX响应内容。用于文件名以 .url 后缀结尾的情况(请参考此处的 *.url 特性)。 | 否 | - | 布尔值 |
WATCH_SERVER_TIMEOUT | 向服务器发出的礼貌请求,要求在指定秒数后干净关闭监控连接(https://github.com/kiwigrid/k8s-sidecar/issues/85%EF%BC%89 | 否 | 60 | 整数 |
WATCH_CLIENT_TIMEOUT | 如果网络中断导致所有数据包丢失且无RST/FIN,客户端在监控连接上等待多少秒后意识到并断开连接。此值可设为较小数值(https://github.com/kiwigrid/k8s-sidecar/issues/85%EF%BC%89 | 否 | 66 | 整数 |
IGNORE_ALREADY_PROCESSED | 忽略已处理的资源版本。避免对未变更的同一资源进行多次检查。要求Kubernetes API >= v1.19 | 否 | false | 布尔值 |
LOG_LEVEL | 设置日志级别。(DEBUG、INFO、WARN、ERROR、CRITICAL) | 否 | INFO | 字符串 |
LOG_FORMAT | 设置日志格式。(JSON 或 LOGFMT) | 否 | JSON | 字符串 |
LOG_TZ | 设置日志时区。(LOCAL 或 UTC) | 否 | LOCAL | 字符串 |
LOG_CONFIG | 日志配置文件路径。如果未配置,使用默认日志配置以支持向后兼容。未配置时,LOG_LEVEL、LOG_FORMAT 和 LOG_TZ 仍将被应用。 | 否 | - | 字符串 |
sidecar 在端口 8080(或由 HEALTH_PORT 配置)上提供 /healthz 健康端点,可用于 Kubernetes 就绪探针和存活探针。该端点兼容 IPv4 和 IPv6(双栈)。
仅当所有配置资源(ConfigMap 和/或 Secret)的初始同步完成后,端点才会返回 HTTP 200 OK。在此之前,它将返回 HTTP 503 Service Unavailable。这可确保主应用容器在其配置完全可用前不会启动或接收流量。
就绪探针配置示例:
readinessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 20
periodSeconds: 5
该端点也可用作存活探针,检查以下两个条件:
ConfigMap 和 Secret)正常运行。如果任何检查失败,端点将返回 HTTP 503 Service Unavailable,指示 Kubernetes 重启容器。
存活探针配置示例:
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 35
periodSeconds: 10
本仓库使用三个主要的 GitHub Actions 工作流:
.github/workflows/build_and_test.yaml)目的: 在本地 kind 集群上对 sidecar 进行端到端测试。
pull_requestworkflow_dispatchkind 集群中。此工作流不会创建标签、发布版本或将镜像推送到 registry。
.github/workflows/release.yaml)目的: 构建和发布镜像并创建 GitHub 发布版本。
master 分支且修改了以下文件:
src/**Dockerfile2.1.3 → 2.1.4)。#minor → 次要版本更新#major → 主要版本更新#none → 不更新版本,不构建,不发布part != '' && part != 'none')。docker.io/kiwigrid/k8s-sidecarquay.io/kiwigrid/k8s-sidecarghcr.io/kiwigrid/k8s-sidecar<version> 和 latest。这可确保:
src/** 或 Dockerfile 中的代码变更会生成新镜像。.github/workflows/release_test.yaml)目的: 手动测试发布工作流逻辑(标签、变更日志、镜像构建),不影响真实生产标签。
workflow_dispatch(仅手动运行)。github-tag-action,配置如下:
DEFAULT_BUMP: patchDRY_RUN: truepart != '' && part != 'none'),与生产工作流一致。<version>-testing 的测试镜像到 registry。<version>-testing 的草稿 GitHub 发布版本。此工作流供维护者以安全方式验证发布流水线的变更(标签、变更日志生成、镜像构建),同时保持生产标签不可变。
来自真实用户的反馈,见证轩辕镜像的优质服务