复制业务容器环境变量和卷挂载点
使用场景
在容器的日志收集与处理、配置管理、数据同步等场景中,可以通过环境变量传递配置文件的路径,或者通过共享卷挂载点将主业务容器的卷挂载到Sidecar容器中来实现特定功能。云容器实例提供了复制业务容器的环境变量(env)和卷挂载点(volumeMounts)的能力,从而简化了这些操作并实现特定功能。
您可参考以下几种方式复制业务容器环境变量和卷挂载点:
前提条件
如果使用ClusterExtensionProfile或ExtensionProfile方式复制业务容器环境变量和卷挂载点,您需要先配置Sidecar工具容器,操作步骤请参考配置Sidecar工具容器。
功能规格
功能描述 |
功能说明 |
---|---|
注入Sidecar时支持复制业务容器env的能力 |
|
注入Sidecar时支持复制业务容器volumeMount的能力 |
|
约束与限制
功能字段 |
字段约束 |
---|---|
envFromContainer |
|
volumeMountFromContainer |
|
方式一 通过注解复制业务容器环境变量和卷挂载点
通过在Pod.Annotations中加入注解添加envFromContainer、volumeMountFromContainer复制业务容器的环境变量和卷挂载点。
bursting.cci.io/pod-sidecars: '{"containers":[{"name":"busybox","image":"busybox:latest","command":["sh","-c","sleep 3600"],"resources":{},"envFromContainer":[{"name":"POD_IP","containerFieldRef":{"index":0,"fieldPath":"env.POD_IP"}},{"name":"POD_NAME","containerFieldRef":{"name":"nginx","fieldPath":"env.POD_NAME"}},{"name":"CONTAINER_NAME","containerFieldRef":{"index":0,"fieldPath":"name"}}],"volumeMountFromContainer":[{"volumeMountName":"log-storage","containerRef":{"index":0}},{"volumeMountName":"log-storage1","containerRef":{"name":"nginx"}}]}]}'
方式二 通过ClusterExtensionProfile复制业务容器环境变量和卷挂载点
- 生成YAML文件。通过ClusterExtensionProfile来配置Sidecar容器的环境变量和卷挂载点。
YAML示例:
apiVersion: bursting.cci.io/v1 kind: ClusterExtensionProfile metadata: name: podsidecar-cluster-profile spec: actions: podSidecars: containers: - command: - sh - -c - sleep 3600 image: busybox:latest name: busybox envFromContainer: - containerFieldRef: fieldPath: env.POD_IP index: 0 name: POD_IP - containerFieldRef: fieldPath: env.POD_NAME name: nginx name: POD_NAME - containerFieldRef: fieldPath: name index: 0 name: CONTAINER_NAME volumeMountFromContainer: - containerRef: index: 0 volumeMountName: log-storage - containerRef: name: nginx volumeMountName: log-storage1 namespaceLabels: matchLabels: key: value
- 使用以下命令创建配置。
kubectl apply -f <podsidecar-cluster-profile> #所创建的YAML文件名,替换为实际值
- (可选)查询是否配置成功。
kubectl get cextp
方式三 通过ExtensionProfile复制业务容器环境变量和卷挂载点
- 生成YAML文件。通过ExtensionProfile来配置Sidecar容器的环境变量和卷挂载点。
YAML示例:
apiVersion: bursting.cci.io/v1 kind: ExtensionProfile metadata: name: podsidecar-profile spec: actions: podSidecars: containers: - command: - sh - -c - sleep 3600 image: busybox:latest name: busybox envFromContainer: - containerFieldRef: fieldPath: env.POD_IP index: 0 name: POD_IP - containerFieldRef: fieldPath: env.POD_NAME name: nginx name: POD_NAME - containerFieldRef: fieldPath: name index: 0 name: CONTAINER_NAME volumeMountFromContainer: - containerRef: index: 0 volumeMountName: log-storage - containerRef: name: nginx volumeMountName: log-storage1 objectLabels: matchLabels: key1: value1
- 使用以下命令创建配置。
kubectl apply -f <podsidecar-profile> #所创建的YAML文件名,替换为实际值
- (可选)使用以下命令查询是否配置成功。
kubectl get extp
参数说明
参数 |
参数说明 |
---|---|
InitContainers |
注入到CCI侧pod.spec.initContainers的initContainer列表。InitContainer对象的结构与Pod中initContainer的结构类似,不支持配置restartPolicy,并增加了position、envFromContainer、volumeMountFromContainer参数,详情请参见表4。 |
Containers |
注入到CCI侧pod.spec.containers的Container列表。详情请参见表4。 |
Volumes |
注入到CCI侧pod.spec.volumes的volume列表。 |