Aracılığıyla paylaş


OpenShift Sunucusuz kullanarak Azure Red Hat OpenShift'e uygulama dağıtma

Bu makalede, OpenShift Sunucusuz ile bir Azure Red Hat OpenShift kümesine bir uygulama dağıtacaksınız. OpenShift Sunucusuz, geliştiricilerin ölçeğini artıracak veya isteğe bağlı olarak sıfıra ölçeklendirecek uygulamaları dağıtıp çalıştırmasına yardımcı olur. Bu, kullanımda olmayan kaynakların tüketimini ortadan kaldırır.

Uygulama kodu, uygun çalışma zamanlarıyla birlikte bir kapsayıcıda paketlenebilir. Sunucusuz işlevsellik, bir olay tarafından tetiklendiklerinde uygulama kapsayıcılarını başlatır. Uygulamaları çeşitli olaylar aracılığıyla tetikleyebilirsiniz: kendi uygulamalarınızdan, birden çok bulut hizmeti sağlayıcısından, hizmet olarak yazılım (SaaS) sistemlerinden ve diğer hizmetlerden.

Sunucusuz kapsayıcı dağıtımının tüm yönlerini yönetmek için yerleşik OpenShift arabirimi özelliklerini kullanabilirsiniz. Geliştiriciler kapsayıcılı uygulamaların başlatılmasını sağlayan olayları görsel olarak belirleyebilir. Olay parametrelerini değiştirmenin birden çok yolu da vardır. OpenShift Sunucusuz uygulamalar OpenShift İşlem Hatları, Service Mesh ve İzleme gibi diğer OpenShift hizmetleriyle tümleştirilebilir. Bu, eksiksiz bir sunucusuz uygulama geliştirme ve dağıtım deneyimi sağlar.

Başlamadan önce

Küme oluşturma

Azure Red Hat OpenShift kümesi oluşturma öğreticisini izleyin. Komut satırı arabirimini (CLI) yerel olarak yükleyip kullanmayı seçerseniz, bu öğretici için Azure CLI sürüm 2.6.0 veya üzerini kullanmanız gerekir. Geçerli sürümünüzü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI'yı yükleme.

Kümeye bağlanma

Azure Red Hat OpenShift kümesini yönetmek için OpenShift komut satırı istemcisi olan oc'yi kullanmanız gerekir.

Uyarı

Azure Cloud Shell'deOpenShift komut satırını yüklemenizi ve bu makaledeki tüm komut satırı işlemleri için kullanmanızı öneririz. kabuğunuzu shell.azure.com açın veya bağlantıyı seçin:

Azure Cloud Shell'i başlatma düğmesi

CLI'nizi yüklemek, küme kimlik bilgilerinizi almak ve web konsolu ve OpenShift CLI ile kümeye bağlanmak için öğreticiyi izleyin.

Oturum açtıktan sonra projeyi kullandığınızı default belirten bir ileti görmeniz gerekir.

Login successful.

You have access to 61 projects, the list has been suppressed. You can list all projects with 'oc projects'

Using project "default".

Knative komut satırı arabirimini (kn) yükleme

Makinenize uygun komut satırı arabiriminin (CLI) en son sürümünühttps://github.com/knative/client/releases/

Azure Cloud Shell'de komut çalıştırıyorsanız Linux için en son Knative CLI'yi indirin.

cd ~
wget https://github.com/knative/client/releases/download/v0.22.0/kn-linux-amd64

mkdir knative
chmod +x kn-linux-amd64
mv kn-linux-amd64 knative/kn
echo 'export PATH=$PATH:~/knative' >> ~/.bashrc && source ~/.bashrc

OpenShift web konsolunu açma

Aşağıdaki betiği çalıştırarak küme web konsolu URL'nizi bulun:

 az aro show \
    --name <cluster name> \
    --resource-group <resource group> \
    --query "consoleProfile.url" -o tsv

Aşağıdakine benzer bir URL almanız gerekir.

https://console-openshift-console.apps.wzy5hg7x.eastus.aroapp.io/

Bir web tarayıcısı açın ve konsol URL'sini açın. Kimlik bilgilerini kullanarak kubeadmin oturum açın.

OpenShift Sunucusuz işlecini yükleme

OpenShift web konsolunda oturum açtığınızda Yönetici görünümünde olduğunuzu onaylayın. Operatör Hub'ınıaçın ve OpenShift Sunucusuz işlecini seçin.

OpenShift Sunucusuz işlecinin konumunu gösteren ekran görüntüsü.

Ardından Yükle'yi seçerek operatör yükleme sayfasını açın.

operatörü yüklemek için Yükle'yi seçmeyi gösteren ekran görüntüsü.

Azure Red Hat OpenShift'inizin küme sürümü için uygun Güncelleştirme Kanalını seçin ve işleci openshift-serverless ad alanına yükleyin. Ekranı aşağı kaydırın ve Yükle'yi seçin.

İşleç yükleme sayfasını gösteren ekran görüntüsü.

Durum sayfası birkaç dakika içinde işlecin yüklendiğini ve kullanıma hazır olduğunu yansıtır. Devam etmek için İşleci Görüntüle düğmesini seçin.

Operatörün yüklü ve kullanıma hazır olduğu durum sayfasını gösteren ekran görüntüsü.

Knative Serving'ı yükleme

OpenShift Sunucusuz'da bir kapsayıcıyı sunucusuz bir şekilde çalıştırma seçeneği yukarı akış Knative kullanılarak mümkündür. Knative, sunucusuz metodolojisi aracılığıyla modern uygulamaları dağıtan, çalıştıran ve yöneten bir bileşen kümesi sağlamak için Kubernetes'i genişletir.

Knative Serving örneğini oluşturma

Pencerenin sol üst köşesindeki Proje listesinde öğesini seçin knative-server. Ardından Sağlanan API'ler bölmesinde, Knative Serving kartında Örnek Oluştur'u seçin.

Knative Service örneği oluşturmak için seçebileceğiniz yeri gösteren ekran görüntüsü.

Knative Sunum Oluştur sayfasında tüm varsayılan değerleri koruyun. Aşağı kaydırın ve Oluştur düğmesini seçin.

Formda listelenen varsayılan değerleri gösteren ekran görüntüsü.

Durum sütununda Hazır gösterildiğinde OpenShift Sunucusuz yüklenir. Artık OpenShift Sunucusuz projesi oluşturmaya hazırsınız.

Knative Serving'ın hazır olduğunu gösteren ekran görüntüsü.

Sunucusuz proje oluşturma

adlı demoserverlessyeni bir proje oluşturmak için aşağıdaki komutu çalıştırın:

oc new-project demoserverless

Çıktının aşağıdakine benzer olması gerekir:

Now using project "demoserverless" on server "https://api.wzy5hg7x.eastus.aroapp.io:6443".

You can add applications to this project with the 'new-app' command. For example, build a new example application in Python with the following:

    oc new-app django-psql-example

Or use kubectl to deploy a simple Kubernetes application:

    kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node

Şimdi Yönetici görünümünden Geliştirici görünümüne geçelim. Soldaki menüden proje listenize gidin ve öğesini seçin demoserverless. Şimdi projenin Topoloji sayfasındasınız.

Azure Red Hat OpenShift proje topolojisi gösteren ekran görüntüsü.

Web konsolunu kullanarak dağıtma

Topoloji sayfasında Git'ten'i seçin. Git'ten İçeri Aktar sayfasında Git Deposu URL'sihttps://github.com/sclorg/django-ex.git olarak kullanın. Python programlama diliyle örnek bir web uygulaması uygulanır.

Git'in içinden Azure Red Hat OpenShift projelerini gösteren ekran görüntüsü.

Uyarı

OpenShift bunun bir Python projesi olduğunu algılar ve uygun oluşturucu görüntüsünü seçer.

Kaynaklar'agidin ve oluşturulacak kaynak türü olarak Knative Hizmeti'nin seçildiğini onaylayın. Bu, boştayken OpenShift Sunucusuz ölçeklendirmesini sıfıra getiren bir dağıtım türü olan Bir Knative Hizmeti oluşturur.

Knative Hizmeti'nin nasıl seçildiğini gösteren ekran görüntüsü.

Sayfanın en altında Oluştur'u seçin. Bu, uygulamanın derlemesini ve dağıtımını yönetmek için kaynaklar oluşturur. Ardından proje için topolojiye genel bakışa yönlendirilirsiniz.

Topolojiye genel bakış, dağıtmış olduğunuz uygulamanın görsel bir gösterimini sağlar. Genel uygulama yapısını görebilirsiniz.

Derlemenin tamamlanmasını bekleyin. Bu işlem birkaç dakika sürebilir. Derleme tamamlandığında, hizmetin sol alt köşesinde yeşil bir onay işareti görünür.

Derlemenin tamamlandığını gösteren onay işaretini gösteren ekran görüntüsü.

Uygulama ölçeğinizi görün

Topoloji görünümünün en üstündeki Görüntüleme Seçenekleri listesinde Pod Sayısı'nı seçin. Pod sayısının ölçeğinin sıfır Pod'a düşürülmesini bekleyin. Ölçeği azaltma birkaç dakika sürebilir.

Pod sayısı sıfıra ölçeklendirildiğinde gösteren ekran görüntüsü.

Knative Service panelinin sağ üst köşesinde URL'yi Aç simgesini seçin. Uygulama yeni bir tarayıcı sekmesinde açılır. Sekmeyi kapatın ve Topoloji görünümüne dönün. Burada, isteğinizi karşılamak için uygulamanızın ölçeğinin bir Pod'a kadar artırıldığını görebilirsiniz. Birkaç dakika sonra uygulamanız yeniden sıfır Pod'a ölçeklendirilir.

Pod ölçeğini artırılan uygulamayı gösteren ekran görüntüsü.

Yeni bir düzeltmeyi zorlama ve trafik dağıtımlarını ayarlama

Knative hizmetleri trafik eşlemesine izin verir; bu da bir hizmetin düzeltmelerinin trafiğin ayrılmış bir bölümüne eşlenebileceği anlamına gelir. Her hizmet yapılandırma güncelleştirmesi ile yeni bir düzeltme oluşturulur. Ardından hizmet yolu tüm trafiği varsayılan olarak en son hazır düzeltmeye yönlendirir. Trafiğin bölümlerini hangi düzeltmenin aldığını tanımlayarak bu davranışı değiştirebilirsiniz. Trafik eşlemesi, tek tek düzeltmeler için benzersiz URL'ler oluşturma seçeneği de sağlar.

Oluşturulan topolojide, ayrıntılarını görüntülemek için hizmetinizin içinde görüntülenen düzeltmeyi seçin. Pod halkasının altındaki ve ayrıntı panelinin üst kısmındaki rozetler olmalıdır (REV). Yan paneldeki Kaynaklar sekmesinde aşağı kaydırın ve hizmetinizle ilişkili yapılandırmayı seçin.

Pod halkasını gösteren ekran görüntüsü.

YAML sekmesine geçip değerini düzenlemek için aşağı kaydırarak yapılandırma güncelleştirmesini timeoutSecondszorlama. değerini olarak 301değiştirin. Kaydetseçeneğini seçin. Gerçek bir senaryoda, kapsayıcı görüntüsü etiketi güncelleştirilerek yapılandırma güncelleştirmeleri de tetiklenebilir.

Yapılandırmayı güncelleştirerek yeni bir düzeltmeyi zorlamayı gösteren ekran görüntüsü.

Topoloji görünümüne döndüğünüzde yeni bir düzeltmenin dağıtıldığını göreceksiniz. Rozetle (KSVC) biten hizmeti seçin ve Trafik Dağıtımını Ayarla düğmesini seçin. Artık trafiği hizmetteki düzeltmeler arasında bölebilmeniz gerekir.

Trafik dağıtımının nasıl ayarlandığını gösteren ekran görüntüsü.

Topoloji görünümü artık trafiğin düzeltmeler arasında nasıl dağıtıldığını gösterir.

Trafik dağıtımının nasıl gözden geçirildiğini gösteren ekran görüntüsü.

Knative komut satırı arabirimini (kn) kullanma

Önceki adımlarda OpenShift web konsolunu kullanarak OpenShift Sunucusuz uygulaması oluşturup dağıtmıştınız. OpenShift Sunucusuz altında Knative çalıştırdığından, Knative komut satırı arabirimini (kn) kullanarak da Knative hizmetleri oluşturabilirsiniz.

Uyarı

CLI'yi henüz yüklemediyseniz kn , bu makalenin önkoşullar bölümündeki adımları izlediğinize emin olun. Ayrıca OpenShift komut satırı arabirimini ockullanarak oturum açtığınızdan emin olun.

adresinde oluşturulmuş quay.io/rhdevelopers/knative-tutorial-greeterbir kapsayıcı görüntüsü kullanacağız.

Hizmeti dağıtma

Hizmeti dağıtmak için aşağıdaki komutu çalıştırın:

kn service create greeter \
--image quay.io/rhdevelopers/knative-tutorial-greeter:quarkus \
--namespace demoserverless \
--revision-name greeter-v1

Aşağıdakine benzer bir çıkış görürsünüz.

Creating service 'greeter' in namespace 'demoserverless':

  0.044s The Route is still working to reflect the latest desired specification.
  0.083s ...
  0.114s Configuration "greeter" is waiting for a Revision to become ready.
 10.420s ...
 10.489s Ingress has not yet been reconciled.
 10.582s Waiting for load balancer to be ready
 10.763s Ready to serve.

Service 'greeter' created to latest revision 'greeter-v1' is available at URL:
http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io

Aşağıdakini çalıştırarak projedeki yolların listesini alabilirsiniz:

kn route list

Ad alanında yolların listesini geri alırsınız. Dağıtılan hizmeti görüntülemek için URL'yi bir web tarayıcısında açın.

NAME      URL                                                            READY
greeter   http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io   True

Hizmetin yeni bir sürümünü dağıtma

Aşağıdaki komutu çalıştırarak ve görüntü etiketini ve ortam değişkenini :latestgeçirerek uygulamanın yeni bir sürümünü dağıtınMESSAGE_PREFIX:

kn service update greeter \
 --image quay.io/rhdevelopers/knative-tutorial-greeter:latest \
 --namespace demoserverless \
 --env MESSAGE_PREFIX=GreeterV2 \
 --revision-name greeter-v2

Yeni bir düzeltmenin greeter-v2 dağıtıldığına dair bir onay alırsınız.

Updating Service 'greeter' in namespace 'demoserverless':

  5.029s Traffic is not yet migrated to the latest revision.
  5.086s Ingress has not yet been reconciled.
  5.190s Waiting for load balancer to be ready
  5.332s Ready to serve.

Service 'greeter' updated to latest revision 'greeter-v2' is available at URL:
http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io

Tüm düzeltmelerin ve bunların trafik dağıtımlarının listesini görüntülemek için aşağıdaki komutu çalıştırın:

kn revision list

Aşağıdaki çıkışa benzer bir liste alırsınız. Bu örnekte yeni düzeltmenin trafiğin %100'ünün alındığını unutmayın.

NAME            SERVICE   TRAFFIC   TAGS   GENERATION   AGE     CONDITIONS   READY   REASON
greeter-v2      greeter   100%             2            90s     3 OK / 4     True
greeter-v1      greeter                    1            5m32s   3 OK / 4     True

Mavi/yeşil ve kanarya dağıtımları

Yeni bir düzeltme dağıtıldığında, varsayılan olarak trafiğin %100'ünün kendisine atanır. Uygulamanın eski sürümüne hızla geri döndürebileceğiniz mavi/yeşil bir dağıtım stratejisi uygulamak istediğinizi varsayalım. Knative bunu kolaylaştırır.

Hizmeti, trafiğin %100'ünün atanacağı üç trafik etiketi oluşturacak şekilde güncelleştirebilirsiniz.

  • current: şu anda dağıtılan sürümü işaret eder
  • önceki sürüm: önceki sürüme işaret eden
  • en son: her zaman en son sürümü gösterir
kn service update greeter \
   --tag greeter-v2=current \
   --tag greeter-v1=prev \
   --tag @latest=latest

Aşağıdakine benzer bir onay alırsınız.

Updating Service 'greeter' in namespace 'demoserverless':

  0.037s Ingress has not yet been reconciled.
  0.121s Waiting for load balancer to be ready
  0.287s Ready to serve.

Service 'greeter' with latest revision 'greeter-v2' (unchanged) is available at URL:
http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io

Aşağıdaki komutu kullanarak yolları listeleyin:

kn route describe greeter

Etiketlerin her birinin URL'lerini ve bunların trafik dağıtımını gösteren bir çıkış alırsınız.

Name:       greeter
Namespace:  demoserverless
Age:        10m
URL:        http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
Service:    greeter

Traffic Targets:
  100%  @latest (greeter-v2) #latest
        URL:  http://latest-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
    0%  greeter-v1 #prev
        URL:  http://prev-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
    0%  greeter-v2 #current
        URL:  http://current-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io

[..]

Önceki sürüme hızla geri dönmek istediğinizi varsayalım; trafiğin %100'ünün önceki etikete gönderilmesi için trafik dağıtımını güncelleştirebilirsiniz:

kn service update greeter --traffic current=0 --traffic prev=100

Aşağıdaki komutu kullanarak yolları listeleyin ve yeniden denetleyin:

kn route describe greeter

Trafik dağıtımının %100'ünün önceki sürüme gittiğini gösteren bir çıkış görürsünüz.

Name:       greeter
Namespace:  demoserverless
Age:        19m
URL:        http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
Service:    greeter

Traffic Targets:
    0%  @latest (greeter-v2) #latest
        URL:  http://latest-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
  100%  greeter-v1 #prev
        URL:  http://prev-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
    0%  greeter-v2 #current
        URL:  http://current-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io

[..]

Tarayıcınızdaki ana yolu yenilerken (http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io bu durumda) trafik dağıtımıyla oynayın.

Kaynakları temizle

Uygulamayı bitirdiğinizde, projeyi silmek için aşağıdaki komutu çalıştırabilirsiniz:

oc delete project demoserverless

Öğretici: Azure Red Hat OpenShift 4 kümesini silme başlığı altındaki yönergeleri izleyerek de kümeyi silebilirsiniz.

Sonraki Adımlar

Bu kılavuzda şunların nasıl yapılacağını öğrendiniz:

  • OpenShift Sunucusuz işlecini ve Knative Serving'ı yükleme
  • Web konsolunu kullanarak sunucusuz proje dağıtma
  • Knative CLI (kn) kullanarak sunucusuz proje dağıtma
  • Knative CLI (kn) kullanarak mavi/yeşil dağıtımları ve kanarya dağıtımlarını yapılandırma

OpenShift Sunucusuz kullanarak Azure Red Hat OpenShift'te sunucusuz, olay odaklı uygulamalar oluşturma ve dağıtma hakkında daha fazla bilgi edinmek için OpenShift Sunucusuz'u kullanmaya başlama belgelerini ve Sunucusuz uygulamaları oluşturma ve yönetme belgelerini izleyin.