
cyberark/sidecar-injector该镜像是一个基于Kubernetes准入控制机制的变异Webhook控制器,核心功能是在Pod创建过程中自动注入边车(Sidecar)容器。通过与Kubernetes API服务器集成,实现无需手动修改Pod定义即可为应用添加辅助功能容器,广泛应用于服务网格、可观测性采集、安全代理等场景。
yamlapiVersion: apps/v1 kind: Deployment metadata: name: sidecar-injector namespace: kube-system spec: replicas: 2 # 建议多副本确保高可用 selector: matchLabels: app: sidecar-injector template: metadata: labels: app: sidecar-injector spec: containers: - name: injector image: [镜像名称]:[版本标签] # 替换为实际镜像地址 ports: - containerPort: 443 volumeMounts: - name: tls-cert mountPath: /etc/webhook/tls readOnly: true - name: injector-config mountPath: /etc/webhook/config resources: requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 256Mi volumes: - name: tls-cert secret: secretName: sidecar-injector-tls # 包含Webhook服务TLS证书 - name: injector-config configMap: name: sidecar-injector-config # 注入规则配置
yamlapiVersion: v1 kind: Service metadata: name: sidecar-injector namespace: kube-system spec: selector: app: sidecar-injector ports: - port: 443 targetPort: 443
yamlapiVersion: admissionregistration.k8s.io/v1 kind: MutatingWebhookConfiguration metadata: name: sidecar-injector-webhook webhooks: - name: sidecar-injector.example.com clientConfig: service: name: sidecar-injector namespace: kube-system path: /mutate-v1-pod caBundle: [CA证书Base64编码] # API服务器验证Webhook的CA证书 rules: - operations: ["CREATE"] apiGroups: [""] apiVersions: ["v1"] resources: ["pods"] admissionReviewVersions: ["v1"] sideEffects: None timeoutSeconds: 10 namespaceSelector: # 仅匹配带特定标签的命名空间 matchLabels: sidecar-injection: enabled objectSelector: # 仅匹配带特定标签的Pod matchLabels: sidecar: required
通过ConfigMap定义边车容器具体配置:
yamlapiVersion: v1 kind: ConfigMap metadata: name: sidecar-injector-config namespace: kube-system data: config.yaml: | sidecarContainers: - name: sidecar-proxy image: proxy-image:latest ports: - containerPort: 8080 resources: limits: cpu: 200m memory: 256Mi requests: cpu: 100m memory: 128Mi env: - name: PROXY_MODE value: "transparent" volumeMounts: - name: proxy-config mountPath: /etc/proxy volumes: - name: proxy-config configMap: name: proxy-default-config
创建测试Pod并验证边车注入:
bash# 创建带注入标签的测试Pod kubectl run test-pod --image=nginx --labels=sidecar=required -n [启用注入的命名空间] # 检查Pod容器列表(应包含业务容器和sidecar容器) kubectl describe pod test-pod | grep "Container ID"
| 参数类别 | 关键配置项 | 说明 |
|---|---|---|
| 注入范围控制 | namespaceSelector | 通过命名空间标签选择注入目标 |
| objectSelector | 通过Pod标签选择注入目标 | |
| namespaceSelector.matchExpressions | 复杂命名空间选择逻辑(如排除系统命名空间) | |
| 边车容器配置 | sidecarContainers[].image | 边车容器镜像地址 |
| sidecarContainers[].resources | 边车容器资源限制与请求 | |
| sidecarContainers[].env | 边车容器环境变量配置 | |
| Webhook服务配置 | clientConfig.service.path | Webhook处理请求的URL路径 |
| timeoutSeconds | Webhook处理超时时间(建议5-10秒) | |
| sideEffects | 声明Webhook是否有副作用(必须设置为None或NoneOnDryRun) |
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务