Bagikan melalui


Menyebarkan aplikasi Spring Boot ke Azure Kubernetes Service

Catatan

Untuk aplikasi Spring Boot, sebaiknya gunakan Azure Spring Apps. Namun, Anda masih dapat memilih untuk menggunakan Azure Kubernetes Service sebagai tujuan. Untuk informasi selengkapnya, lihat Memilih layanan Azure yang tepat untuk aplikasi Java Anda.

Tutorial ini memandu Anda untuk menggabungkan Kubernetes dan Docker untuk mengembangkan dan menyebarkan aplikasi Spring Boot ke Microsoft Azure. Lebih khusus lagi, Anda menggunakan Spring Boot untuk pengembangan aplikasi, Kubernetes untuk penyebaran kontainer, dan Azure Kubernetes Service (AKS) untuk meng-host aplikasi Anda.

Kubernetes dan Docker adalah solusi sumber terbuka yang membantu pengembang mengotomatiskan penyebaran, penskalaan, dan pengelolaan aplikasi mereka yang berjalan dalam kontainer.

Prasyarat

Catatan

Karena persyaratan virtualisasi dari tutorial ini, Anda tidak dapat mengikuti langkah-langkah dalam artikel ini di mesin virtual; Anda harus menggunakan komputer fisik dengan fitur virtualisasi yang diaktifkan.

Membuat Spring Boot di aplikasi web Memulai Docker

Langkah-langkah berikut memandu Anda membangun aplikasi web Spring Boot dan mengujinya secara lokal.

  1. Buka perintah dan buat direktori lokal untuk menyimpan aplikasi Anda, dan ubah ke direktori itu; misalnya:

    mkdir C:\SpringBoot
    cd C:\SpringBoot
    

    -- atau --

    mkdir /users/$USER/SpringBoot
    cd /users/$USER/SpringBoot
    
  2. Buat klon proyek sampel Memulai Spring Boot di Docker ke direktori tersebut.

    git clone https://github.com/spring-guides/gs-spring-boot-docker.git
    
  3. Ubah direktori ke proyek yang sudah selesai.

    cd gs-spring-boot-docker
    cd complete
    
  4. Gunakan Maven untuk membangun dan menjalankan aplikasi contoh.

    mvn package spring-boot:run
    
  5. Uji aplikasi web dengan menelusuri ke http://localhost:8080, atau dengan perintah curl berikut:

    curl http://localhost:8080
    
  6. Anda akan melihat pesan berikut ditampilkan: Halo Dunia Docker

    Telusuri Aplikasi Sampel Secara Lokal

Buat Azure Container Registry menggunakan Azure CLI

  1. Buka prompt perintah.

  2. Masuk ke akun Azure Anda:

    az login
    
  3. Pilih Langganan Azure Anda:

    az account set -s <YourSubscriptionID>
    
  4. Buat grup sumber daya untuk sumber daya Azure yang digunakan dalam tutorial ini.

    az group create --name=wingtiptoys-kubernetes --location=eastus
    
  5. Buat registri kontainer Azure privat di grup sumber daya. Tutorial mendorong aplikasi contoh sebagai gambar Docker ke registri ini di langkah-langkah selanjutnya. Ganti wingtiptoysregistry dengan nama unik untuk registri Anda.

    az acr create --resource-group wingtiptoys-kubernetes --location eastus \
     --name wingtiptoysregistry --sku Basic
    

Dorong aplikasi Anda ke registri kontainer melalui Jib

  1. Masuk ke Azure Container Registry Anda dari Azure CLI.

    # 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 login
    
  2. Buka file pom.xml dengan editor teks; misalnya Visual Studio Code.

    code pom.xml
    
  3. Perbarui koleksi <properties> di file pom.xml dengan nama registri untuk Azure Container Registry Anda dan versi terbaru dari jib-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>
    
  4. Perbarui koleksi <plugins>dalam file pom.xml sehingga elemen <plugin> terisi entri untuk jib-maven-plugin, seperti yang ditampilkan dalam contoh berikut. Perhatikan bahwa kami menggunakan gambar dasar dari Microsoft Container Registry (MCR): mcr.microsoft.com/openjdk/jdk:11-ubuntu, yang berisi JDK yang didukung secara resmi untuk Azure. Untuk gambar dasar MCR lainnya dengan JDK yang didukung secara resmi, lihat Menginstal Microsoft Build of OpenJDK..

    <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>
    
  5. Navigasi ke direktori proyek yang telah selesai untuk aplikasi Spring Boot Anda dan jalankan perintah berikut untuk membangun dan mendorong gambar ke registri:

    az acr login && mvn compile jib:build
    

Catatan

Karena masalah keamanan Azure CLI dan Azure Container Registry, kredensial yang dibuat oleh az acr login berlaku selama 1 jam. Jika Anda melihat kesalahan 401 Tidak diizinkan, Anda bisa menjalankan perintah az acr login --name <your registry name> lagi untuk mengautentikasi ulang. Jika Anda melihat kesalahan Waktu baca habis, Anda dapat mencoba meningkatkan batas waktu dengan mvn -Djib.httpTimeout=7200000 jib:dockerBuild atau -Djib.httpTimeout=0 untuk batas waktu yang tak terbatas.

Membuat kluster Kubernetes di AKS menggunakan Azure CLI

  1. Membuat kluster Kubernetes di Azure Kubernetes Service. Perintah berikut membuat kluster kubernetes di grup sumber daya wingtiptoys-kubernetes, dengan wingtiptoys-akscluster sebagai nama kluster, dengan Azure Container Registry (ACR) wingtiptoysregistry terpasang, dan wingtiptoys-kubernetes sebagai awalan DNS:

    az aks create --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster \
     --attach-acr wingtiptoysregistry \
     --dns-name-prefix=wingtiptoys-kubernetes --generate-ssh-keys
    

    Perintah ini mungkin memerlukan beberapa saat untuk bisa menyelesaikan prosesnya.

  2. Instal kubectl menggunakan Azure CLI. Pengguna Linux mungkin harus memberi awalan perintah ini dengan sudo karena ini menyebarkan Kubernetes CLI ke /usr/local/bin.

    az aks install-cli
    
  3. Unduh informasi konfigurasi kluster agar Anda dapat mengelola kluster Anda dari antarmuka web Kubernetes dan kubectl.

    az aks get-credentials --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster
    

Menyebarkan citra ke kluster Kubernetes Anda

Tutorial ini menyebarkan aplikasi menggunakan kubectl, kemudian memungkinkan Anda menjelajahi penyebaran melalui antarmuka web Kubernetes.

Sebarkan dengan kubectl

  1. Buka prompt perintah.

  2. Jalankan kontainer Anda di kluster Kubernetes dengan menggunakan perintah kubectl run. Berikan nama layanan untuk aplikasi Anda di Kubernetes dan nama citra lengkap. Contohnya:

    kubectl run gs-spring-boot-docker --image=wingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latest
    

    Dalam perintah ini:

    • Nama kontainer gs-spring-boot-docker ditentukan segera setelah perintah run

    • Parameter --image menentukan server login gabungan dan nama citra sebagai wingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latest

  3. Ekspos kluster Kubernetes Anda secara eksternal dengan menggunakan perintah kubectl expose. Tentukan nama layanan Anda, port TCP untuk publik yang digunakan untuk mengakses aplikasi, dan port target internal yang didengarkan aplikasi Anda. Contohnya:

    kubectl expose pod gs-spring-boot-docker --type=LoadBalancer --port=80 --target-port=8080
    

    Dalam perintah ini:

    • Nama kontainer gs-spring-boot-docker ditentukan segera setelah perintah expose pod.

    • Parameter --type menentukan bahwa kluster menggunakan penyeimbang beban.

    • Parameter --port menentukan port TCP untuk publik dari 80. Anda mengakses aplikasi di port ini.

    • Parameter --target-port menentukan port TCP dari 8080. Penyeimbang beban meneruskan permintaan ke aplikasi Anda di port ini.

  4. Setelah aplikasi disebarkan ke kluster, kuerikan alamat IP eksternal dan buka di browser web Anda:

    kubectl get services -o=jsonpath='{.items[*].status.loadBalancer.ingress[0].ip}'
    

    Telusuri Aplikasi Sampel di Azure

Menyebarkan dengan tampilan sumber daya Kubernetes

  1. Pilih Tambahkan dari tampilan sumber daya apa pun (Namespace Layanan, Beban Kerja, Layanan, dan ingress, Penyimpanan, atau Konfigurasi).

    Tampilan sumber daya Kubernetes.

  2. Tempelkan di YAML berikut:

    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:latest
    
  3. Pilih Tambahkan di bagian bawah penyunting YAML untuk menyebarkan aplikasi.

    Tampilan sumber daya Kubernetes, tambahkan sumber daya.

    Setelah menyebarkan Deployment, seperti di atas, pilih Tambahkan di bagian bawah editor YAML untuk menyebarkan Service menggunakan YAML berikut:

    apiVersion: v1
    kind: Service
    metadata:
      name: gs-spring-boot-docker
    spec:
      type: LoadBalancer
      ports:
      - port: 80
        targetPort: 8080
      selector:
        app: gs-spring-boot-docker
    
  4. Setelah file YAML ditambahkan, penampil sumber daya menunjukkan aplikasi Spring Boot Anda. Layanan eksternal mencakup alamat IP eksternal yang ditautkan sehingga Anda dapat dengan mudah menampilkan aplikasi di browser Anda.

    Tampilan sumber daya Kubernetes, daftar layanan.

    Tampilan sumber daya Kubernetes, daftar layanan, titik akhir eksternal disorot.

  5. Pilih IP Eksternal. Anda kemudian akan melihat aplikasi Spring Boot yang berjalan di Azure.

    Telusuri Aplikasi Sampel di Azure

Langkah berikutnya

Untuk mempelajari selengkapnya tentang Spring dan Azure, lanjutkan ke pusat dokumentasi Spring di Azure.

Lihat juga

Untuk informasi selengkapnya tentang penggunaan Spring Boot di Azure, lihat artikel berikut:

Selengkapnya mengenai cara menggunakan Azure dengan Java, lihat Azure untuk Pengembang Java dan Bekerja dengan Azure DevOps dan Java.

Untuk informasi selengkapnya tentang penyebaran aplikasi Java ke Kubernetes dengan Visual Studio Code, lihat Tutorial Visual Studio Code Java.

Untuk informasi selengkapnya tentang proyek sampel Spring Boot di Docker, lihat Memulai Spring Boot di Docker.

Tautan berikut memberikan informasi tambahan tentang pembuatan aplikasi Spring Boot:

Tautan berikut memberikan informasi tambahan tentang penggunaan Kubernetes dengan Azure:

Informasi selengkapnya tentang penggunaan antarmuka baris perintah Kubernetes tersedia di panduan pengguna kubectl di https://kubernetes.io/docs/reference/kubectl/.

Situs web Kubernetes memiliki beberapa artikel yang membahas penggunaan citra dalam registri privat:

Untuk contoh tambahan tentang cara menggunakan citra Docker kustom dengan Azure, lihat Menggunakan citra Docker kustom untuk Azure Web App di Linux.

Untuk informasi selengkapnya tentang menjalankan dan melakukan penelusuran kesalahan kontainer secara berulang langsung di Azure Kubernetes Service (AKS) dengan Azure Dev Spaces, lihat Memulai di Azure Dev Spaces dengan Java