У меня есть модуль ansible, в котором есть плейбуки и python скрипты для управления нашим кластером k8s. У меня есть этот манифест для ansible, а также мой файл dockerfile:
apiVersion: v1
kind: Pod
metadata:
name: ansible
spec:
volumes:
- name: ansible-data
persistentVolumeClaim:
claimName: ansible-data
containers:
- name: ansible
image: foo.azurecr.io/foo:latest
command: [ "/bin/bash", "-c", "--" ]
args: [ "while true; do sleep 30; done;" ]
volumeMounts:
- mountPath: /scripts
name: ansible-data
restartPolicy: Never
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ansible-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
, а вот мой файл dockerfile для ansible image
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y --no-install-recommends \
python3.5 \
python3-pip \
python3-setuptools \
curl \
sudo \
nano \
&& \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN pip3 install --upgrade pip
RUN pip3 install ansible
RUN pip3 install openshift
RUN pip3 install clickhouse-driver
RUN pip3 install jmespath
RUN ansible-galaxy collection install community.kubernetes
RUN curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
RUN chmod +x ./kubectl
RUN sudo mv ./kubectl /usr/local/bin/kubectl
# Define working directory.
WORKDIR /
# Define default command.
CMD ["bash"]
Я хочу сделать этот модуль может использоваться для каждого кластера в экосистеме нашей компании, поэтому, когда я хочу использовать этот модуль, мне нужно войти в систему azure aks и получить контекст моего кластера aks, вот что я делаю после входа в систему ansible pod
az login -u foo@company.com
password:
и после входа в систему я получаю контекст с:
az aks get-credentials --resource-group foo --name fooCluster
Я хочу автоматизировать эти две команды, указав пароль с помощью секрета k8s и команду контекста с помощью configmap?
Должен ли я сделать это на уровне манифеста модуля или уровне файла докеров изображения?
И следует ли мне использовать контейнер init или sidecar для ввода секрета и configmap, независимо от того, используется ли механизм args / env?
Спасибо!