Skip to content

Latest commit

 

History

History
86 lines (78 loc) · 2.68 KB

File metadata and controls

86 lines (78 loc) · 2.68 KB

K8s应用配置

Env

apiVersion: apps/v1
kind: Deployment
metadata:
  name: backend
  ......
spec:
  replicas: 1
  ......
    spec:
      containers:
      - name: flask-backend
        image: lyzhang1999/backend:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 5000
        env:
        - name: DATABASE_URI
          value: pg-service
        - name: DATABASE_USERNAME
          value: postgres
        - name: DATABASE_PASSWORD
          value: postgres

获取env

import os
db_uri = os.environ.get('DATABASE_URI')

ConfigMap

示例应用的数据库就使用了 ConfigMap,它将一段初始化表结构的 SQL 以文件的方式挂载到了容器内部的一个特殊的路径上,Postgres 在启动时会自动运行该目录的 SQL 来初始化表结构。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: Postgres
  ......
spec:
  ......
  template:
    ......
    spec:
      containers:
      - name: Postgres
        image: Postgres
        volumeMounts:
        - name: sqlscript
          mountPath: /docker-entrypoint-initdb.d
        ......
      volumes:
        - name: sqlscript
          configMap:
            name: pg-init-script

这里请你重点关注两个字段,分别是 volumes 字段和 volumeMounts 字段。volumes 字段代表的含义是以卷的方式使用 pg-init-script ConfigMap,并将卷命名为 sqlscript。volumeMounts 字段和 volumes 一般成对出现,代表的含义是将 sqlscript 卷挂载到容器的 /docker-entrypoint-initdb.d 目录

Secret

apiVersion: v1
kind: Secret
metadata:
  name: pg-init-script
  namespace: example
type: Opaque
data:
  CreateDB.sql: |-
    Q1JFQVRFIFRBQkxFIHRleHQgKAogICAgaWQgc2VyaWFsIFBSSU1BUlkgS0VZLAogICAgdGV4dCBWQVJDSEFSICggMTAwICkgVU5JUVVFIE5PVCBOVUxMCik7

大致分3种使用方式,官网文档介绍的比较详细

使用 kubectl create configmap 创建 ConfigMap https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-pod-configmap/#create-a-configmap-using-kubectl-create-configmap