내 응용 프로그램에 구성 파일을 생성하는 구성 맵이 있습니다.
구조는 아래와 같습니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: database-configmap
data:
config: |
dbport=5432
dcname=
dbssl=false
locktime=300
domainuser=
dattserverhost=localhost
conntype=ON-PREM
dbinstance=
dattusessl=false
dbpwd=VrjvBguQ
iisport=80
docountupgrade=false
doreportupgrade=false
dbname=dattdatabase
dattuseiis=false
dbtype=POSTGRESQL
dbusername=postg
dbserver=tgres.database.azure.com
domainpwd=
전체 파일은 속성 파일에 덤프되므로 응용 프로그램에서 해당 파일을 사용할 수 있습니다.
어쨌든 일부 속성(dbusername,dbpassword 등)을 kubernetes 비밀로 저장할 수 있고 배포 포드가 생성되면 이러한 비밀과 configmap이 속성 파일에 병합됩니까?
제안해주세요.
답변1
짧은 대답: 하지 마세요.
Secrets
그리고 ConfigMaps
다른 개체입니다. Secrets
Base64 인코딩으로 난독화되어 기밀 데이터에 사용해야 하지만 ConfigMaps
기밀이 아닌 데이터에는 사용해야 합니다.
기밀 데이터와 비기밀 데이터에 대해 별도의 개체를 만들고 이를 Deployment
. 및 를 Deployment
모두 사용하도록 를 수정할 수 있습니다 . 예를 들면 다음과 같습니다.Secrets
ConfigMaps
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: envtest
spec:
replicas: 1
template:
metadata:
labels:
name: envtest
spec:
containers:
- name: envtest
image: gcr.io/<PROJECT_ID>/envtest
ports:
- containerPort: 3000
env:
- name: LANGUAGE
valueFrom:
configMapKeyRef:
name: language
key: LANGUAGE
- name: API_KEY
valueFrom:
secretKeyRef:
name: apikey
key: API_KEY
Secrets
및 를 모두 사용하는 방법도 다릅니다 ConfigMaps
. 자세한 내용은 아래 소스를 참조하세요.