<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## ConfigMap 其實ConfigMap功能在Kubernetes1.2版本的時候就有了,許多應用程序會從配置文件、命令行參數或環境變量中讀取配置信息。這些配置信息需要與docker image解耦,你總不能每修改一個配置就重做一個image吧?ConfigMap API給我們提供了向容器中注入配置信息的機制,ConfigMap可以被用來保存單個屬性,也可以用來保存整個配置文件或者JSON二進制大對象。 ## ConfigMap概覽 **ConfigMap API**資源用來保存**key-value pair**配置數據,這個數據可以在**pods**里使用,或者被用來為像**controller**一樣的系統組件存儲配置數據。雖然ConfigMap跟[Secrets](https://kubernetes.io/docs/user-guide/secrets/)類似,但是ConfigMap更方便的處理不含敏感信息的字符串。 注意:ConfigMaps不是屬性配置文件的替代品。ConfigMaps只是作為多個properties文件的引用。你可以把它理解為Linux系統中的`/etc`目錄,專門用來存儲配置文件的目錄。下面舉個例子,使用ConfigMap配置來創建Kubernetes Volumes,ConfigMap中的每個data項都會成為一個新文件。 ```yaml kind: ConfigMap apiVersion: v1 metadata: creationTimestamp: 2016-02-18T19:14:38Z name: example-config namespace: default data: example.property.1: hello example.property.2: world example.property.file: |- property.1=value-1 property.2=value-2 property.3=value-3 ``` `data`一欄包括了配置數據,ConfigMap可以被用來保存單個屬性,也可以用來保存一個配置文件。 配置數據可以通過很多種方式在Pods里被使用。ConfigMaps可以被用來: 1. 設置環境變量的值 2. 在容器里設置命令行參數 3. 在數據卷里面創建config文件 用戶和系統組件兩者都可以在ConfigMap里面存儲配置數據。 其實不用看下面的文章,直接從`kubectl create configmap -h`的幫助信息中就可以對ConfigMap究竟如何創建略知一二了。 ``` Examples: # Create a new configmap named my-config based on folder bar kubectl create configmap my-config --from-file=path/to/bar # Create a new configmap named my-config with specified keys instead of file basenames on disk kubectl create configmap my-config --from-file=key1=/path/to/bar/file1.txt --from-file=key2=/path/to/bar/file2.txt # Create a new configmap named my-config with key1=config1 and key2=config2 kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2 ``` ## 創建ConfigMaps 可以使用該命令,用給定值、文件或目錄來創建ConfigMap。 ``` kubectl create configmap ``` ### 使用目錄創建 比如我們已經有了一些配置文件,其中包含了我們想要設置的ConfigMap的值: ```bash $ ls docs/user-guide/configmap/kubectl/ game.properties ui.properties $ cat docs/user-guide/configmap/kubectl/game.properties enemies=aliens lives=3 enemies.cheat=true enemies.cheat.level=noGoodRotten secret.code.passphrase=UUDDLRLRBABAS secret.code.allowed=true secret.code.lives=30 $ cat docs/user-guide/configmap/kubectl/ui.properties color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice ``` 使用下面的命令可以創建一個包含目錄中所有文件的ConfigMap。 ```bash $ kubectl create configmap game-config --from-file=docs/user-guide/configmap/kubectl ``` `—from-file`指定在目錄下的所有文件都會被用在ConfigMap里面創建一個鍵值對,鍵的名字就是文件名,值就是文件的內容。 讓我們來看一下這個命令創建的ConfigMap: ```yaml $ kubectl describe configmaps game-config Name: game-config Namespace: default Labels: <none> Annotations: <none> Data ==== game.properties: 158 bytes ui.properties: 83 bytes ``` 我們可以看到那兩個key是從kubectl指定的目錄中的文件名。這些key的內容可能會很大,所以在kubectl describe的輸出中,只能夠看到鍵的名字和他們的大小。 如果想要看到鍵的值的話,可以使用`kubectl get`: ```bash $ kubectl get configmaps game-config -o yaml ``` 我們以`yaml`格式輸出配置。 ```yaml apiVersion: v1 data: game.properties: | enemies=aliens lives=3 enemies.cheat=true enemies.cheat.level=noGoodRotten secret.code.passphrase=UUDDLRLRBABAS secret.code.allowed=true secret.code.lives=30 ui.properties: | color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice kind: ConfigMap metadata: creationTimestamp: 2016-02-18T18:34:05Z name: game-config namespace: default resourceVersion: "407" selfLink: /api/v1/namespaces/default/configmaps/game-config uid: 30944725-d66e-11e5-8cd0-68f728db1985 ``` ### 使用文件創建 剛才**使用目錄創建**的時候我們`—from-file`指定的是一個目錄,只要指定為一個文件就可以從單個文件中創建ConfigMap。 ```bash $ kubectl create configmap game-config-2 --from-file=docs/user-guide/configmap/kubectl/game.properties $ kubectl get configmaps game-config-2 -o yaml ``` ```yaml apiVersion: v1 data: game-special-key: | enemies=aliens lives=3 enemies.cheat=true enemies.cheat.level=noGoodRotten secret.code.passphrase=UUDDLRLRBABAS secret.code.allowed=true secret.code.lives=30 kind: ConfigMap metadata: creationTimestamp: 2016-02-18T18:54:22Z name: game-config-3 namespace: default resourceVersion: "530" selfLink: /api/v1/namespaces/default/configmaps/game-config-3 uid: 05f8da22-d671-11e5-8cd0-68f728db1985 ``` `—from-file`這個參數可以使用多次,你可以使用兩次分別指定上個實例中的那兩個配置文件,效果就跟指定整個目錄是一樣的。 ### 使用字面值創建 使用文字值創建,利用`—from-literal`參數傳遞配置信息,該參數可以使用多次,格式如下; ```bash $ kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm $ kubectl get configmaps special-config -o yaml ``` ```yaml apiVersion: v1 data: special.how: very special.type: charm kind: ConfigMap metadata: creationTimestamp: 2016-02-18T19:14:38Z name: special-config namespace: default resourceVersion: "651" selfLink: /api/v1/namespaces/default/configmaps/special-config uid: dadce046-d673-11e5-8cd0-68f728db1985 ``` ## Pod中使用ConfigMap **使用ConfigMap來替代環境變量** ConfigMap可以被用來填入環境變量。看下下面的ConfigMap。 ```yaml apiVersion: v1 kind: ConfigMap metadata: name: special-config namespace: default data: special.how: very special.type: charm ``` ```yaml apiVersion: v1 kind: ConfigMap metadata: name: env-config namespace: default data: log_level: INFO ``` 我們可以在Pod中這樣使用ConfigMap: ```yaml apiVersion: v1 kind: Pod metadata: name: dapi-test-pod spec: containers: - name: test-container image: gcr.io/google_containers/busybox command: [ "/bin/sh", "-c", "env" ] env: - name: SPECIAL_LEVEL_KEY valueFrom: configMapKeyRef: name: special-config key: special.how - name: SPECIAL_TYPE_KEY valueFrom: configMapKeyRef: name: special-config key: special.type envFrom: - configMapRef: name: env-config restartPolicy: Never ``` 這個Pod運行后會輸出如下幾行: ``` SPECIAL_LEVEL_KEY=very SPECIAL_TYPE_KEY=charm log_level=INFO ``` **用ConfigMap設置命令行參數** ConfigMap也可以被使用來設置容器中的命令或者參數值。它使用的是Kubernetes的$(VAR_NAME)替換語法。我們看下下面這個ConfigMap。 ```yaml apiVersion: v1 kind: ConfigMap metadata: name: special-config namespace: default data: special.how: very special.type: charm ``` 為了將ConfigMap中的值注入到命令行的參數里面,我們還要像前面那個例子一樣使用環境變量替換語法`${VAR_NAME)`。(其實這個東西就是給Docker容器設置環境變量,以前我創建鏡像的時候經常這么玩,通過docker run的時候指定-e參數修改鏡像里的環境變量,然后docker的CMD命令再利用該$(VAR_NAME)通過sed來修改配置文件或者作為命令行啟動參數。) ```yaml apiVersion: v1 kind: Pod metadata: name: dapi-test-pod spec: containers: - name: test-container image: gcr.io/google_containers/busybox command: [ "/bin/sh", "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)" ] env: - name: SPECIAL_LEVEL_KEY valueFrom: configMapKeyRef: name: special-config key: special.how - name: SPECIAL_TYPE_KEY valueFrom: configMapKeyRef: name: special-config key: special.type restartPolicy: Never ``` 運行這個Pod后會輸出: ``` very charm ``` **通過數據卷插件使用ConfigMap** ConfigMap也可以在數據卷里面被使用。還是這個ConfigMap。 ```yaml apiVersion: v1 kind: ConfigMap metadata: name: special-config namespace: default data: special.how: very special.type: charm ``` 在數據卷里面使用這個ConfigMap,有不同的選項。最基本的就是將文件填入數據卷,在這個文件中,鍵就是文件名,鍵值就是文件內容: ```yaml apiVersion: v1 kind: Pod metadata: name: dapi-test-pod spec: containers: - name: test-container image: gcr.io/google_containers/busybox command: [ "/bin/sh", "-c", "cat /etc/config/special.how" ] volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: name: special-config restartPolicy: Never ``` 運行這個Pod的輸出是`very`。 我們也可以在ConfigMap值被映射的數據卷里控制路徑。 ```yaml apiVersion: v1 kind: Pod metadata: name: dapi-test-pod spec: containers: - name: test-container image: gcr.io/google_containers/busybox command: [ "/bin/sh","-c","cat /etc/config/path/to/special-key" ] volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: name: special-config items: - key: special.how path: path/to/special-key restartPolicy: Never ``` 運行這個Pod后的結果是`very`。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看