Я новичок в мире docker / k8s ... Меня спросили, могу ли я развернуть контейнер, используя args для изменения поведения (обычно, если приложение работает в «основной» или «подчиненной» версии), которую я сделал. Возможно, не оптимальное решение, но оно работает:
Это простой тест для проверки. Я сделал собственное изображение со скриптом внутри:
role.sh:
#!/bin/sh
ROLE=$1
echo "You are running "$ROLE" version of your app"
Dockerfile:
FROM centos:7.4.1708
COPY ./role.sh /usr/local/bin
RUN chmod a+x /usr/local/bin/role.sh
ENV ROLE=""
ARG ROLE
ENTRYPOINT ["role.sh"]
CMD ["${ROLE}"]
Если я запускаю этот контейнер с помощью Docker, используя следующую команду:
docker run -dit --name test docker.local:5000/test master
Я получаю следующий журнал, который именно то, что я ищу:
You are running master version of your app
Теперь я хочу иметь такое же поведение на k8s, используя файл yaml. Я пробовал несколько способов, но ни один не помог.
Файл YAML:
apiVersion: v1
kind: Pod
metadata:
name: master-pod
labels:
app: test-master
spec:
containers:
- name: test-master-container
image: docker.local:5000/test
command: ["role.sh"]
args: ["master"]
Я видел так много разных способов сделать это, и я должен сказать, что я все еще не понимаю разницу между ARG и ENV.
Я тоже пробовал с
- name: test-master-container
image: docker.local:5000/test
env:
- name: ROLE
value: master
и
- name: test-master-container
image: docker.local:5000/test
args:
- master
но ничего из этого не сработало, мои модули всегда находятся в состоянии CrashLoopBackOff ..
Заранее спасибо за помощь!