
これにより、外部ファイルにリンクされた configmap を作成できます。
kubectl create configmap database-config --from-file=database.properties
しかし、yaml を編集すると、ファイルの完全な内容がそこにダンプされていることが示されます。
プロパティ ファイルを configmap yaml と同じフォルダーに保存し、フォルダーにすべての yaml を適用できるように、yaml 内のファイルを指定する方法はありますか。
kubectl apply -f target_folder\
提案してください。
答え1
とconfigmap
は
ConfigMap は、機密性のないデータをキーと値のペアで保存するために使用される API オブジェクトです。Pod は、ConfigMap を環境変数、コマンドライン引数、またはボリューム内の構成ファイルとして使用できます。
ConfigMap を使用すると、環境固有の構成をコンテナ イメージから切り離すことができるため、アプリケーションを簡単に移植できます。
つまり、configmap
が外部ファイル (あなたの場合のように) または他の値から作成される場合、API サーバーはすべてが正しいかどうかを検証し、 に保存します。 これは、でのコンテキスト全体が表示されるetcd
理由も説明しています。 これは、 が外部ソースではなくから読み取られるために発生します。edit
configmap
configmap
etcd
これは、大きなファイルを configmaps または secrets として保存することが推奨されない理由の 1 つでもあります。クラスターのすべてのオブジェクトが 内に保存されるため、Kubernetes クラスターのパフォーマンスに影響しますetcd
。
カスタマイズ
configmap
これは、同じディレクトリ内のファイルに基づいて作成/構成時に 1 つのコマンドを実行するという要件を満たす方法の 1 つです。これは、kustomization ファイルを通じて Kubernetes オブジェクトをカスタマイズするためのスタンドアロン ツールです。
このアイデアを示すために、短くて簡単な例を作成しました。
$ tree
.
├── application.properties
└── kustomization.yaml
0 directories, 2 files
$ cat kustomization.yaml
generatorOptions:
disableNameSuffixHash: true # this flag is used to avoid creation of new configmap, instead it will be modified when file context is changed
configMapGenerator:
- name: application-config
files:
- application.properties
$ cat application.properties
listen.url=localhost:9010
client.url=some_url:3000
これをテストすると、このコマンドはレンダリングのみconfigmap の場合、まだ作成されません。
$ kubectl kustomize application.settings/
apiVersion: v1
data:
application.properties: |
listen.url=localhost:9010
client.url=some_url:3000
kind: ConfigMap
metadata:
name: application-config
最後のステップは適用するそれ:
$ kubectl apply -k application.settings/
configmap/application-config created
$ kubectl get cm
NAME DATA AGE
application-config 1 23s
上記のコマンドの簡単な説明:
これらのリソースを適用するには、--kustomize または -k フラグを指定して kubectl apply を実行します。