Kubernetes, Openshift Field Is Immutable Hata Kodu, Error Code

Field is Immutable Hatası Nedir?

Filed is İmmutable hata kodu değiştirilemeyen kaynaklarda karşılaştığımız bir hatadır.

Örneğin aşağıdaki selector değiştirilemeyeceği için hata ile karışılacaktır.;

spec:
  selector:
    matchLabels:
      app: backend
      env: prod
Kubernetes, Openshift Field Is Immutable Hata Kodu, Error Code 1
Kubernetes, Openshift Field Is Immutable Hata Kodu, Error Code 3

Hata kodu şu şekilde olacaktır;

The Deployment "deployment-name" is invalid: spec.selector: Invalid value:
v1.LabelSelector{MatchLabels:map[string]string{"deployment":"deployment-name"},
MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable

Field is Immutable Hatası Çözümü

Aslında hata ile karşılaşmamak için değiştirilmeyen kaynakları değiştirmemek yeterli olacaktır :). Fakat illaki değiştirmek gerekiyorsa örneğin yukarıda ki örnekte app: backend’i değiştirmeniz gerekiyorsa hatalı kaynağı silip yeniden oluşturmanız bu hatayı aşmanız için yeterli olacaktır fakat her kaynağı silmek uygun olmayabilir bu sebeple oluştururken dikkat etmeniz gerekmektedir.

ski bir kaynağı silip yeni bir kaynak oluşturmak için genellikle şu adımları izlersiniz:

  1. Eski Kaynağı Silmek: Öncelikle, var olan kaynağı silmelisiniz. Bu, kubectl delete komutuyla gerçekleştirilir. Örneğin, bir Deployment’ı silmek için:

kubectl delete deployment <deployment_adı>

veya bir Service’ı silmek için:

kubectl delete service <service_adı>

  1. Yeni Kaynağı Oluşturmak: Ardından, yeni kaynağı oluşturmalısınız. YAML dosyasını kullanarak kubectl apply veya kubectl create komutlarını kullanabilirsiniz. Örneğin:

kubectl apply -f yeni_kaynak.yaml

veya

kubectl create -f yeni_kaynak.yaml

Bu komutlar, YAML dosyasında belirtilen kaynağı Kubernetes kümenize uygular.

  1. Değişiklikleri Doğrulamak: Son olarak, değişikliklerin uygulandığını ve yeni kaynağın doğru şekilde oluşturulduğunu doğrulamak için kubectl get komutunu kullanabilirsiniz:

kubectl get deployments kubectl get services

Bu komutlar, oluşturulan yeni kaynakları ve bunların durumunu gösterir.

Yukarıdaki adımlar, mevcut bir kaynağı silip yerine yeni bir kaynak oluşturmanın genel iş akışını temsil eder. Ancak, gerçek senaryonuza bağlı olarak komutların ve dosya yapılarının değişebileceğini unutmayın.

Kubernetes, Openshift Değiştirilemeyen Kaynaklar Nelerdir?

Kubernetes’te değiştirilemeyen kaynaklar, genellikle kaynağın özelliklerine ve türüne bağlıdır. Bazı yaygın örnekler şunları içerir:

  1. Pod Adı: Bir kere bir Pod oluşturulduğunda, adı genellikle değiştirilemez. Pod’un adı, Pod’un benzersiz tanımlayıcısıdır ve genellikle sabit kalır.
  2. Namespace: Bir kaynağın Namespace’i (ad alanı), kaynağın bulunduğu mantıksal bir gruplamadır. Bir kez bir kaynak bir Namespace’e atandığında, genellikle bu atama değiştirilemez. Yani, kaynağın bir Namespace’ten başka bir Namespace’e taşınması genellikle kolay değildir.
  3. PersistentVolumeClaim (PVC) Özellikleri: Bir kez bir PVC oluşturulduğunda, boyut gibi bazı özellikler genellikle değiştirilemez. PVC’nin bir kez bağlı olduğu bir Depolama Sınıfı (Storage Class) olabilir ve bu da genellikle değiştirilemezdir.
  4. Service Tipi: Bir kez bir Servis oluşturulduğunda, genellikle Servis’in tipi (örneğin, ClusterIP, NodePort, vb.) değiştirilemez.
  5. StatefulSet Pod Sayısı: StatefulSet tarafından yönetilen Pod’ların sayısı genellikle sabit kalır. Pod sayısını değiştirmek, genellikle StatefulSet’in kendisiyle ilgili bir işlemdir ve sınırlı durumlarda mümkün olabilir.

Bu örnekler, Kubernetes’te değiştirilemeyen kaynakların sadece birkaçını temsil etmektedir. Ancak, kaynak türüne ve Kubernetes kümesinin yapılandırmasına bağlı olarak, diğer özellikler de değiştirilemez olabilir. Kaynakların belirli alanlarının değiştirilemez olduğunu belirlemek için, Kubernetes kaynak türlerinin belgelerine ve spesifikasyonlarına bakmak önemlidir.

Field is Immutable Hatası Nedir?

Field is Immutable hatası bir kaynağı güncellemeye çalışırken karşımıza çıkan hata mesajıdır. Bu hatanın ana kaynağı kubernetes’in değiştirilemez olarak belirlediği alanları değiştirmeye çalıştmamızdır.

Field is Immutable Hatası Çözümü

Field is Immutable hatası çözümü için yazımızın 2.bölümünde bahsettiğimiz işlemleri uygulamak yeterli olacaktır.

Yorum yapın