He creado un secreto y cuando implemento una aplicación destinada a leer el secreto, la aplicación se queja de que el secreto es un directorio.
¿Qué estoy haciendo mal? El archivo está destinado a ser leído como, bueno, un archivo.
kc logs <pod> (error) /var/config/my-file.yaml: is a directory.El secreto se crea así.
kubectl create secret generic my-file.yaml --from-file=my-file.yamlY aquí está el despliegue.
apiVersion: apps/v1 kind: Deployment metadata: name: a-name spec: replicas: 1 selector: matchLabels: name: a-name template: metadata: labels: name: a-name spec: volumes: - name: my-secret-volume secret: secretName: my-file.yaml containers: - name: a-name image: test/image:v1.0.0 volumeMounts: - name: my-secret-volume mountPath: /var/config/my-file.yaml subPath: my-file.yaml readOnly: true ports: - containerPort: 1234 - containerPort: 5678 imagePullPolicy: Always args: - run - --config - /var/config/my-file.yaml revisionHistoryLimit: 1Está utilizando subPath en la sección de montaje de volumen. De acuerdo con el documento de volumen de Kubernetes, cuando necesita el mismo volumen para diferentes propósitos en el mismo pod, debe usar subPath .
Pero aquí está usando el volumen para un solo uso. Pero te daré ambos archivos yaml con subRuta y sin subRuta.
con subruta
volumeMounts: - name: my-secret-volume mountPath: /var/config subPath: config readOnly: trueSin subruta
volumeMounts: - name: my-secret-volume mountPath: /var/config readOnly: trueEl resto del archivo de manifiesto será el mismo en ambos casos.