I need to expose two of my named ports via environment variables. This is my kubernetes deployment yaml file:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: flink-taskmanager1255
spec:
replicas: 1
template:
metadata:
labels:
app: flink
component: taskmanager
spec:
volumes:
- name: task-pv-storage
persistentVolumeClaim:
claimName: task-pv-claim
containers:
- name: taskmanager
image: myrepo:9555/flink
args:
- taskmanager
resources:
limits:
cpu: "1"
memory: "2Gi"
requests:
cpu: "0.5"
memory: "1Gi"
ports:
- containerPort: 5021
name: data
- containerPort: 5022
name: rpc
- containerPort: 5125
name: query
livenessProbe:
tcpSocket:
port: data
initialDelaySeconds: 35
periodSeconds: 10
volumeMounts:
- mountPath: "/usr/share/flink/"
name: task-pv-storage
env:
- name: JOB_MANAGER_RPC_ADDRESS
value: flink-jobmanager
- name: FLINK_CONFIG_PATH
value: /usr/share/flink/flink-conf.yaml
- name: FLINK_LOG_DIR
value: /usr/share/flink/logs/
- name: TM_RPC_PORT
valueFrom:
resourceFieldRef:
containerName: taskmanager
fieldPath: ports.rpc
- name: TM_DATA_PORT
valueFrom:
resourceFieldRef:
containerName: taskmanager
fieldPath: ports.data
I get this error:
error: error converting YAML to JSON: yaml: line 51: mapping values are not allowed in this context
I believe the way I am trying to access my named ports is wrong, but I have no clue what the right way is. What is the right way to access the named ports?
for starters try to rearrange your yaml like this (one indent less)
- name: TM_RPC_PORT
valueFrom:
resourceFieldRef:
containerName: taskmanager
fieldPath: ports.rpc