kubernetes에서 configmap의 일부로 비밀을 유지하는 방법은 무엇입니까?

kubernetes에서 configmap의 일부로 비밀을 유지하는 방법은 무엇입니까?

내 응용 프로그램에 구성 파일을 생성하는 구성 맵이 있습니다.

구조는 아래와 같습니다.

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다른 개체입니다. SecretsBase64 인코딩으로 난독화되어 기밀 데이터에 사용해야 하지만 ConfigMaps기밀이 아닌 데이터에는 사용해야 합니다.

기밀 데이터와 비기밀 데이터에 대해 별도의 개체를 만들고 이를 Deployment. 및 를 Deployment모두 사용하도록 를 수정할 수 있습니다 . 예를 들면 다음과 같습니다.SecretsConfigMaps

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. 자세한 내용은 아래 소스를 참조하세요.

관련 정보