Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Not
Spring Boot uygulamaları için Azure Container Apps kullanmanızı öneririz. Ancak yine de Azure Kubernetes Service'i hedef olarak kullanmayı seçebilirsiniz. Daha fazla bilgi için bkz. Java uygulamalarınız için doğru Azure hizmetlerini seçme.
Bu öğretici, Spring Boot uygulaması geliştirmek ve Microsoft Azure'a dağıtmak için Kubernetes ve Docker'ı birleştirme konusunda size yol gösterir. Daha açık belirtmek gerekirse, uygulama geliştirme için Spring Boot, kapsayıcı dağıtımı için Kubernetes ve uygulamanızı barındırmak için Azure Kubernetes Service (AKS) kullanırsınız.
Kubernetes ve Docker, geliştiricilerin kapsayıcılarda çalışan uygulamalarının dağıtımını, ölçeklendirmesini ve yönetimini otomatikleştirmesine yardımcı olan açık kaynak çözümlerdir.
Önkoşullar
- Azure aboneliği; Henüz bir Azure aboneliğiniz yoksa,
MSDN abone avantajlarınızı etkinleştirebilir veyaücretsiz bir Azure hesabına kaydolabilirsiniz. - Azure Command-Line Arabirimi (CLI).
- Desteklenen bir Java Geliştirme Seti (JDK). Azure'da geliştirme yaparken kullanılabilecek JDK'ler hakkında daha fazla bilgi için bkz. Azure'da Java desteği ve Azure Stack.
- Apache'nin Maven derleme aracı (Sürüm 3).
- Git istemcisi.
- Docker istemcisi.
- ACR Docker kimlik bilgisi yardımcı aracı.
Not
Bu öğreticinin sanallaştırma gereksinimleri nedeniyle, bir sanal makinede bu makaledeki adımları uygulayamazsınız; sanallaştırma özellikleri etkinleştirilmiş bir fiziksel bilgisayar kullanmanız gerekir.
Docker'da Spring Boot için Başlangıç Rehberi web uygulamasını oluşturma
Aşağıdaki adımlar spring boot web uygulaması oluşturma ve yerel olarak test etme adımlarını gösterir.
Bir komut istemi açın ve uygulamanızı barındıracak yerel bir dizin oluşturun ve bu dizine geçin; mesela:
mkdir C:\SpringBoot cd C:\SpringBoot--veya--
mkdir /users/$USER/SpringBoot cd /users/$USER/SpringBootDocker'da Spring Boot Kullanmaya Başlama örnek projeyi dizinine kopyalayın.
git clone https://github.com/spring-guides/gs-spring-boot-docker.gitDizini tamamlanmış proje olarak değiştirin.
cd gs-spring-boot-docker cd completeÖrnek uygulamayı derlemek ve çalıştırmak için Maven kullanın.
mvn package spring-boot:runweb uygulamasını
http://localhost:8080'e göz atarak veya aşağıdakicurlkomutuyla test edin.curl http://localhost:8080Şu iletiyi görmeniz gerekir: Hello Docker World
Azure CLI kullanarak Azure Container Registry oluşturma
Bir komut istemi açın.
Azure hesabınızda oturum açın:
az loginAzure Aboneliğinizi seçin:
az account set -s <YourSubscriptionID>Bu öğreticide kullanılan Azure kaynakları için bir kaynak grubu oluşturun.
az group create --name=wingtiptoys-kubernetes --location=eastusKaynak grubunda özel bir Azure kapsayıcı kayıt defteri oluşturun. Öğretici, sonraki adımlarda örnek uygulamayı docker görüntüsü olarak bu kayıt defterine gönderir.
wingtiptoysregistrydeğerini kayıt defteriniz için benzersiz bir adla değiştirin.az acr create --resource-group wingtiptoys-kubernetes --location eastus \ --name wingtiptoysregistry --sku Basic
Uygulamanızı Jib aracılığıyla kapsayıcı kayıt deposuna gönderin.
Azure CLI'dan Azure Container Registry'nizde oturum açın.
# set the default name for Azure Container Registry, otherwise you need to specify the name in "az acr login" az config set defaults.acr=wingtiptoysregistry az acr loginpom.xml dosyasını bir metin düzenleyicisiyle açın; örneğin Visual Studio Code.
code pom.xml<properties>dosyasındaki koleksiyonunu Azure Container Registry'nizin kayıt defteri adıyla ve jib-maven-pluginen son sürümüyle güncelleştirin.<properties> <!-- Note: If your ACR name contains upper case characters, be sure to convert them to lower case characters. --> <docker.image.prefix>wingtiptoysregistry.azurecr.io</docker.image.prefix> <jib-maven-plugin.version>2.5.2</jib-maven-plugin.version> <java.version>1.8</java.version> </properties>aşağıdaki örnekte gösterildiği gibi
<plugins>öğesinin için bir girdi içermesi için<plugin>dosyasındakijib-maven-pluginkoleksiyonunu güncelleştirin. Microsoft Container Registry'den (MCR) temel görüntü kullandığımızı unutmayın: azure için resmi olarak desteklenen bir JDK içerenmcr.microsoft.com/openjdk/jdk:11-ubuntu. Resmi olarak desteklenen JDK'lere sahip diğer MCR temel görüntüleri için bkz. OpenJDK'nın Microsoft Derlemesini Yükleme ..<plugin> <artifactId>jib-maven-plugin</artifactId> <groupId>com.google.cloud.tools</groupId> <version>${jib-maven-plugin.version}</version> <configuration> <from> <image>mcr.microsoft.com/openjdk/jdk:11-ubuntu</image> </from> <to> <image>${docker.image.prefix}/gs-spring-boot-docker</image> </to> </configuration> </plugin>Spring Boot uygulamanızın tamamlanmış proje dizinine gidin ve aşağıdaki komutu çalıştırarak görüntüyü derleyin ve görüntüyü kayıt defterine gönderin:
az acr login && mvn compile jib:build
Not
Azure Cli ve Azure Container Registry'nin güvenlik endişesi nedeniyle, az acr login tarafından oluşturulan kimlik bilgileri 1 saat geçerlidir.
401 Unauthorized bir hata görürseniz, yeniden kimlik doğrulaması yapmak için az acr login --name <your registry name> komutunu yeniden çalıştırabilirsiniz.
Read timed out bir hata görürseniz, mvn -Djib.httpTimeout=7200000 jib:dockerBuildile zaman aşımlarını artırmayı veya sonsuz bir zaman aşımı için -Djib.httpTimeout=0 deneyebilirsiniz.
Azure CLI kullanarak AKS üzerinde Kubernetes Kümesi oluşturma
Azure Kubernetes Service'te bir Kubernetes kümesi oluşturun. Aşağıdaki komut,
wingtiptoys-kuberneteskaynak grubunda,wingtiptoys-aksclusteradlı bir Kubernetes kümesi oluşturur, Azure Container Registry (ACR)wingtiptoysregistryile ilişkilendirilmiş ve DNS ön ekiwingtiptoys-kubernetesolacak şekilde.az aks create --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster \ --attach-acr wingtiptoysregistry \ --dns-name-prefix=wingtiptoys-kubernetes --generate-ssh-keysBu komutun tamamlanması biraz zaman alabilir.
Azure CLI kullanarak
kubectlyükleyin. Linux kullanıcılarının bu komutusudoolarak ön eklemeleri gerekebilir çünkü Kubernetes CLI/usr/local/bin'e dağıtılmaktadır.az aks install-cliKümenizi Kubernetes web arabiriminden yönetebilmek ve
kubectliçin küme yapılandırma bilgilerini indirin.az aks get-credentials --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster
Görüntüyü Kubernetes kümenize dağıtma
Bu öğretici, kubectlkullanarak uygulamayı dağıtır ve ardından Kubernetes web arabirimi aracılığıyla dağıtımı keşfetmenize olanak tanır.
kubectl ile dağıtma
Bir komut istemi açın.
kubectl runkomutunu kullanarak kapsayıcınızı Kubernetes kümesinde çalıştırın. Kubernetes'te uygulamanız için bir hizmet adı ve tam görüntü adı verin. Mesela:kubectl run gs-spring-boot-docker --image=wingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latestBu komutta:
kapsayıcı adı
gs-spring-boot-docker,runkomutundan hemen sonra belirtilir--imageparametresi, birleşik oturum açma sunucusunu ve görüntü adınıwingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latestolarak belirtir
kubectl exposekomutunu kullanarak Kubernetes kümenizi harici olarak kullanıma sunma. Hizmet adınızı, uygulamaya erişmek için kullanılan genel kullanıma yönelik TCP bağlantı noktasını ve uygulamanızın dinleyeceğiniz iç hedef bağlantı noktasını belirtin. Mesela:kubectl expose pod gs-spring-boot-docker --type=LoadBalancer --port=80 --target-port=8080Bu komutta:
kapsayıcı adı
gs-spring-boot-docker,expose podkomutundan hemen sonra belirtilir.--typeparametresi, kümenin yük dengeleyici kullandığını belirtir.--portparametresi 80'in genel kullanıma yönelik TCP bağlantı noktasını belirtir. Uygulamaya bu bağlantı noktasından erişin.--target-portparametresi 8080 iç TCP bağlantı noktasını belirtir. Yük dengeleyici, istekleri bu bağlantı noktasındaki uygulamanıza iletir.
Uygulama kümeye dağıtıldıktan sonra dış IP adresini sorgulayın ve web tarayıcınızda açın:
kubectl get services -o=jsonpath='{.items[*].status.loadBalancer.ingress[0].ip}'
'da Örnek Uygulamaya Gözatma
Kubernetes kaynak görünümüyle dağıtma
Kaynak görünümlerinden (Ad Alanı, İş Yükleri, Hizmetler ve girişler, Depolama veya Yapılandırma) ekle'yi seçin.
Kubernetes kaynakları görünümü
Aşağıdaki YAML'yi yapıştırın:
apiVersion: apps/v1 kind: Deployment metadata: name: gs-spring-boot-docker spec: replicas: 1 selector: matchLabels: app: gs-spring-boot-docker template: metadata: labels: app: gs-spring-boot-docker spec: containers: - name: gs-spring-boot-docker image: wingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latestUygulamayı dağıtmak için YAML düzenleyicisinin alt kısmındaki "'ı seçin" ve "'i ekle" adlı seçenekleri kullanın.
Kubernetes kaynaklarını görüntüleyin, kaynak ekleyin.
Deploymentdağıtıldıktan sonra, yukarıdaki gibi, aşağıdaki YAML'yi kullanarak dağıtmak için, YAML düzenleyicisinin altındakiServiceEkle'yi seçin.apiVersion: v1 kind: Service metadata: name: gs-spring-boot-docker spec: type: LoadBalancer ports: - port: 80 targetPort: 8080 selector: app: gs-spring-boot-dockerYAML dosyası eklendikten sonra kaynak görüntüleyici Spring Boot uygulamanızı gösterir. Dış hizmet, uygulamayı tarayıcınızda kolayca görüntüleyebilmeniz için bağlantılı bir dış IP adresi içerir.
Kubernetes kaynakları görünümünü, hizmet listesini
harici IPseçin. Ardından Spring Boot uygulamanızın Azure'da çalıştığını göreceksiniz.
'da Örnek Uygulamaya Gözatma
Sonraki adımlar
Spring ve Azure hakkında daha fazla bilgi edinmek için Azure'da Spring belge merkezine geçin.
Ayrıca bkz.
Azure'da Spring Boot kullanma hakkında daha fazla bilgi için aşağıdaki makaleye bakın:
Java ile Azure kullanımı hakkında daha fazla bilgi için Java Geliştiricileri için Azure ve Azure DevOps ve Java ile Çalışmabaşlıklarına bakın.
Visual Studio Code ile Kubernetes'e Java uygulaması dağıtma hakkında daha fazla bilgi için bkz. Visual Studio Code Java Öğreticileri.
Docker'da Spring Boot örnek projesi hakkında daha fazla bilgi için bkz. Docker'da Spring Boot Başlarken.
Aşağıdaki bağlantılar Spring Boot uygulamaları oluşturma hakkında ek bilgiler sağlar:
- Basit bir Spring Boot uygulaması oluşturma hakkında daha fazla bilgi için https://start.spring.io/'daki Spring Initializr bölümüne bakın.
Aşağıdaki bağlantılar Kubernetes'i Azure ile kullanma hakkında ek bilgi sağlar:
- Azure Kubernetes Service'de Kubernetes kümesini kullanmaya başlama
Kubernetes komut satırı arabirimini kullanma hakkında daha fazla bilgiyi https://kubernetes.io/docs/reference/kubectl/ kullanıcı kılavuzunda bulabilirsiniz.
Kubernetes web sitesinde, özel kayıt defterlerindeki görüntülerin kullanılmasını ele alan birkaç makale vardır:
Azure ile özel Docker görüntülerini kullanma hakkında ek örnekler için bkz. Linux üzerinde Azure Web App için özel Docker görüntüsü kullanma .
Azure Dev Spaces ile doğrudan Azure Kubernetes Service'te (AKS) kapsayıcıları yinelemeli olarak çalıştırma ve hata ayıklama hakkında daha fazla bilgi için bkz. Java ile Azure Dev Spaces'i kullanmaya başlama