У меня есть следующие секреты kubernetes, и я хочу скопировать весь контент как есть в один файл.
api:
url: https://app.a.com/test
application:
metadata: name = "myname"
в yaml у меня есть следующие
apiVersion: apps/v1
kind: Deployment
metadata:
name: active-mq
labels:
app: active-mq
spec:
replicas: 1
selector:
matchLabels:
app: active-mq
template:
metadata:
labels:
app: active-mq
spec:
containers:
- image: [name-of-my-image-from-docker-hub]
name: active-mq
imagePullPolicy: Always
resources:
requests:
memory: 500Mi
cpu: 200m
limits:
memory: 1000Mi
cpu: 400m
volumeMounts:
- name: active-creds
mountPath: /home/my.properties
subPath: my.properties
volumes:
- name: active-creds
secret:
secretName: creds
restartPolicy: Always
когда я запускаю контейнер, я вижу, что он создает имя каталога как my.properties
под /home
. это что-то, что мне здесь не хватает?
Я ожидаю, что my.properties должен содержать следующее
api:
url: https://app.a.com/test
application:
metadata: name = "myname"
Из вашего вопроса неясно, но я подозреваю, что не создал секрет, чтобы отразить нужные вам ключи. В этом случае ключ становится именем файла (например, my.properties
). Вы не хотите, чтобы ключи были api
и application
.
# Create the file locally
echo '
api:
url: https://app.a.com/test
application:
metadata: name = "myname"' > my.foo
# Create the Kubernetes Secret from it
# NB This renames to "my.properties" from "my.foo"
kubectl create secret generic test \
--from-file=my.properties=${PWD}/my.foo
get secret test \
--output=yaml
Урожайность:
apiVersion: v1
data:
my.properties: YXBpOiAK...
kind: Secret
metadata:
name: test
type: Opaque
NOTE
data
contains a keymy.properties
Затем:
# Using your Deployment
kubectl apply \
--filename=71484256.yaml
# I replaced your image with busybox
kubectl exec \
--stdin --tty \
deployment/test \
-- ash
Затем из оболочки контейнера:
# ls /home
my.properties
# more /home/my.properties
api:
url: https://app.a.com/test
application:
metadata: name=myname