Uygulamalarınızı Serverless App Engine (SAE) üzerinde koddan veya konteyner görüntülerinden dağıtın. SAE, hesaplama kaynaklarını sizin için yönetir ve trafiğe dayalı otomatik ölçeklendirme ile çok alanlı dağıtımı destekler.
Çözüm özeti
Birbirine kaydolabilen, hizmetler arasında yöntem çağrıları yapabilen ve internet üzerinden trafik sunabilen bir dizi mikro hizmet uygulaması dağıtacaksınız. Aşağıdaki diyagram örnek mimariyi göstermektedir.
Bu öğretici Java tabanlı bir mikro hizmeti örnek olarak kullanır; ancak SAE herhangi bir dili veya mimariyi destekler : statik web siteleri , ön uç ve arka uç uygulamaları , monolitik uygulamalar ve mikro hizmet uygulamaları .
Bu öğreticide şunları yapacaksınız:
Uygulamaları dağıtma: Örnek görüntüler kullanarak sağlayıcı ve tüketici uygulamalarını dağıtın. SAE'nin yerleşik Nacos bileşeni hizmet keşfi ve kaydını yöneterek tüketicinin sağlayıcıyı çağırmasına olanak tanır.
Uygulamaya internetten erişim sağlama: Tüketici uygulaması için genel bir uç nokta yapılandırın.
Ön koşullar
Yordam
SAE birden fazla dağıtım yöntemi sunar. Bu öğreticiyi tamamlamak için konsol veya saectl (kubectl uyumlu) yöntemlerinden birini seçin.
Konsol
1. Uygulamaları dağıtın
-
Sağlayıcı uygulamasını dağıtın: SAE konsoluna giriş yapın. seçeneğine gidin. Bir bölge seçin (bu öğreticide China (Hangzhou) kullanılmaktadır). Create Application seçeneğini tıklayın, aşağıdaki parametreleri yapılandırın ve Gelişmiş Ayarlar adımını atlamak için Create Application Now seçeneğini tıklayın.
Gezinme bölmesinde seçeneği görünmüyorsa seçeneğine gidin.
Sürüm seçmeniz istenirse Standard Edition seçeneğini belirleyin. Lightweight Edition ve Professional Edition yalnızca davetli beta aşamasındadır. Sürüm farkları bu öğreticiyi etkilemez.
providergibi özel bir Application Name girin.Namespace Type değerini
System-createdolarak ayarlayın. Bu işlem varsayılan ad alanını kullanır ve ağ kaynaklarını (VPC, vSwitch ve güvenlik grubu) otomatik olarak sağlar.Deployment Method değerini
Deploy Using Imageolarak ayarlayın. Set Image seçeneğini tıklayın. Demo Image sekmesinde Image Version değerimicroservice-java-provider-v1.0olan Microservice Application - Provider öğesini seçin ve ardından OK seçeneğini tıklayın.Capacity Settings bölümünde uygulamanız için Instance Specification ve Number of Instances değerlerini belirleyin.
-
Tüketici uygulamasını dağıtın: Önceki adımları aşağıdaki değişikliklerle tekrarlayın.
consumergibi özel bir Application Name girin.Set Image adımında Microservice Application - Consumer öğesini bulun ve Image Version değerini
microservice-java-consumer-v1.0olarak ayarlayın.
-
Dağıtım sonucunu kontrol edin: Dağıtımın tamamlanması için yaklaşık bir dakika bekleyin.
Application List sayfasındaki uygulamaları görüntüleyin. Ayrıntılarını açmak için bir uygulamayı tıklayın.
Gezinme bölmesinden Basic Information seçeneğine gidin. Instance List sekmesinde uygulama örneklerini görüntüleyin.
2. Genel erişimi etkinleştirin
Genel erişim sağlamak için tüketici uygulamasına internete bakan bir CLB örneği bağlayın.
-
Tüketici uygulamasına internete bakan bir CLB örneği bağlayın: Tüketici uygulamasının ayrıntılar sayfasında Application Information sekmesine gidin. Application Access Settings bölümünde CLB-based Access seçeneğini belirleyin. Add internet-facing CLB seçeneğini tıklayın, aşağıdaki parametreleri yapılandırın ve OK seçeneğini tıklayın.
CLB Instance için Create CLB Instance seçeneğini belirleyin.
HTTP Protocol sekmesinde HTTP Port değerini
80ve container port değerini18082olarak ayarlayın.
-
Sonucu doğrulayın: SAE, CLB örneğini oluşturup bağladıktan sonra konsol uygulamanın public endpoint değerini gösterir.
Tarayıcınızda
http://<public_endpoint>/consumer-echo/helloadresini açın ve<public_endpoint>kısmını gerçek değerle değiştirin.sayfasında tüketici ve sağlayıcı uygulamaları arasındaki çağrı topolojisini görüntüleyin.
3. Kaynakları temizleyin
Gereksiz ücretlendirmelerden kaçınmak için bu öğreticide oluşturulan kaynakları silin.
-
Uygulamaları silin: Her uygulamanın ayrıntılar sayfasında seçeneğine gidin ve talimatları izleyin.
SAE tarafından oluşturulan CLB örneği, uygulamayı sildiğinizde otomatik olarak serbest bırakılır.
-
(İsteğe bağlı) Ağ kaynaklarını silin: SAE, dağıtım sırasında otomatik olarak bir VPC, vSwitch ve güvenlik grubu oluşturdu.
VPC'yi görüntüleyin: seçeneğine gidin ve default seçeneğini tıklayın. Basic Information bölümünde VPC bağlantısını tıklayarak ayrıntılar sayfasını açın.
vSwitch ve güvenlik grubunu görüntüleyin: VPC'nin Resource Management sekmesinde ilgili ayrıntılar sayfalarına gitmek için bağlantıları tıklayın.
Kaynakları kendi ayrıntılar sayfalarında silin.
saectl aracı
1. saectl aracını yükleyin ve yapılandırın
saectl aracını yükleyin ve Alibaba Cloud hesabınızın kimlik bilgilerini yapılandırın. Daha fazla bilgi için bkz. saectl aracını yükleyin ve yapılandırın.
2. Uygulamaları dağıtın
-
Kaynak yapılandırma dosyalarını oluşturun: Aşağıdaki dosyaları aynı dizinde oluşturun. Not:
image: ...cn-hangzhou...kısmını dağıtım yaptığınız bölgeyle değiştirin.-
deployment-provider.yamldosyası sağlayıcı uygulamasını yapılandırır:apiVersion: apps/v1 kind: Deployment metadata: annotations: sae.aliyun.com/new-sae-version: std # Select the application edition. 'std' indicates Standard Edition. The Lightweight and Professional editions are in invite-only beta. This selection does not affect the tutorial. name: provider # Customizable application name. namespace: default # Select the system-created default namespace, which automatically creates and associates network resources like VPCs, vSwitches, and security groups. spec: replicas: 2 # Number of application instances. selector: matchLabels: sae.aliyun.com/app-name: provider # Must be the same as the application name defined in metadata. template: metadata: labels: sae.aliyun.com/app-name: provider # Must be the same as the application name defined in metadata. spec: containers: - name: main # We recommend that you name the container 'main' to avoid conflicts. image: registry.cn-hangzhou.aliyuncs.com/sae-serverless-demo/sae-demo:microservice-java-provider-v1.0 # The sample image for the provider application. Replace cn-hangzhou with your deployment region. resources: # Specification for a single application instance. 'limits' and 'requests' must have the same configuration. limits: cpu: "2" memory: 4Gi requests: cpu: "2" memory: 4Gi -
deployment-consumer.yamldosyası tüketici uygulamasını yapılandırır:apiVersion: apps/v1 kind: Deployment metadata: annotations: sae.aliyun.com/new-sae-version: std # Select the application edition. 'std' indicates Standard Edition. The Lightweight and Professional editions are in invite-only beta. This selection does not affect the tutorial. name: consumer # Customizable application name. namespace: default # Select the system-created default namespace, which automatically creates and associates network resources like VPCs, vSwitches, and security groups. spec: replicas: 2 # Number of application instances. selector: matchLabels: sae.aliyun.com/app-name: consumer # Must be the same as the application name defined in metadata. template: metadata: labels: sae.aliyun.com/app-name: consumer # Must be the same as the application name defined in metadata. spec: containers: - name: main # We recommend that you name the container 'main' to avoid conflicts. image: registry.cn-hangzhou.aliyuncs.com/sae-serverless-demo/sae-demo:microservice-java-consumer-v1.0 # The sample image for the consumer application. Replace cn-hangzhou with your deployment region. resources: # Specification for a single application instance. 'limits' and 'requests' must have the same configuration. limits: cpu: "2" memory: 4Gi requests: cpu: "2" memory: 4Gi
-
Uygulamaları dağıtın: Yapılandırma dosyalarının bulunduğu dizinden
saectl apply -f deployment-provider.yaml -f deployment-consumer.yamlkomutunu çalıştırın.-
Sonucu doğrulayın:
-
Uygulamaları görüntüleyin:
saectl get deployments -n defaultkomutunu çalıştırın.-n defaultbayrağı varsayılan ad alanını belirtir. Çıktıda:STATEdeğeriRUNNINGise uygulama çalışıyor demektir.PUBLISHINGise dağıtım devam ediyor demektir.READYalanın/mdeğerini gösterir; bu dahazır örnek sayısı / hedeflenen örnek sayısıanlamına gelir.
-
Uygulama örneklerini görüntüleyin:
saectl get pods -n defaultkomutunu çalıştırın. Çıktıda:STATUSdeğeriRUNNINGise konteyner normal çalışıyor demektir.ContainerCreatingise konteyner oluşturuluyor demektir.READYalanın/mdeğerini gösterir; bu dahazır konteyner sayısı / toplam konteyner sayısıanlamına gelir.
-
3. Genel erişimi etkinleştirin
Genel erişim sağlamak için tüketici uygulamasına internete bakan bir CLB örneği bağlayın.
-
Bir kaynak yapılandırma dosyası oluşturun: Tüketici uygulamasını internete bakan bir CLB üzerinden internete açan bir Service yapılandırmak için
svc.yamldosyasını oluşturun:apiVersion: v1 kind: Service metadata: annotations: sae.aliyun.com/loadbalancer-address-type: internet # Address type. 'internet' for public and 'intranet' for private. name: internet-consumer # Fixed format: ${address-type}-${app-name} spec: ports: - name: port-80 # Fixed format: port-${external-port} port: 80 protocol: HTTP targetPort: 18082 # Container port of the consumer application. selector: sae.aliyun.com/app-name: consumer # Application name. type: LoadBalancer Hizmeti dağıtın: Yapılandırma dosyasının bulunduğu dizinden
saectl apply -f svc.yamlkomutunu çalıştırın.-
Sonucu doğrulayın:
-
Hizmeti görüntüleyin:
saectl get services -n defaultkomutunu çalıştırın. Çıktıda:EXTERNAL-IPgenel IP adresini gösterir.<pending>değeri hizmetin hala oluşturulmakta olduğunu gösterir.PORT(S)yapılandırılan erişim bağlantı noktasını gösterir.
Uygulamaya internetten erişin:
curl http://<public_endpoint>:<access_port>/consumer-echo/hellokomutunu çalıştırın ve<public_endpoint>ile<access_port>kısımlarını gerçek değerlerle değiştirin. Çıktı, tüketicinin sağlayıcıyı çağırdığını doğrular.
-
4. Kaynakları temizleyin
Gereksiz ücretlendirmelerden kaçınmak için bu öğreticide oluşturulan kaynakları silin.
Uygulamaları silin: saectl delete -f deployment-provider.yaml -f deployment-consumer.yaml komutunu çalıştırın.
SAE tarafından oluşturulan CLB örneği, uygulamayı sildiğinizde otomatik olarak serbest bırakılır.
Sonraki adımlar
-
Kendi uygulamalarınızı dağıtmak için SAE aşağıdaki yöntemleri destekler:
Bir görüntüden uygulama dağıtın (Önerilen): Uygulamanızı bir görüntüye paketleyin, bir görüntü deposuna gönderin ve SAE'ye dağıtın.
Bir kod paketinden uygulama dağıtın: SAE, Java, PHP, Python ve .NET Core'un belirli sürümleri için çalışma zamanları sağlar. [SAE gereksinimlerini karşılayan bir kod paketi oluşturun](t2882900.xdita#) ve doğrudan dağıtın.
-
SAE, bu öğreticide kullanılan SAE'nin yerleşik Nacos bileşeni dışında diğer uygulamalar arası iletişim yöntemlerini de destekler:
Bir MSE Nacos kayıt defteri kullanın (Önerilen): Yüksek performans, ölçeklenebilirlik ve kullanılabilirlik sunan yönetilen bir kayıt defteridir. Kendi kendine barındırma gerekmez.
Kendi yönettiğiniz bir hizmet kayıt defteri kullanın: Mevcut kayıt defterinizi (Nacos, ZooKeeper vb.) SAE ile kullanın. Ağ bağlantısını sağladığınızdan emin olun ve kayıt defteri adresini uygulama kodunuzda yapılandırın.
Kubernetes Service tabanlı uygulama hizmeti erişimini yapılandırın: Uygulamalar arası erişim için SAE kümesi içinde sabit bir etki alanı adı atayın.
Bir CLB örneği bağlama işleminin yanı sıra gelen erişim için bir NLB örneği bağlayabilir veya [bir ağ geçidi rotası yapılandırabilirsiniz](t2521602.xdita#). Dış kaynaklara giden erişim için [bir NAT ağ geçidi yapılandırın](t2763508.xdita#) veya [örneklere bir EIP bağlayın](t2733400.xdita#).
Ortamları yalıtmak (geliştirme, test, üretim) için [özel ad alanlarını](t2520806.xdita#) kullanın. Her ad alanı bir VPC'ye bağlanır. Çok alanlı dağıtım yapmak için farklı kullanılabilirlik alanlarında vSwitch'ler seçin.
[Örnek sayısını ayarlayarak](t2746800.xdita#) ve [örnek teknik özelliklerini](t2747853.xdita#) değiştirerek uygulamaları ölçeklendirin veya trafik ve kaynak kullanımına göre [otomatik ölçeklendirme ilkeleri](t2807163.xdita#) yapılandırın. [Boşta modunu etkinleştirerek](t2844618.xdita#) maliyetleri düşürün.