使用 ConfigMap 掛載配置文件

使用 ConfigMap 掛載配置文件

Intro

有一些敏感信息比如數(shù)據(jù)庫(kù)連接字符串之類的出于安全考慮,這些敏感信息保存在了 Azure KeyVault 中,最近應(yīng)用上了 k8s 部署,所以想把 Azure KeyVault 的信息遷移到 ConfigMap,不再依賴 Azure KeyVault。

ConfigMap

新建一個(gè) ConfigMap,你可以從文件創(chuàng)建,如何創(chuàng)建ConfigMap 可以參考官方文檔,也可以直接手動(dòng)編輯,這里用的 ConfigMap 如下所示:

apiVersion: v1
kind: ConfigMap
metadata:
  name: reservation-configs
  namespace: default
data:
  appsettings: |
    {      
      "ConnectionStrings": {
        "Redis": "redis-server",
        "Reservation": "Server=localhost;uid=liweihan;pwd=**;database=Reservation",
        "ElasticSearch": "elasticsearch"
      },
      "MpWechat":{
        "AppId": "wx4a41d3773ae55543",
        "AppSecret": "**********",
        "Token": "AmazingDotNet",
        "AESKey": "------------"
      },
      "AppSettings": {
        "WechatSubscribeReply": "",
        "SentryClientKey": "https://**"
      },
      "Tencent": {
        "Captcha": {
          "AppId": "2062135016",
          "AppSecret": "****"
        }
      },
      "GoogleRecaptcha": {
        "SiteKey": "6Lc-**",
        "Secret": "6Lc-**"
      },
      "Logging": {
        "LogLevel": {
          "Default": "Warning",
          "ActivityReservation": "Debug",
          "RequestLog": "Debug"
        }
      }
    }

掛載 ConfigMap 中的配置文件到 Pod

Deployment 定義如下所示, 這里直接把上面定義的 appsettings 直接掛載為應(yīng)用程序的根目錄下 appsettings.json 文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: activityreservation
  namespace: default
  labels:
    app: activityreservation
spec:
  replicas: 2
  revisionHistoryLimit: 2 # how many old ReplicaSets for this Deployment you want to retain, https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#clean-up-policy
  selector:
    matchLabels:
      app: activityreservation
  minReadySeconds: 0
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  template:
    metadata:
      labels:
        app: activityreservation
    spec:
      dnsConfig:
        options:
          - name: ndots
            value: "1"
      containers:        
        - name: activityreservation
          image: weihanli/activityreservation:20190529.2
          imagePullPolicy: IfNotPresent
          resources:
            limits:
              memory: "256Mi"
              cpu: "300m"
          readinessProbe:
            tcpSocket:
              port: 80
            initialDelaySeconds: 60
            periodSeconds: 30
          livenessProbe:
            httpGet:
              path: /Health
              port: 80
            initialDelaySeconds: 60
            periodSeconds: 60
          ports:
            - containerPort: 80
          volumeMounts:
          - name: settings
            mountPath: /app/appsettings.json
            subPath: appsettings

      volumes:
        - name: settings
          configMap:
            name: reservation-configs

測(cè)試

  1. 部署 ConfigMap

    kubectl apply -f ConfigMap.yaml
    
  2. 部署 deployment

    kubectl apply -f reservation-deployment.yaml
    
  3. 等待 pod 啟動(dòng)之后,查看 appsettings.json 文件內(nèi)容是否成功被替換掉

    獲取對(duì)應(yīng)的 pod 名稱,然后通過(guò) kubectl exec <pod-name> cat /app/appsettings.json 來(lái)獲取pod中 appsettings.json 文件的內(nèi)容

    出現(xiàn) ConnectionStrings 就證明文件被替換掉了,原始的配置文件里是沒有 ConnectionStrings 節(jié)點(diǎn)的,原始的方式是通過(guò)從 Azure KeyVault 中加載的

cat appsettings

Reference

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、基礎(chǔ)架構(gòu) 1.1 Master Master節(jié)點(diǎn)上面主要由四個(gè)模塊組成:APIServer、scheduler...
    阿斯蒂芬2閱讀 11,147評(píng)論 0 44
  • 很多應(yīng)用程序需要一些配置通過(guò)組合的配置文件,命令行參數(shù)和環(huán)境變量。這些配置應(yīng)該與鏡像內(nèi)容分離以保持容器化應(yīng)用程序的...
    YiQinGuo閱讀 13,786評(píng)論 0 3
  • 一、 K8s 是什么? Kubernetes(k8s)是自動(dòng)化容器操作的開源平臺(tái),這些操作包括部署,調(diào)度和節(jié)點(diǎn)集群...
    loveroot閱讀 6,711評(píng)論 1 21
  • 昨天2月3日 正月初八,上班第一天 她新年第一次給我打電話 對(duì)我說(shuō)“你好” “怎么了,有事嗎?” “沒有,打聲招呼...
    中年大叔的日記閱讀 236評(píng)論 0 0
  • 讓自己始終處在成長(zhǎng)的路上,讓自己與時(shí)代同步,創(chuàng)造價(jià)值而被認(rèn)同。 學(xué)習(xí)有兩種途徑:一種是自己的經(jīng)歷總結(jié), ...
    可樂爆米小花閱讀 482評(píng)論 0 0

友情鏈接更多精彩內(nèi)容