Https://github.com/kubernetes/client-go kullanıyorum ve hepsi iyi çalışıyor.
Resmi Kubernetes Kontrol Paneli için bir manifesto (YAML) var: https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
kubectl apply
İstemci-go'yu kullanarak Go kodundaki bu manifestoyu taklit etmek istiyorum.
YAML baytlarının pakette tanımlanan doğru API türlerine bazı (un) marşlarını yapmam gerektiğini anlıyorum: https://github.com/kubernetes/api
Create
Tek bir API türlerini kümem için başarıyla düzenledim, ancak bunu aynı olmayan türlerin listesini içeren bir bildirim için nasıl yapabilirim ? kind: List*
Bu farklı türleri destekleyen bir kaynak var mı ?
Geçerli geçici çözümüm, YAML dosyasını csplit
ayırıcı olarak --- ile kullanarak bölmektir
csplit /path/to/recommended.yaml /---/ '{*}' --prefix='dashboard.' --suffix-format='%03d.yaml'
Daha sonra, oluşturulan yeni (14) parçaların üzerine döngü yapıyorum, baytlarını okudum, UniversalDeserializer'ın kod çözücüsü tarafından döndürülen nesnenin türünü açtım ve k8s istemcimi kullanarak doğru API yöntemlerini çağırıyorum.
Bunu, gösterge tablosunun yeni sürümlerinde kümemde güncellemeler yapmak için programlı olarak yapmak istiyorum. Bunu Metrics Server ve diğer birçok kaynak için de yapmam gerekecek. Alternatif (belki daha basit) yöntem, kodumu kap görüntüsüne kurulu kubectl ile göndermek ve doğrudan çağırmaktır kubectl apply -f -
; ama bu da kube yapılandırmasını diske yazmam veya kubectl'in kullanabilmesi için satır içi geçirmem gerektiği anlamına geliyor.
Bu sorunu yardımcı buldum: https://github.com/kubernetes/client-go/issues/193 Dekoder burada yaşıyor: https://github.com/kubernetes/apimachinery/tree/master/pkg/runtime/ sıralandırıcı
İstemciye gidin: https://github.com/kubernetes/client-go/blob/master/kubernetes/scheme/register.go#L69
Ayrıca kubectl tarafından kullanılan RunConvert yöntemine de baktım: https://github.com/kubernetes/kubernetes/blob/master/pkg/kubectl/cmd/convert/convert.go#L139 ve varsayalım kendi genericclioptions.IOStreams çıktı almak için sağlayabilir ?
RunConvert kullanımdan kaldırılıyor gibi görünüyor
Ayrıca [client-go] etiketli diğer sorulara da baktım, ancak çoğu eski örnekleri kullanıyor veya kind
tanımlanmış tek bir YAML dosyası kullanıyor ve API o zamandan beri değişti.
Düzenleme: Birden fazla küme için bunu yapmak ve programlı kümeler oluşturuyorum çünkü (AWS EKS API + CloudFormation / eksctl ), ServiceAccount
birçok AWS hesaplarında, birçok küme bağlamında oluşturma yükünü en aza indirmek istiyorum . İdeal olarak, müşteri setimi oluşturmayla ilgili tek kimlik doğrulama adımı, küme verilerini (ad, bölge, CA sertifikası vb.) Kullanarak bir simge almak için aws-iam-authenticator kullanmaktır. Bir süredir aws-iam-authenticator sürümü yayınlanmadı, ancak master
üçüncü taraf rol hesaplar arası rol ve harici kimlik kullanılmasına izin verme içeriği . IMO, bu bir ServiceAccount
(ve IRSA kullanmaktan daha temiz), uygulamanın (bu kümelere eklentiler oluşturan ve uygulayan arka uç API'sı) etkileşim kurması gereken başka AWS hizmetleri olduğundan.
Edit: Son zamanlarda https://github.com/ericchiang/k8s buldum . Yüksek seviyede kullanmak kesinlikle istemciden daha kolaydır, ancak bu davranışı desteklemez.
^---$
kodunuzda bölüyorsunuz ?