这是一个 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 发布版本。此工作流供维护者以安全方式验证发布流水线的变更(标签、变更日志生成、镜像构建),同时保持生产标签不可变。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务