Kubernetes'te ConfigMap örneği: gerçek olaylarla ilgili genel bilgiler

Son Güncelleme: 11/17/2025
  • ConfigMaps, kod yapılandırmasını ayırır ve görüntüleri yeniden oluşturmak için farklı dinamiklere izin verir
  • Şunları tüketirsiniz: env, args, hacim dosyaları ve API aracılığıyla dersler ve ek açıklamalar
  • Ses düzeylerini otomatik olarak etkinleştirme ve ortam için yeniden başlatma gerekir; 1 MiB sınırı ve kusurlu transfer
  • Uygulamalar: sürüm oluşturma, hash'i özelleştirme, RBAC, sırlardan kaçınma ve işlem sırasında değiştirilemez öğeleri kullanma

Örnek ConfigMap Kubernetes

Kubernetes ile çalışıyorsanız ve kod yapılandırmasını ayırmanız gerekiyorsa, ConfigMaps sizin için en önemli seçenektir. Görüntünün içinde bir yapılandırma yapmak için Pod'larda mantıklı olmayan klavuz değerlerinin değiştirilmesine izin verin, bu, temiz, taşınabilir ve bakım kolaylığını ortadan kaldırmayı kolaylaştırır.

Temel olarak önemli noktalar var: tam sınırlar, hacimsel olarak montarları otomatik olarak gerçekleştirmek, değişkenleri ve değişkenleri etkilemek, güvenlik uygulamaları ve gözlemlenebilirlik stratejileri. Bu, ConfigMaps'e hakim olmak için gerekenleri renklendirmede yeniden yapılandırmanın pratik bir yolu..

Bu bir ConfigMap'tir ve kullanılması gerekir

ConfigMap, Kubernetes API'sinin aynı düzeyde gizli olmayan yapılandırma verilerini toplamak için kullanılan bir nesnesidir. Hedefiniz, yarışmacı görsellerinin özel yapılandırmasını devre dışı bıraktı, her şeyi yeniden yapılandırmanın ve bir parametreyi değiştirmenin önlenmesini sağlar.

Pod'lar, ConfigMaps'i veri değişkenleri, düzen argümanları, hacimlerdeki dosya dosyaları veya doğrudan API'ye bağlı dosyalar olarak kullanabilir. Bu sistem, 12 Faktörlü Uygulamaların yapılandırma faktörünü içeriyor ve geliştirme, üretim ve üretim sırasında taşınabilirliği artırıyor.

Uygulamanın DATABASE_HOST değişkenine aktarıldığını hayal edin. Yerel olarak bir yerel ana bilgisayar bulunur ve veri tabanını açıklayan bir Hizmetin adı kullanılır. ConfigMap'i kullanarak, ikili dosyadaki görüntüye göre farklı değerler elde edebilirsiniz., aynı kodu başka bir kasaya boşaltın.

Hay una limitación clave: ConfigMap'in 1 MiB'den daha üstün olması gerekmez. Daha fazla gerekiyorsa, yapılandırmayı çeşitli ConfigMaps'e bölün veya harici bir hizmet, bir birim veya yapılandırma veri tabanı kullanın.

Kubernetes'te ConfigMap Kullanımı

ConfigMap Nesnesi: Kampüsler, İsimler ve Geçerli Klavuzlar

Kamp spesifikasyonlarına göre nesnelerin belediye başkanlığından bir fark, ConfigMap, veri ve ikili veri içindeki içeriği tanımlar. veri espera metni UTF‑8; ikili Veri, base64'te kodlanmış ikili içerik içerir; UTF‑8 olmayan formatlar için idealdir.

ConfigMap'in adı, geçerli bir alt DNS DNS'sine sahiptir ve alfanümerik, guion, guion bajo veya punto karakterlerinde içerik içeren ikili veri veya ikili veri grupları içerir. Veri grupları, ikili verilerle ayrıştırılamazÇatışmaları önlemek için kriterlere göre organize edildiği gibi.

Kubernetes v1.19, ConfigMaps'in değişmez öğelerini oluşturabilir ve değişmez bir kampa dönüştürebilir: true. v1.21 sürümünde değiştirilemez, kazara oluşabilecek değişikliklerden kaçınılır ve saatlerin API sunucusundaki yük azaltılır, aynı zamanda değişiklik gerektiriyorsa, nesneyi silme ve yeniden oluşturma eğilimindedir.

ConfigMaps ve Pod'lar: tüketim biçimleri

Bir Pod'un ConfigMap'i kullanması için, aynı ad alanında da çalışmanız gerekir. Temel tüketim ilkelerini takip edin Uygulamanın gerekli olup olmadığına bakın.

  1. Pasar, ConfigMap verilerine referans olarak yarışmacının komutlarını ve argümanlarını değerlendirir. Tartışmalar için tek başına yapılandırmayı kolaylaştıran ikili dosyalar için kullanılır.
  2. Exponer, yarışmacının içindeki değişkenler gibi clave-valor'u da temsil eder. Entorno'da kullanılabilecek uygulamalar için daha fazla seçenek.
  3. ConfigMap'i kişisel bir ders cildinde dosya halinde bulabilirsiniz. Yapılandırma arşivlerini çalıştıran uygulamalar için mükemmel.
  4. API'yi kendi koduyla birlikte ConfigMap'e bakın. API kullanan diğer ad alanları da dahil olmak üzere farklı adlara kaydolmaya ve sıcaklıkta yanıt vermeye izin verin.

Kubernetes, hacim olarak kullanıldığında arşivler oluşturur. Hacimdeki öğeleri tanımlar, seçilebilir ve somut bölümleri yeniden adlandırabilirsiniz; eğer hayır, bugünlerde bir projeniz var. También, belirli kuralları ele alabilir ve her dosya için POSIX'e izin verebilir.

ConfigMaps montajlarının ve değişken değişkenlerinin güncelleştirilmesi

Un detalle crítico: Bir ConfigMap'i bir ciltte monte ettiğinizde, değişiklikler otomatik olarak küçük bir geri dönüşle yayılır.. Kubelet, içeriği her zaman senkronize ederek yerel bir önbellekte saklar.

Bu uyumluluk, TTL veya doğrudan API sunucusu üzerinden izleyebileceğiniz configMapAndSecretChangeDetectionStrategy'ye bağlıdır. Toplam gecikme, önbellek yayılımından daha fazla kubelet senkronizasyon süresinin toplamı kadardır; kusurluysa, 1 dakikalık senkronizasyon ve 1 dakikalık TTL, 2 dakikalık gecikmeye kadar izin verebilir.

Bunun yerine, ConfigMaps'ten türetilen değişkenler otomatik olarak gerçekleştirilmiyor. İşlemin yeni değerleri geri kazanması için Pod'u yeniden başlatmanız veya kullanıma sunmanız gerekir. Dağıtımlar'da bir yeniden yükleme sağlamak için bir yazılım, Kapsül Şablonu'nda bir açıklama değiştirerek yeni bir ReplicaSet'i tetikler.

Crear ConfigMaps con kubectl

Kubectl ile yapılandırma haritası oluşturabilir veya kustomization.yaml'de özelleştirme oluşturucuları oluşturabilirsiniz. kubectl çeşitli kaynaklara izin verir: dizinler, bireysel dosyalar, değişmez dosyalar ve ortam dosyaları.

Desde un directorio

Geçerli dizin adı ile tüm düzenli dosyalarınızı doldurun, dosya adı olarak dosya adını ve içeriği de değer olarak kullanın. Düzenli olarak hiçbir oğlunun görmezden geldiği girişler alt dizinler gibi veya sembolleri birleştirir.

kubectl create configmap game-config --from-file=configure-pod-container/configmap/

ConfigMap'i örneğin oyun.özellikleri ve kullanıcı arayüzü verilerinin orijinal metniyle açıklayın. Bu, kümedeki yapılandırma dosyalarının en büyük biçimidir.

Desde ficheros concretos

Kaynakları birleştirmek için dosyadan çeşitli tekrarlar yapabilirsiniz. Dosyanın kusurlu olması, arşivin temel adıdır., ayrıca bir fark belirtebilirsiniz.

kubectl create configmap game-config-2 
  --from-file=configure-pod-container/configmap/game.properties 
  --from-file=configure-pod-container/configmap/ui.properties

Dosya için başka bir yolu tanımlamak isterseniz, klavuz=yol formunu kullanın. Bu, çeşitli arşivlerin adları karşılaştırması veya daha fazla açıklama içeren sevgili adları kullanması için kullanılır..

kubectl create configmap game-config-3 
  --from-file=game-special-key=configure-pod-container/configmap/game.properties

Desde valores literales

Kelimenin tam anlamıyla, gerekli olan seçenekleri tekrarlayarak, çevrimiçi olarak eşit değer değerlerini tanımlar. Hızları veya bir mülk vuruşunu ayarlamak için idealdir.

kubectl create configmap special-config 
  --from-literal=special.type=charm 
  --from-literal=special.how=very

Desde env dosyaları

–env dosyasından, .env biçimindeki değişkenler arşivinin bir bölümünü oluşturur. v1.23, kaynakları birleştirmek için ortam dosyasından belirli çeşitli özelliklere sahiptir.

kubectl create configmap my-config --from-env-file=app.env --from-env-file=extra.env

Kişiselleştirme ile Genel Yapılandırma Haritaları

Özelleştirme, dosyaların veya değişmezlerin ConfigMap'lerini oluşturmak için özelleştirme.yaml dosyasında oluşturucuların bildirilmesine izin verir. Oluşturulan isim, bir sufi içerik karması içerir Verilerinizi değiştirmek için yeni bir nesneyi garanti etmek için.

configMapGenerator:
- name: game-config-4
  files:
  - configure-pod-container/configmap/game.properties

Bu, dosya adından farklı bir kategoriye ait olabilir. Bu teknik, bildirimleri ortadan kaldırmayı ve yapılandırma önbelleğindeki sorunları ortadan kaldırmayı kolaylaştırır.

configMapGenerator:
- name: game-config-5
  files:
  - game-special-key=configure-pod-container/configmap/game.properties

ConfigMaps'i ortam değişkenleri olarak kullanın

Tienes dos patrones müdürleri. EnvFrom'dan ConfigMap'in tüm öğelerini içerik değişkenleri olarak içe aktarır. Uygulamada çok sayıda değişken olduğunda hızlı ve rahat.

envFrom:
- configMapRef:
    name: my-config

Eğer tek başınıza başka anahtarlar veya şifreler sorarsanız, değerFrom.configMapKeyRef'i kıskanırsınız. Farklı zaman aralıkları ve değişkenin adı farklı olabilir.

env:
- name: CONFIGMAP_USERNAME
  valueFrom:
    configMapKeyRef:
      name: my-config
      key: username

Ojo: Entorno değişken isimleri, karakter sınırlamasıyla birlikte kabul edilir. ConfigMap'in bir anahtarı bir ortam için geçerli değilse, InvalidEnvironmentVariableNames türünde bir olayı atlayın ve kaydedin, aunque el Pod arrancará.

Montar ConfigMaps dosya olarak

Verileri arşiv olarak göstermek için, birimi configMap.name ile özel hacimlere ekleyin ve bu birimi gerekli olan her içerikteki hacimle birlikte ekleyin. Bu ağ MountPath'in bir dosyası olarak projelendiriliyor.

volumes:
- name: config-volume
  configMap:
    name: special-config

containers:
- name: app
  image: my-image
  volumeMounts:
  - name: config-volume
    mountPath: /etc/config
    readOnly: true

Haritalar, yoldaki öğeleri kullanan kuralları ve kesin adları belirler veya alt Yol ile tek bir yol oluşturabilir. Dosya izinlerini varsayılan mod veya klavyeye göre ayarlayabilirsiniz.

volumes:
- name: config-volume
  configMap:
    name: special-config
    items:
    - key: SPECIAL_LEVEL
      path: keys

Önemli Not: Resimde montaj dizininde dosyalar mevcutsa, cilt tarafından görüntülenebilir. Boşaltma sırasında gerekli olan dosyaları silmemek için bunu yapın.

Metin UTF-8'de gösterilir; diğer kodlar veya ikili dosyalar için, ABD ikili Verileri. ConfigMap'i etkinleştirdiğinizde, önerilen içerik sözü geçen gecikmeyle yenilenir.. Yeniden kaydetme için Pod'a bir not ekleyerek, işlemin gerçekleştirilmesini hızlandırabilirsiniz.

İsteğe bağlı referanslar, ad alanları ve kısıtlamalar

Bir ConfigMap referansı isteğe bağlı olarak kullanılabilir. ConfigMap mevcut değilse, birim boşalır ve ortam değişkeninin değeri değişmez; Eğer beton mevcut değilse, ruta veya değişken değişkenler kullanılabilir.

Reglas a recordar: İsteğe bağlı olarak işaretler gönderilmeden önce ConfigMap'in mevcut olması gerekir, ConfigMap gibi Pod da aynı ad alanında yer alır. ConfigMaps, Kubelet tarafından doğrudan oluşturulan statik bölmelerle uyumlu değildir.

ConfigMaps değişmezleri

Değiştirilemez ConfigMaps işlevi, birçok montaj kümesinde açıklanabilir: sorunlara neden olan diğer değişiklikleri koruyun ve belirli saatlerde API sunucusunun yükünü azaltın. Değişmez bir şey doğrudur, ikili verilerde hiçbir veri düzenlemesi yoktur; Bu, kötü referansları engellemek için yüklenen Pod'ları silip yeniden oluşturabilmenizi ve normal şekilde yeniden başlatabilmenizi sağlar.

Sınırlar, Tamaño ve Dahili Depolama

ConfigMaps, API nesnelerinin geri kalanıyla birlikte korunur. Kusurlu bir işlem yok; Yedeklemelere erişilebildiğinde, yedekler içeriğinde bulunabilir, çünkü gizli bilgilerin alınması gerekmemektedir.

Existe un límite de tamaño: Tamamlanan nesnenin 1 MiB boyutunda olması gerekiyor. Aşırı büyük bir hata oluştu. Bu teknikle karşılaşırsanız, çeşitli ConfigMaps'lerde yapılandırmayı yeniden hazırlayın veya hacimlere veya harici hizmetlere yönelik bilgi aktarımı yapın.

Karşılaştırmalı hızlı: ConfigMaps, veri tabanı değişkenleri ve Secrets

Çeşitli seçenekler konfigürasyona yol açar. ConfigMaps, mantıklı olmayan verileri merkezileştiriyor ve dinamikleri gerçekleştirmeyi kabul ediyor. Farklı yapılandırmalardaki değişkenler, farklı ayarlar için yeniden konuşlandırılabilir. Temel64'te kodlanmış mantıklı veriler içeren sırlar; gerçek değil, ancak ayrılıklara ve daha büyük kontrollere erişim politikalarına izin veriliyor.

  • Yapılandırma Haritaları: arşiv veya ortam gibi mantıklı, dinamik ve kolay kurulum yok. Arızalı ürün yok.
  • Ortam Değişkenleri: Ancak çok fazla uygulamanız varsa ve sıcaklıkta gerçekleştirilmiyorsa.
  • sırları: mantıklı veriler; normal yapılandırmanın ayrı kimlik bilgileri, özel olarak anlaşılması gerekir.

İyi uygulamalar ve güvenlik

ConfigMaps sürümlerini bir yerde saklayın ve sürüm açıklamalarını veya sürüm dosyalarını kullanın. Özelleştirmeyle, içerik karmaları ek bilgilerden yararlanarak daha fazla bilgi sağlar.

Evita ConfigMaps'e gizli bilgiler sunuyor; Erişimi sınırlamak için ABD Sırları ve RBAC. Uygulamadan önce satır satırlarını ve temel bilgileri doğrulama Biçim veya girinti hatalarını azaltmak için.

RBAC erişimini kontrol edin. Örneğin, un rol de solo lectura bir ad alanındaki yapılandırma haritaları için:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: configmap-reader
rules:
- apiGroups: ['']
  resources: ['configmaps']
  verbs: ['get', 'list', 'watch']

Değişiklikler için, canlı ortamda düzenleme ve uygulama, ancak üretimde, PR tarafından başvuru ve revizyon yoluyla beyan edilen beyan yöntemi tercih edilir. Ortam değişkenleri kullanıyorsanız, Pod'ların yeni değerleri yeniden belirlemesi için ConfigMap'i düzenleyerek kullanıma sunma planını yapın.

Avanzados ve gerçek senaryolar

Çoklu ortamlar: geliştirme, aşamalandırma ve üretim için özel ConfigMaps oluşturun. Yardımcı önlemler geliştirici sürümlerdeki hataları ayarlar ve azaltır.

Kümeler arasında kopyalayın: Manifestolar halinde, gerekli yerlere göre taşıyıcılar ve uygulamalar yapabilirsiniz. Esto agiliza migraciones o DR.

Çeşitli yanıtlara yanıt veren uygulamalar: API'deki ConfigMaps varsa, olayları kaydedin ve görüntülü olarak yanıt verin. Bu, kodların daha da karmaşık hale getirilmesiyle birlikte, yeniden başlatmalar için uyumlu hale getirilmesine izin veren bir bilgidir..

Dağıtımlarla ilgili açıklamalar: ortamdaki ve birimlerdeki ConfigMaps'e bakın. ConfigMap'i ortam olarak kullandığınızda yenileme yapmak için, Kapsül Şablonunda bir açıklama sağlama toplamı ekleyin veya bir etiketi artırın, yeni bir ReplicaSet'in desenlendirilmesini sağlar.

Proje hacimlerinin ayrıntıları

Pod'un çeşitli kökenlerden bir hacim tanımlaması durumunda, kombinasyonlar için öngörülen hacimleri kullanın. Öğelerle ilgili harita haritaları, dosya adlarının uygulamanızla tutarlı olmasına izin verir. subPath, dizini tamamlamak için tek bir anahtar oluşturmak için kullanılır.

Kişisel derste ConfigMap montajlarını kurtarın ve hacimdeki gizli gizli dosyalarda dosyalar halindeki görüntüleri kurtarın. Görüntüdeki önemli unsurların yer almadığı montaj planları.

Tüm ayarların ayrıntılı olarak gerçekleştirilmesi ve algılanması

Kubelet, MapAndSecretChangeDetectionStrategy yapılandırmasındaki değişiklikleri tespit etmeye karar verir. Kusurlu modu izleyin, TTL'yi bir önbelleğe alın ve her API sunucusuna doğrudan başvurun. Başka bir gecikme ve kontrol düzlemi yükü etkisinden kurtulun.

Montajlardaki etkili yenileme, önbellek yayılımının daha fazla olduğu senkronizasyon dönemine kadar gecikebilir. Hemen gerçekleştirilmesi gerekiyorsa, yansımayı güçlendirecek bir senkronizasyon oluşturmak için Pod'daki bir açıklamayı değiştirin. Bu kullanıcı gecikmesi veya arızası kabul edilemez olduğunda sık sık kullanılır.

Kısıtlamalar ve hatalarla uyumluluk

İsteğe bağlı olarak bir ConfigMap referansı mevcut değilse, Pod düzenlenemez. Aynı modda, mevcut olmayan referans komutları, isteğe bağlı somut referansların başlangıç ​​salvosunu engelliyor.

EnvFrom kullanıldığında, ortam değişkenleri için uyumsuz olan kodlar atlanır ve tuzlu kodlar listesiyle bir olay doğrulanır. Bu, bazı temel değişkenlerin yanı sıra bazı düzenleme hatalarından da kaçınılmasını sağlar..

Alışılmış Uygulamalar

Dosyalarda bir ConfigMap oluşturun ve açıklayın

kubectl create configmap app-config --from-file=.env.local --from-file=.env.remote
kubectl describe configmap app-config

Klavyeler, dosya adlarını ve içeriklerini, değerlerini içerir. Tanımladığınız nesneyi inceleyin ve klavyelerin esperabas gibi doldurulduğunu doğrulayın..

Bir beton parçasının içindeki değişkenler

env:
- name: PORT
  valueFrom:
    configMapKeyRef:
      name: app-config
      key: port

Bu patron, işlemin girişine aktarılan kontrolün iyi olmasını sağlar. Bu özellikle ConfigMap'in bütünleşik bir açıklama gerektirmeyen çok kanallı parçalar içermesi durumunda kullanılır..

Montaj öğeleri ve izinleri seçin

volumes:
- name: config-volume
  configMap:
    name: special-config
    items:
    - key: SPECIAL_TYPE
      path: conf/type
      mode: 0640

Bilgi akışını azaltmak için yeterli izinlerle beton kalıpları koruyun ve yapıyı uygulamanız için ayrılan veri tabanıyla hizalayın. Arızalı bir değer için varsayılan Modu kullanın ve ihtiyaç duyulduğunda kontrol için varsayılan modu kullanın.

Yaygın sorunları giderme

Adlandırılmış değişkenler: ConfigMap'teki komutların, envFrom kullanıldığında çevre adlarına göre doğrulandığını gözden geçirin. Geçersiz isimler tarafından indirilip indirilmediğini öğrenmek için Pod etkinliklerine başvurun.

Gizli dosya montajları: Görüntüde yer alan boş dosyaların bir araya getirilmesi durumunda, muhtemelen MountPoint'in gölgede kalması muhtemeldir. Tek başına bir klavye gerekiyorsa MountPath'i başka bir rotaya veya subPath'e geçirin.

Gerçekleştirilemeyen gerçekleşmeler: yeniden başlatılmasını veya kullanıma sunulmasını gerektiren ortam değişkenleri; ses seviyelerinde, senkronizasyon havalandırması sağlayın veya bir açıklamayı gerçekleştirecek bir yansıma sağlayın. Eğer başka bir şey istiyorsanız, cambiyotiğin tespiti için doğrudan stratejiyi değerlendirin.

Tamaño hataları: çok büyük tarifler varsa, ConfigMap'i bölün veya yapılandırma stratejisini değiştirin. Nesne için 1 MiB sınırını kurtarın.

Güvenlik: ConfigMaps'te gizli bilgileri ortadan kaldırın; ABD Sırları ve RBAC uygulaması. Destek platformunda ve dış politikada veri deposundaki şifreyi göz önünde bulundurun.

Organizasyon ve Yönetim Patronları

İşlevsel olarak Yapılandırma Haritalarını ayırın: veri tabanı, API, kullanıcı arayüzü. Bu, patlama yarıçapını azaltmak ve beton değerlerinin dönüşünü kolaylaştırmak için.

Teklifi, bağlantıları ve iletişim bilgilerini belgeleyin. Nesnelerin listesini elde ettiğimizde, belge kötü niyetli kişilerin engellenmesi için depoda canlı olarak duruyor. Her ConfigMap için kıskançlıkla ilgili tüketim örneklerini ve hacimleri ekleyin.

Birden fazla kaynak oluşturup oluşturmadığınızı göz önünde bulundurarak, uygulamadaki lifleri ve humus testlerini otomatikleştirin. YAML'in giriş temellerini, eleştiri notlarının mevcut olup olmadığını kontrol etmek için birleştirin.

Bunları dağıtmak için, ConfigMap'in bir sağlama toplamı ile Pod Şablonu'na sağlam bir strateji eklenir, bu da her şeyin kullanıma sunulmasını tetikleyecek biçimdir. Bu, kullanan rakiplerin yeni değerlerden yararlanacağını garanti eder.

ConfigMaps'in özü önemli, ancak tüketim değişkenleri, gerçekleştirme politikaları ve değişiklik değişiklikleri hakim olduğunda gerçek değeri ortaya çıkıyor. Önceki uygulamaları, güvenlik yapılandırmalarını, kontrolleri ve yükseltme listelerini izleyin.

İlgili Mesajlar: