• 黄堃健
    2022-12-28 来自广东
    只有通过目录挂载的configmap才具备热更新能力,其余通过环境变量,通过subPath挂载的文件都不能动态更新。 并且有一个延迟。一般就是kubelet的定时更新频率

    作者回复: 是的,非常正确。

    
    3
  • includestdio.h
    2022-12-29 来自广东
    大致分3种使用方式,官网文档介绍的比较详细 1.使用 ConfigMap 数据定义容器环境变量: https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-pod-configmap/#define-container-environment-variables-using-configmap-data 2.将 ConfigMap 中的所有键值对配置为容器环境变量: https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-container-environment-variables 3.在 Pod 命令中使用 ConfigMap 定义的环境变量: https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-pod-configmap/#use-configmap-defined-environment-variables-in-pod-commands 使用 kubectl create configmap 创建 ConfigMap https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-pod-configmap/#create-a-configmap-using-kubectl-create-configmap
    展开

    作者回复: 很完整。

    
    2
  • PeiHongbing
    2022-12-28 来自广东
    课后题1如下: apiVersion: v1 kind: ConfigMap metadata: name: backend-env data: DATABASE_URI: pg-service DATABASE_USERNAME: postgres DATABASE_PASSWORD: postgres --- apiVersion: apps/v1 kind: Deployment metadata: name: backend labels: app: backend spec: replicas: 1 selector: matchLabels: app: backend template: metadata: labels: app: backend spec: containers: - name: flask-backend image: lyzhang1999/backend:latest imagePullPolicy: Always ports: - containerPort: 5000 envFrom: - configMapRef: name: backend-env

    作者回复: 非常正确!

    共 2 条评论
    2
  • 大圆圆鐒噬
    2023-01-15 来自陕西
    Create secret for PSQL init sql scritps, kubectl create secret generic ads-db-secret --from-file createdb.sql --dry-run=client -o yaml apiVersion: v1 data: createdb.sql: Q1JFQVRFIFRBQkxFIHRleHQgKAogICAgaWQgc2VyaWFsIFBSSU1BUlkgS0VZLAogICAgdGV4dCBWQVJDSEFSICggMTAwICkgVU5JUVVFIE5PVCBOVUxMCik7Cg== kind: Secret metadata: creationTimestamp: null name: ads-db-secret

    作者回复: 正确👍🏻

    
    1
  • RRR
    2023-08-20 来自新加坡
    只有通过 volume 挂载的 configmap 才能实时更新,被已运行的容器感知到。 如果 env 方式,只能重新构建镜像了

    作者回复: 或者通过工作负载的 env 字段覆写

    
    
  • quietwater
    2023-03-18 来自北京
    老师Secret是Base64编码,安全性低。像数据库的用户名和密码这样要求高安全的配置信息,有什么更好的方法吗?

    作者回复: 可以通过加密 Secret 来实现,参考第29讲的内容。

    
    
  • 范飞扬
    2023-02-17 来自上海
    有小的拼写错误:“我们使用的是更上层的工作负载,例如 Daeployment”

    作者回复: 感谢指正~

    
    
  • 李多
    2023-01-08 来自广东
    课后题2: // 直接通过文件生成 # cat local-config.yaml service=conf port=8081 # k create configmap local-config --from-file=local-config.yaml configmap/local-config created # k get configmap local-config -o yaml apiVersion: v1 data: local-config.yaml: | service=conf port=8081 kind: ConfigMap metadata: creationTimestamp: "2023-01-08T04:09:55Z" name: local-config namespace: default resourceVersion: "372705" uid: c88ae816-99f1-4d4f-8fe5-2a528916bde7 // 此外,还有利用 kustomization ,从文件中生成配置。我理解的 kustomization 类似于 helm,可以用模板对配置进行组装或者修改。这里就不过多演示 kustomize 了,只是感觉 从 kustomize 生成配置是不是挺重要的,我也没在生产环境中用过。 # cat <<EOF >./kustomization.yaml configMapGenerator: - name: local-game-config files: - local-config.yaml EOF # k apply -k . configmap/local-game-config-c65b9b9f5t created p# k get configmap local-game-config-c65b9b9f5t -o yaml apiVersion: v1 data: local-config.yaml: | service=conf port=8081 kind: ConfigMap metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","data":{"local-config.yaml":"service=conf\nport=8081\n"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"local-game-config-c65b9b9f5t","namespace":"default"}} creationTimestamp: "2023-01-08T04:12:45Z" name: local-game-config-c65b9b9f5t namespace: default resourceVersion: "373080" uid: 33feff4b-eec2-45db-ad92-77065f67fb22 参考:https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-pod-configmap/#create-a-configmap-using-kubectl-create-configmap
    展开

    作者回复: 正确👍🏻

    
    
  • PeiHongbing
    2022-12-28 来自广东
    app.py中的如下代码是不是写错了: db_username = os.environ.get('DATABASE_URI') db_password = os.environ.get('DATABASE_URI') db_username对应DATABASE_USERNAME db_password对应DATABASE_PASSWORD

    作者回复: 是的,已修正。

    
    
  • 橙汁
    2022-12-28 来自广东
    记得configmap在相应修改了某些信息后,热更新会有问题。忘记是啥了,如果热更新失效记得去搜下,别一直死守configmap热更新来回部署删除

    作者回复: ConfigMap 作为子路径挂载不会实时更新,另外作为 Env 也无法实时更新,需要重启 Pod。 实时更新还依赖业务程序,业务需要能感知到配置变更并自动载入。

    共 7 条评论
    