Azure Stack Hub'da AKS altyapısını kullanarak Kubernetes sertifikalarını döndürme

Bu belgede, mevcut AKS Altyapısı kümesindeki sertifikaları döndürme hakkında yönergeler ve araç olarak benimsemeyi aks-engine rotate-certs kullanmaya yönelik öneriler sağlanır.

Önkoşullar

Bu kılavuzda AKS altyapısını kullanarak zaten bir küme dağıttığınız ve kümenin iyi durumda olduğu varsayılır.

Sertifika döndürmeyi planlama

Bu işlevi kullanmayı düşünürken, güncelleştirme, doğrulama ve yeniden başlatma adımları sırasında Kubernetes denetim düzleminin kullanılamayacağını unutmayın. Bu bakım işlemini uygun şekilde planlayın. Ayrıca, üretim ortamında denemeden önce bu işlemi üretim ortamına eşit yapılandırmaya sahip bir hazırlama ortamında yürütmeyi planlayın.

Bu işlemi denemeden önce aşağıdaki noktaları gözden geçirin:

Not

AKSe sürüm 0.75.3 ve üzeri için sertifika döndürme komutları yerine aks-engineile aks-engine-azurestack başlar.

  • veya aks-engine generatekomutları aks-engine deploy tarafından oluşturulan API modeline (apimodel.json) erişmeniz gerekir. Varsayılan olarak bu dosya gibi _output/<clustername>/göreli bir dizine yerleştirilir.

  • Bir aks-engine rotate-certs işlem API sunucusunun kapalı kalma süresine neden olur.

  • aks-engine rotate-certs kümenin geçerli durumuna uygun bir API modeli bekler. aks-engine rotate-certs , küme düğümlerinde uzak komutları yürütür ve güvenli bir SSH bağlantısı kurmak için API modeli bilgilerini kullanır. aks-engine rotate-certs ayrıca, özgün aks-engine dağıtıma uygun olarak adlandırılacak bazı kaynaklara da dayanır; örneğin, VM'lerin tarafından aks-enginesağlanan adlandırmayı izlemesi gerekir.

  • aks-engine rotate-certs sertifika döndürme sırasında küme denetim düzlemine yönelik çalışan bir bağlantıya dayanır:

    • İşlemin her adımını doğrulamak için.
    • Kube-system podları ve hizmet hesabı belirteçleri gibi küme kaynaklarını yeniden başlatmak/yeniden oluşturmak için.

    Dış erişime kapalı bir sanal ağdaki bir kümenin sertifikalarını döndürdüğünüzde, denetim düzlemine ağ erişimi olan bir konak VM'den( örneğin, ana VM'lerle aynı sanal ağda bulunan bir sıçrama kutusu VM'sinden) çalıştırmanız aks-engine rotate-certs gerekir.

  • Üretimde kullanıyorsanız aks-engine rotate-certs , aynı belirtimlere göre oluşturulmuş bir kümede sertifika döndürme testi hazırlamanız önerilir. Yani küme, sertifika döndürme işlemini gerçekleştirmeden önce aynı küme yapılandırması, AKS altyapısı komut satırı aracının aynı sürümü ve üretim kümenizle aynı etkin eklenti kümesiyle oluşturulur. AKS altyapısı farklı küme yapılandırmalarını destekler ve AKS altyapısı ekibinin çalıştırıp çalıştıramadığı uçtan uca test kapsamı, olası tüm yapılandırmaları hemen hemen kapsamaz. Bu nedenle, üretim kümenizde işlemi denemeden önce belirli küme yapılandırmanızın birlikte aks-engine rotate-certs çalıştığı bir hazırlama ortamında emin olmanız önerilir.

  • aks-engine rotate-certs geriye dönük uyumluluğu garanti etmez . aks-engine sürüm 0.60.x ile dağıttıysanız, sertifika döndürme işlemini sürüm 0.60.x ile yürütmeyi tercih etmelisiniz.

  • bu noktada Key Vault'den yeni bir sertifika kümesi getirilme işlemi desteklenmez.

  • Güvenilir bir ağ bağlantısı kullanın. aks-engine rotate-certs , büyük ölçüde küme düğümlerine bağlantı güvenilir değilse olası hatalara tabi olan birden çok uzak komutun yürütülmesini gerektirir. aks-engine rotate-certs Hedef Azure Stack damgası üzerinde çalışan bir VM'den çalıştırmak geçici sorunların oluşmasını azaltabilir.

Parametreler

Parametre Gerekli Açıklama
--api-model evet Beklenen küme yapılandırmasını bildiren API modelinin (küme tanımı) göreli yolu.
--ssh-host evet Kümedeki tüm düğümlere ulaşabilen bir SSH dinleyicisinin tam etki alanı adı (FQDN) veya IP adresi.
--linux-ssh-private-key evet Kümenin Linux düğümlerine erişmek için geçerli bir özel SSH anahtarının yolu.
--Konum evet Kümenin dağıtıldığı Azure konumu.
--subscription-id evet Kümenin dağıtıldığı Azure aboneliği.
--resource-group evet Kümenin dağıtıldığı Azure kaynak grubu.
--client-id -sına bağ -lıdır Hizmet sorumlusu istemci kimliği. auth-metodu client_secret veya client_certificate olarak ayarlandıysa gereklidir.
--client-secret -sına bağ -lıdır Hizmet sorumlusu istemci gizli dizisi. auth-metodu client_secret olarak ayarlandıysa gereklidir.
--azure-env -sına bağ -lıdır Hedef bulut adı. Hedef bulut AzureCloud ise isteğe bağlıdır.
--certificate-profile hayır Yeni sertifika kümesini içeren bir JSON dosyasının göreli yolu.
--Kuvvet hayır API Sunucusu yanıt vermese bile yürütmeye zorlar.

Sertifikaları döndürmek için basit adımlar

AKS Altyapısı'nın 0.75.3 ve üzeri sürümleri için, tüm gereksinimleri okuduktan sonra uygun bağımsız değişkenlerle komutunu çalıştırın aks-engine-azurestack rotate-certs (aşağıya bakın).

AKS Altyapısı 0.73.0 ve altı sürümleri için, tüm gereksinimleri okuduktan sonra uygun bağımsız değişkenlerle komutunu çalıştırın aks-engine rotate-certs :

./bin/aks-engine rotate-certs \
  --location <resource-group-location> \
  --api-model <generated-apimodel.json> \
  --linux-ssh-private-key <private-SSH-key> \
  --ssh-host <apiserver-URI> \
  --resource-group <resource-group-name> \
  --client-id <service-principal-id> \
  --client-secret <service-principal-secret> \
  --subscription-id <subscription-id> \
  --azure-env <cloud-name>

Örneğin:

./bin/aks-engine rotate-certs \
  --location "westus2" \
  --api-model "_output/my-cluster/apimodel.json" \
  --linux-ssh-private-key "~/.ssh/id_rsa" \
  --ssh-host "my-cluster.westus2.cloudapp.azure.com"\
  --resource-group "my-cluster" \
  --client-id "12345678-XXXX-YYYY-ZZZZ-1234567890ab" \
  --client-secret "12345678-XXXX-YYYY-ZZZZ-1234567890ab" \
  --subscription-id "12345678-XXXX-YYYY-ZZZZ-1234567890ab" \
  --azure-env "AzureStackCloud" # optional if targeting AzureCloud

Sertifikaları döndürme front-proxy

Not

AKSe sürüm 0.75.3 ve üzeri için sertifika döndürme komutları yerine aks-engineile aks-engine-azurestack başlar.

AKS altyapısı, düğüm önyükleme işleminin front-proxy bir parçası olarak için ayrı bir PKI oluşturur ve bunları aracılığıyla etcdtüm düğümlere teslim eder. Bu işlevselliği etkili bir şekilde yeniden kullanmak için içinde rotate-certsetcddepolanan sertifikaların yerini akla getirmek gerekir. Sertifikaların front-proxy süresi 30 yıl sonra dolar. aks-engine rotate-certs ön proxy sertifikalarını döndürür.

Sorun giderme

Not

AKSe sürüm 0.75.3 ve üzeri için sertifika döndürme komutları yerine aks-engineile aks-engine-azurestack başlar.

Sertifika döndürme işlemi, ağ bağlantısı gibi bir hata veya geçici bir sorun nedeniyle tamamlanmadan önce durursa, bayrağını kullanarak --force yeniden çalıştırmak aks-engine rotate-certs güvenlidir.

Ayrıca dosyadaki /var/log/azure/rotate-certs.log (Linux) ve c:\\k\\rotate-certs.log (Windows) her adımın çıkışını günlüğe kaydedenlere aks-engine rotate-certs dikkat edin.

Bu işlemi çalıştırırken arka planda neler olduğu hakkında daha fazla bilgi edinmek veya daha fazla özelleştirme için bkz. Under The Hood.

Sonraki adımlar