Azure Kubernetes Service'te dağıtılan mikro hizmetlerle Azure API Management'i kullanma

UYGULANANLAR: Tüm API Management katmanları

Mikro hizmetler API'ler oluşturmak için mükemmeldir. Azure Kubernetes Service (AKS) ile bulutta mikro hizmet tabanlı bir mimariyi hızla dağıtabilir ve çalıştırabilirsiniz. Ardından, mikro hizmetlerinizi iç ve dış tüketim için API'ler olarak yayımlamak için Azure API Management'ı (API Management) kullanabilirsiniz. Bu makalede, API Management'ı AKS ile dağıtma seçenekleri açıklanmaktadır. Kubernetes, API Management ve Azure ağı hakkında temel bilgileri varsayar.

Background

Mikro hizmetleri tüketim api'leri olarak yayımlarken, mikro hizmetlerle bunları kullanan istemciler arasındaki iletişimi yönetmek zor olabilir. Kimlik doğrulaması, yetkilendirme, azaltma, önbelleğe alma, dönüştürme ve izleme gibi çok sayıda çapraz kesme sorunu vardır. Bu endişeler, mikro hizmetlerin iç veya dış istemcilere açık olup olmamasına bakılmaksızın geçerlidir.

API Gateway düzeni bu endişeleri giderir. API ağ geçidi, mikro hizmetlere ön kapı görevi görür, istemcileri mikro hizmetlerinizden ayırır, ek bir güvenlik katmanı ekler ve çapraz kesme sorunlarını ele alma yükünü ortadan kaldırarak mikro hizmetlerinizin karmaşıklığını azaltır.

Azure API Management , API ağ geçidi gereksinimlerinizi çözmek için anahtar teslimi bir çözümdür. Mikro hizmetleriniz için hızlı bir şekilde tutarlı ve modern bir ağ geçidi oluşturabilir ve bunları API olarak yayımlayabilirsiniz. Tam yaşam döngüsü API yönetimi çözümü olarak API bulma, API yaşam döngüsü yönetimi ve API analizi için self servis geliştirici portalı da dahil olmak üzere ek özellikler sağlar.

AKS ve API Management birlikte kullanıldığında mikro hizmet tabanlı API'lerinizi dağıtmak, yayımlamak, güvenli hale getirmek, izlemek ve yönetmek için bir platform sağlar. Bu makalede, API Management ile birlikte AKS'yi dağıtmaya yönelik birkaç seçenekten geçeceğiz.

Kubernetes Hizmetleri ve API'leri

Kubernetes kümesinde kapsayıcılar kısa ömürlü ve yaşam döngüsü olan Pod'larda dağıtılır. Bir çalışan düğümü öldüğünde, düğümde çalışan Podlar kaybolur. Bu nedenle, podun IP adresi istediğiniz zaman değişebilir. Pod ile iletişim kurmak için ona güvenemiyoruz.

Kubernetes, bu sorunu çözmek için Hizmetler kavramını kullanıma sunmşu. Kubernetes Hizmeti, bir pod mantıksal grubunu tanımlayan ve bu Podlar için dış trafik açığa çıkarma, yük dengeleme ve hizmet bulma olanağı sağlayan bir soyutlama katmanıdır.

Mikro hizmetlerimizi API Management aracılığıyla API olarak yayımlamaya hazır olduğumuzda, Kubernetes'teki Hizmetlerimizi API Management'taki API'lerle eşlemeyi düşünmemiz gerekir. Ayarlanmış kural yok. Başlangıçta iş yeteneklerinizi veya etki alanlarınızı nasıl tasarladığınıza ve mikro hizmetlere nasıl bölümlediğinize bağlıdır. Örneğin, bir Hizmetin arkasındaki podlar belirli bir kaynak üzerindeki tüm işlemlerden sorumluysa (örneğin, Müşteri), Hizmet bir API'ye eşlenebilir. Bir kaynaktaki işlemler birden çok mikro hizmete (örneğin, GetOrder, PlaceOrder) bölümlenmişse, api yönetiminde birden çok Hizmet mantıksal olarak tek bir API'de toplanabilir (Bkz. Şekil 1).

Eşlemeler de gelişebilir. API Management mikro hizmetlerin önünde bir cephe oluşturduğundan, mikro hizmetlerimizi zaman içinde yeniden düzenlememize ve doğru boyutlandırmamıza olanak tanır.

Hizmetleri API'lere eşleme

API Management'ı AKS'nin önünde dağıtma

AKS kümesinin önünde API Management'ı dağıtmaya yönelik birkaç seçenek vardır.

AKS kümesi her zaman bir sanal ağda (VNet) dağıtılırken, sanal ağa bir API Management örneğinin dağıtılması gerekmez. API Management küme sanal ağı içinde yer almazsa AKS kümesinin, API Management'ın bağlanabilmesi için genel uç noktaları yayımlaması gerekir. Bu durumda, API Management ile AKS arasındaki bağlantının güvenliğini sağlamanız gerekir. Başka bir deyişle kümeye yalnızca API Management aracılığıyla erişilebildiğinden emin olmamız gerekir. Seçenekleri gözden geçirelim.

1. Seçenek: Hizmetleri genel kullanıma sunma

AKS kümesindeki hizmetler NodePort, LoadBalancer veya ExternalName Hizmet türleri kullanılarak genel kullanıma sunılabilir. Bu durumda Hizmetlere doğrudan genel İnternet'ten erişilebilir. API Management'ı kümenin önüne dağıttığımızda, mikro hizmetlere kimlik doğrulaması uygulayarak tüm gelen trafiğin API Management'a gittiğinden emin olmamız gerekir. Örneğin API Management, kümeye yapılan her istekte bir erişim belirteci içerebilir. Her mikro hizmet, isteği işlemeden önce belirteci doğrulamakla sorumludur.

Bu, özellikle mikro hizmetlerinizde zaten kimlik doğrulama mantığı uygulanmışsa, API Management'ı AKS'nin önüne dağıtmak için en kolay seçenek olabilir.

Hizmetleri doğrudan yayımlama

Profesyonel:

  • Api Management tarafında kolay yapılandırma, çünkü küme sanal ağına eklenmiş olması gerekmez
  • Hizmetler zaten genel kullanıma açıksa ve mikro hizmetlerde kimlik doğrulama mantığı zaten mevcutsa AKS tarafında değişiklik olmaz

Eksi -lerini:

  • Uç noktaların genel görünürlüğünden kaynaklanan olası güvenlik riski
  • Gelen küme trafiği için tek giriş noktası yok
  • Mikro hizmetleri yinelenen kimlik doğrulama mantığıyla karmaşıklaştırır

Seçenek 2: Giriş Denetleyicisi Yükleme

Seçenek 1 daha kolay olsa da, yukarıda belirtildiği gibi önemli dezavantajları vardır. Api Management örneği küme sanal akında yer almazsa, Karşılıklı TLS kimlik doğrulaması (mTLS), trafiğin güvenli ve bir API Management örneği ile AKS kümesi arasında her iki yönde de güvenilir olmasını sağlamanın sağlam bir yoludur.

Karşılıklı TLS kimlik doğrulaması API Management tarafından yerel olarak desteklenir ve Bir Giriş Denetleyicisi yüklenerek Kubernetes'te etkinleştirilebilir (Şekil 3). Sonuç olarak, kimlik doğrulaması Giriş Denetleyicisi'nde gerçekleştirilir ve bu da mikro hizmetleri basitleştirir. Ayrıca, yalnızca API Management'ın kümeye erişimi olduğundan emin olmak için Giriş yaparak API Management'ın IP adreslerini izin verilenler listesine ekleyebilirsiniz.

Giriş denetleyicisi aracılığıyla yayımlama

Profesyonel:

  • Api Management tarafında kolay yapılandırma çünkü küme sanal ağına eklenmiş olması gerekmez ve mTLS yerel olarak desteklenir
  • Giriş Denetleyicisi katmanında gelen küme trafiği için korumayı merkezileştirir
  • Genel olarak görünür küme uç noktalarını en aza indirerek güvenlik riskini azaltır

Eksi -lerini:

  • Giriş Denetleyicisi'ni yüklemek, yapılandırmak ve korumak ve mTLS için kullanılan sertifikaları yönetmek için ek çalışma nedeniyle küme yapılandırmasının karmaşıklığını artırır
  • Giriş Denetleyicisi uç noktalarının genel görünürlüğünden kaynaklanan güvenlik riski

API Management aracılığıyla API'leri yayımladığınızda, abonelik anahtarlarını kullanarak bu API'lere erişimin güvenliğini sağlamak kolay ve yaygın bir işlemdir. Yayımlanan API'leri tüketmesi gereken geliştiricilerin, bu API'lere çağrı yaparken HTTP isteklerine geçerli bir abonelik anahtarı eklemesi gerekir. Aksi takdirde, çağrılar API Management ağ geçidi tarafından hemen reddedilir. Bunlar arka uç hizmetlerine iletilir.

API'lere erişmek için abonelik anahtarı almak için bir abonelik gereklidir. Abonelik temelde bir çift abonelik anahtarı için adlandırılmış bir kapsayıcıdır. Yayımlanan API'leri tüketmesi gereken geliştiriciler abonelik alabilir. Ayrıca API yayımcılarının onayına da ihtiyaçları yoktur. API yayımcıları doğrudan API tüketicileri için de abonelik oluşturabilir.

3. Seçenek: APIM'yi küme sanal ağı içinde dağıtma

Bazı durumlarda, mevzuat kısıtlamaları veya katı güvenlik gereksinimleri olan müşteriler, genel kullanıma sunulan uç noktalar nedeniyle Seçenek 1 ve 2'yi uygun olmayan çözümler bulabilir. Diğerlerinde AKS kümesi ve mikro hizmetleri kullanan uygulamalar aynı sanal ağda bulunabilir, bu nedenle tüm API trafiği sanal ağ içinde kalacağından kümeyi genel kullanıma sunmanın bir nedeni yoktur. Bu senaryolar için API Management'ı küme sanal asına dağıtabilirsiniz. API Management Geliştirici ve Premium katmanları sanal ağ dağıtımlarını destekler.

API Management'ı sanal ağa dağıtmanın iki modu vardır: Dış ve İç.

API tüketicileri küme sanal akında yer almadıysa Dış mod (Şekil 4) kullanılmalıdır. Bu modda API Management ağ geçidi küme sanal ağına eklenir, ancak genel İnternet'ten dış yük dengeleyici aracılığıyla erişilebilir. Dış istemcilerin mikro hizmetleri kullanmasına izin verirken kümeyi tamamen gizlemeye yardımcı olur. Ayrıca, ağ trafiğini kısıtlamak için Ağ Güvenlik Grupları (NSG) gibi Azure ağ özelliklerini kullanabilirsiniz.

Dış sanal ağ modu

Tüm API tüketicileri küme sanal ağı içinde bulunuyorsa İç mod (Şekil 5) kullanılabilir. Bu modda API Management ağ geçidi küme sanal ağına eklenir ve yalnızca iç yük dengeleyici aracılığıyla bu sanal ağın içinden erişilebilir. GENEL İnternet'ten API Management ağ geçidine veya AKS kümesine ulaşmanın hiçbir yolu yoktur.

İç sanal ağ modu

Her iki durumda da AKS kümesi genel olarak görünür değildir. 2. Seçenek ile karşılaştırıldığında, Giriş Denetleyicisi gerekli olmayabilir. Senaryonuza ve yapılandırmanıza bağlı olarak, API Management ile mikro hizmetleriniz arasında kimlik doğrulaması gerekebilir. Örneğin, bir Service Mesh benimsenirse, her zaman karşılıklı TLS kimlik doğrulaması gerektirir.

Profesyonel:

  • AKS kümesinin genel uç noktası olmadığından en güvenli seçenek
  • Genel uç noktası olmadığından küme yapılandırmasını basitleştirir
  • İç modu kullanarak hem API Management'ı hem de AKS'yi sanal ağ içinde gizleyebilme
  • Ağ Güvenlik Grupları (NSG) gibi Azure ağ özelliklerini kullanarak ağ trafiğini denetleme olanağı

Eksi -lerini:

  • API Management'ı sanal ağ içinde çalışacak şekilde dağıtma ve yapılandırma karmaşıklığını artırır

Sonraki adımlar