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 kullanın. Ancak, Azure Kubernetes Service'i hedef olarak kullanmaya devam edebilirsiniz. Daha fazla bilgi için bkz. Java uygulamalarınız için doğru Azure hizmetlerini seçme.
Bu öğreticide Kubernetes ve Docker kullanarak bir Spring Boot uygulaması geliştirme ve Microsoft Azure dağıtma işlemi gösterilmektedir. 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ştirin veya ücretsiz bir Azure hesabına kaydolun.
- 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; örneğin:
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örürsünüz: 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ı Visual Studio Code gibi bir metin düzenleyicisiyle açın.
code pom.xml<properties>pom.xml dosyasındaki koleksiyonu Azure Container Registry'nizin kayıt defteri adıyla ve en son sürümüyle güncelleştirinjib-maven-plugin.<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. Azure için resmi olarak desteklenen bir JDK içeren Microsoft Container Registry'den (MCR)mcr.microsoft.com/openjdk/jdk:11-ubuntutemel görüntü kullanın. Resmi olarak desteklenen JDK'lere sahip diğer MCR taban görüntüleri için Microsoft Build OpenJDK'yi yükleme bölümüne bakın.<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
Güvenlik nedeniyle, kullanarak az acr login oluşturduğunuz kimlik bilgileri bir saat geçerlidir.
401 Unauthorized hatası alırsanız, yeniden kimlik doğrulamak için az acr login --name <your registry name> komutunu yeniden çalıştırın.
Read timed out hatası görürseniz, mvn -Djib.httpTimeout=7200000 jib:dockerBuild ile zaman aşımı sürelerini artırmayı deneyin veya sınırsız zaman aşımı için -Djib.httpTimeout=0 kullanın.
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-aksclusterkaynak grubunda, küme adı olarakwingtiptoysregistryile, Azure Container Registry (ACR)wingtiptoys-kuberneteseklenmiş olarak ve DNS ön eki olarakwingtiptoys-kubernetesile bir Kubernetes kümesi oluşturur: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, Kubernetes CLI’yi/usr/local/binkonumuna yüklediği için bu komutun başınasudoeklemesi gerekebilir.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 öğreticide, kubectl kullanarak uygulamayı dağıtırsınız ve ardından dağıtımı Kubernetes web arabirimi üzerinden inceleyebilirsiniz.
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ını
gs-spring-boot-dockerkomutunrunhemen ardından belirtirsiniz.parametresi,
--imagebirleşik oturum açma sunucusunu ve görüntü adını olarakwingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latestbelirtir.
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ını
gs-spring-boot-dockerkomutunexpose podhemen ardından belirtirsiniz.--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.
Uygulamayı kümeye dağıttığınızda 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.
Deploymentöğesini dağıttıktan sonra, önceki adımda olduğu gibi, aşağıdaki YAML'yi kullanarak öğesini dağıtmak için YAML düzenleyicisinin alt kısmındakiServiceseçeneğini belirleyin: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ını eklediğinizde, 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. Spring Boot uygulamanızın Azure üzerinde çalıştığını görürsünüz.
'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 daha fazla bilgi 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 daha fazla bilgi sağlar:
- Azure Kubernetes Service'de Kubernetes kümesini kullanmaya başlama
Kubernetes komut satırı arabirimini kullanma hakkında daha fazla bilgi için adresinde kubectl kullanıcı kılavuzuna https://kubernetes.io/docs/reference/kubectl/bakın.
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 daha fazla örnek için bkz. Linux'ta Azure Web Uygulaması için özel Docker görüntüsü kullanma.
Azure Dev Spaces ile Azure Kubernetes Service (AKS) üzerinde kapsayıcıları yinelemeli olarak doğrudan çalıştırma ve hata ayıklama hakkında daha fazla bilgi için bkz. Azure Dev Spaces ile Java kullanmaya başlama.