アプリケーションに構成ファイルを作成する構成マップがあります。
構造は以下のようになります。
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
。詳細については、以下のソースを参照してください。