Как уже сказал @Jonas, вы должны рассмотреть возможность использования Secret
. Это хорошо описано в этой статье.
Я хочу использовать kubectl apply -k и каким-то образом передать значение для $ {PASSWORD}, которое я могу установить из моего скрипта сборки.
Я полагаю, ваш скрипт может сохранить сгенерированный пароль в виде переменной или сохранить его в каком-нибудь файле. Вы можете легко создать Secret
следующим образом:
$ kustomize edit add secret sl-demo-app --from-literal=db-password=$PASSWORD
или из файла:
$ kustomize edit add secret sl-demo-app --from-file=file/path
Как вы можете прочитать в упомянутой статье:
Эти команды изменят ваш kustomization.yaml
и добавят в него SecretGenerator
.
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../../base
patchesStrategicMerge:
- custom-env.yaml
- replica-and-rollout-strategy.yaml
secretGenerator:
- literals:
- db-password=12345
name: sl-demo-app
type: Opaque
kustomize build
Выполнение в вашем каталоге проекта создаст среди прочих следующие Secret
:
apiVersion: v1
data:
db-password: MTIzNDU=
kind: Secret
metadata:
name: sl-demo-app-6ft88t2625
type: Opaque
...
Более подробную информацию вы можете получить в статье .
Если мы хотим использовать этот секрет из нашего развертывания, у нас просто, как и прежде, есть добавьте новое определение слоя, которое использует секрет.
Например, этот файл будет монтировать значение db-пароля в качестве переменных окружения
apiVersion: apps/v1
kind: Deployment
metadata:
name: sl-demo-app
spec:
template:
spec:
containers:
- name: app
env:
- name: "DB_PASSWORD"
valueFrom:
secretKeyRef:
name: sl-demo-app
key: db.password
В вашем файле определения Deployment
это может выглядеть примерно так:
apiVersion: apps/v1
kind: Deployment
metadata:
name: flux
spec:
template:
spec:
containers:
- name: some-name
env:
- name: "PASSWORD"
valueFrom:
secretKeyRef:
name: git-secret
key: git.password
args:
- --some-key=some-value
...
- --git-url=https://user:${PASSWORD}@domain.de