如何使用配置映射将集群节点信息写入JSON文件?
下面给了我节点信息:
kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="Hostname")].address}'
如何使用配置映射将上述输出写入文本文件?
您可以将命令的输出保存在任何文件中。 然后使用文件或文件内的数据来创建配置映射。 创建配置映射后,您可以将其作为文件挂载到部署/Pod 中。
例如:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: appname
name: appname
namespace: development
spec:
selector:
matchLabels:
app: appname
tier: sometier
template:
metadata:
creationTimestamp: null
labels:
app: appname
tier: sometier
spec:
containers:
- env:
- name: NODE_ENV
value: development
- name: PORT
value: "3000"
- name: SOME_VAR
value: xxx
image: someimage
imagePullPolicy: Always
name: appname
volumeMounts:
- name: your-volume-name
mountPath: "your/path/to/store/the/file"
readOnly: true
volumes:
- name: your-volume-name
configMap:
name: your-configmap-name
items:
- key: your-filename-inside-pod
path: your-filename-inside-pod
我在部署中添加了以下配置:
volumeMounts:
- name: your-volume-name
mountPath: "your/path/to/store/the/file"
readOnly: true
volumes:
- name: your-volume-name
configMap:
name: your-configmap-name
items:
- key: your-filename-inside-pod
path: your-filename-inside-pod
要从文件创建配置映射:
kubectl create configmap your-configmap-name --from-file=your-file-path
或者只是使用命令的输出创建 ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
name: your-configmap-name
namespace: your-namespace
data:
your-filename-inside-pod: |
output of command
首先将 kubect get nodes 命令的输出保存到 JSON 文件中:
$ exampleCommand > node-info.json
然后创建适当的配置映射。
下面是一个示例:
apiVersion: v1
kind: ConfigMap
metadata:
name: example-config
data:
node-info.json: |
{
"array": [
1,
2
],
"boolean": true,
"number": 123,
"object": {
"a": "egg",
"b": "egg1"
},
"string": "Welcome"
}
然后记得在 pod 配置文件的规范部分下面添加以下行:
env:
- name: NODE_CONFIG_JSON
valueFrom:
configMapKeyRef:
name: example-config
key: node-info.json
您也可以使用 PodPresent。
PodPreset是一个对象,可以在创建时将信息蛋环境变量注入到Pod中。
请看下面的例子:
apiVersion: settings.k8s.io/v1alpha1
kind: PodPreset
metadata:
name: example
spec:
selector:
matchLabels:
app: your-pod
env:
- name: DB_PORT
value: "6379"
envFrom:
- configMapRef:
name: etcd-env-config
key: node-info.json
但请记住,您还必须添加:
env:
- name: NODE_CONFIG_JSON
valueFrom:
configMapKeyRef:
name: example-config
key: node-info.json
部分,以适合您的 PodPresent 和 ConfigMap 配置的 Pod 定义。
您可以在此处找到更多信息:podpresent,pod-present-configuration。