• Kubernetes的ConfigMap & Secret


    数据库连接地址,这种可能根据部署环境变化的,我们不应该写死在代码里。
    Kubernetes 为我们提供了 ConfigMap,可以方便的配置一些变量。文档
    configmap.yaml

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: mongo-config
    data:
      mongoHost: mongodb-0.mongodb
    # 应用
    kubectl apply -f configmap.yaml
    # 查看
    kubectl get configmap mongo-config -o yaml

    configmap.png

    一些重要数据,例如密码、TOKEN,我们可以放到 secret 中。文档配置证书

    注意,数据要进行 Base64 编码。Base64 工具

    secret.yaml

    apiVersion: v1
    kind: Secret
    metadata:
      name: mongo-secret
    # Opaque 用户定义的任意数据,更多类型介绍 https://kubernetes.io/zh/docs/concepts/configuration/secret/#secret-types
    type: Opaque
    data:
      # 数据要 base64。https://tools.fun/base64.html
      mongo-username: bW9uZ291c2Vy
      mongo-password: bW9uZ29wYXNz
    # 应用
    kubectl apply -f secret.yaml
    # 查看
    kubectl get secret mongo-secret -o yaml

    作为环境变量使用
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: mongodb
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: mongodb
      template:
        metadata:
          labels:
            app: mongodb
        spec:
          containers:
            - name: mongo
              image: mongo:4.4
              # IfNotPresent 仅本地没有镜像时才远程拉,Always 永远都是从远程拉,Never 永远只用本地镜像,本地没有则报错
              imagePullPolicy: IfNotPresent
              env:
              - name: MONGO_INITDB_ROOT_USERNAME
                valueFrom:
                  secretKeyRef:
                    name: mongo-secret
                    key: mongo-username
              - name: MONGO_INITDB_ROOT_PASSWORD
                valueFrom:
                  secretKeyRef:
                    name: mongo-secret
                    key: mongo-password
              # Secret 的所有数据定义为容器的环境变量,Secret 中的键名称为 Pod 中的环境变量名称
              # envFrom:
              # - secretRef:
              #     name: mongo-secret
    挂载为文件(更适合证书文件)

    挂载后,会在容器中对应路径生成文件,一个 key 一个文件,内容就是 value,文档

    apiVersion: v1
    kind: Pod
    metadata:
      name: mypod
    spec:
      containers:
      - name: mypod
        image: redis
        volumeMounts:
        - name: foo
          mountPath: "/etc/foo"
          readOnly: true
      volumes:
      - name: foo
        secret:
          secretName: mysecret

  • 相关阅读:
    在mac上搭建python环境
    iOS开发-你真的会用SDWebImage?(转发)
    iOS tableview 优化总结
    Masonry 实现输入框随键盘位置改变
    sudo 权限问题
    nodejs save遇到的一个坑
    iOS app的webview注入JS遇到的坑
    HW18-广搜
    HW17-深搜
    HW16-动归2
  • 原文地址:https://www.cnblogs.com/47Gamer/p/15870303.html
Copyright © 2020-2023  润新知