全部产品
Search
文档中心

Enterprise Distributed Application Service:Gunakan toolkit-maven-plugin untuk mengimplementasikan rilis bertahap pada aplikasi di kluster Kubernetes

更新时间:Jun 27, 2025

Topik ini menjelaskan cara menggunakan plugin toolkit-maven-plugin untuk mengimplementasikan rilis bertahap aplikasi Spring Cloud, Dubbo, atau High-speed Service Framework (HSF) yang diterapkan di Enterprise Distributed Application Service (EDAS).

Penyebaran otomatis

Untuk menggunakan toolkit-maven-plugin dalam penyebaran aplikasi otomatis, tambahkan dependensi plugin, konfigurasikan plugin, dan bangun pekerjaan penyebaran.

  1. Tambahkan Dependensi Plugin

    Tambahkan dependensi plugin berikut ke file pom.xml:

    <build>
        <plugins>
            <plugin>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>toolkit-maven-plugin</artifactId>
                <version>1.1.9</version>
            </plugin>
        </plugins>
    </build>                            
    Catatan Disarankan untuk menggunakan versi terbaru dari toolkit-maven-plugin.
  2. Konfigurasikan Plugin

    Konfigurasi plugin mencakup konfigurasi akun, pengemasan, dan penyebaran. Untuk informasi lebih lanjut tentang item konfigurasi kustom lainnya, lihat Tentukan Parameter Pengemasan dan Tentukan Parameter Penyebaran.

    1. Lengkapi Konfigurasi Akun

      Di direktori root proyek yang dikemas, buat file konfigurasi akun dalam format YAML. Namai file tersebut toolkit_profile.yaml dan tambahkan informasi berikut:

      regionId:        # Wilayah tempat aplikasi diterapkan. Contohnya, nilai cn-beijing menunjukkan wilayah China (Beijing), nilai cn-shanghai menunjukkan wilayah China (Shanghai), dan nilai cn-hangzhou menunjukkan wilayah China (Hangzhou). 
      jarPath:         # Jalur paket penyebaran. Jika Anda menentukan parameter ini, Anda tidak perlu mengemas file aplikasi di Maven. Paket di jalur yang ditentukan digunakan untuk menerapkan aplikasi. Anda dapat menentukan jalur absolut atau relatif. 
      accessKeyId:     # ID AccessKey yang digunakan untuk mengakses sumber daya Alibaba Cloud. Untuk mengurangi risiko keamanan, kami merekomendasikan Anda menggunakan ID AccessKey dari Pengguna Resource Access Management (RAM). 
      accessKeySecret: # Rahasia AccessKey yang digunakan untuk mengakses sumber daya Alibaba Cloud. Untuk mengurangi risiko keamanan, kami merekomendasikan Anda menggunakan Rahasia AccessKey dari Pengguna RAM.
    2. Lengkapi Konfigurasi Pengemasan

      Di direktori root proyek yang dikemas, buat file konfigurasi paket dalam format YAML. Jika proyek yang dikemas dibuat untuk submodul Maven, buat file tersebut di direktori submodul. Namai file tersebut toolkit_package.yaml dan tambahkan informasi berikut:

      apiVersion: V1
      kind: AppPackage
      spec:
       packageType: # Jenis paket penyebaran aplikasi. Nilai valid adalah War, FatJar, Image, dan url. 
       packageUrl:  # URL paket. Jika Anda mengatur parameter packageType ke url, Anda dapat mengatur parameter ini ke alamat paket yang digunakan untuk menerapkan aplikasi. Jika parameter ini dibiarkan kosong, paket build Maven saat ini digunakan untuk menerapkan aplikasi Anda. 
       imageUrl:    # URL gambar. Parameter ini hanya berlaku jika Anda mengatur parameter packageType ke Image. Anda juga dapat membangun gambar Docker di lingkungan lokal Anda untuk menerapkan aplikasi.
    3. Lengkapi Konfigurasi Penyebaran

      Di direktori root proyek yang dikemas, buat file penyebaran dalam format YAML. Namai file tersebut toolkit_deploy.yaml dan tambahkan informasi berikut:

      apiVersion: V1
      kind: AppDeployment
      spec:
        type: kubernetes
        target:
          appId:        # ID aplikasi yang akan diterapkan. Jika Anda menentukan parameter appId, Anda tidak perlu menentukan parameter namespaceId dan appName. 
          namespaceId:  # ID namespace mikroservis tempat aplikasi akan diterapkan. Jika nilai appId tidak tersedia, nilai namespaceId dan appName dapat digunakan untuk mengidentifikasi aplikasi yang akan diterapkan. 
          appName:      # Nama aplikasi. Jika nilai appId tidak tersedia, nilai namespaceId dan appName dapat digunakan untuk mengidentifikasi aplikasi yang akan diterapkan. 
        updateStrategy:
          type: GrayBatchUpdate    # Mode rilis bertahap. 
          grayUpdate:              # Pengaturan rilis bertahap. 
            gray: x                 # Nilai integer, yang menentukan jumlah instans yang akan dirilis secara bertahap. 
          batchUpdate:             # Pengaturan untuk batch rilis bertahap. 
            batch: x                # Nilai integer, yang menentukan jumlah batch. 
            releaseType: xxx        # Tipe rilis. Nilai auto menunjukkan rilis otomatis. Nilai manual menunjukkan rilis manual. 
            batchWaitTime: x        # Nilai integer, yang menentukan interval antara dua batch berturut-turut. Unit: menit.
  3. Bangun Pekerjaan Penyebaran
    Buka direktori tempat file pom.xml berada. Jika Anda ingin menerapkan submodul Maven, buka direktori tempat file pom.xml submodul berada. Kemudian, jalankan perintah berikut:
    mvn clean package toolkit:deploy -Dtoolkit_profile=toolkit_profile.yaml -Dtoolkit_package=toolkit_package.yaml -Dtoolkit_deploy=toolkit_deploy.yaml                           
    Berikut adalah deskripsi parameter perintah:
    • toolkit:deploy: Menginstruksikan sistem untuk menerapkan aplikasi setelah operasi pengemasan selesai.
    • -Dtoolkit_profile: Menentukan file konfigurasi akun. Jika file konfigurasi akun berada di direktori yang sama dengan pom.xml dan nama file adalah .toolkit_profile.yaml, parameter ini tidak diperlukan karena plugin akan secara otomatis mendeteksinya. Perhatikan bahwa nama file dimulai dengan titik (.).
    • -Dtoolkit_package: Menentukan file paket. Jika file paket berada di direktori yang sama dengan pom.xml dan nama file adalah .toolkit_package.yaml, parameter ini tidak diperlukan karena plugin akan secara otomatis mendeteksinya. Perhatikan bahwa nama file dimulai dengan titik (.).
    • -Dtoolkit_deploy: Menentukan file penyebaran. Jika file penyebaran berada di direktori yang sama dengan pom.xml dan nama file adalah .toolkit_deploy.yaml, parameter ini tidak diperlukan karena plugin akan secara otomatis mendeteksinya. Perhatikan bahwa nama file dimulai dengan titik (.).
    • -Ddeploy_version: Menentukan versi yang akan diterapkan. Versi yang ditentukan memiliki prioritas lebih tinggi daripada versi yang dikonfigurasi dalam file konfigurasi penyebaran.
      Catatan toolkit-maven-plugin versi 1.0.6 dan seterusnya mendukung parameter ini.
    Setelah menjalankan perintah pengemasan, informasi berikut akan ditampilkan. Jika BUILD SUCCESS muncul, penyebaran berhasil.

Item konfigurasi lainnya

  1. Tentukan Parameter Pengemasan

    File paket mendukung parameter berikut:

    apiVersion: V1
    kind: AppPackage
    spec:
      packageType:  # Jenis paket penyebaran aplikasi. Nilai valid adalah War, FatJar, Image, dan url. 
      imageUrl:     # URL gambar. Parameter ini diperlukan jika Anda menggunakan gambar untuk menerapkan aplikasi. 
      packageUrl:   # URL paket. Jika Anda mengatur parameter packageType ke url, Anda dapat mengatur parameter ini ke alamat paket yang digunakan untuk menerapkan aplikasi. 
    build:
        docker:
           dockerfile:        # File yang digunakan untuk membangun gambar Docker Anda. Parameter ini diperlukan jika Anda ingin membangun gambar di lingkungan lokal Anda untuk menerapkan aplikasi. 
           imageRepoAddress:  # Alamat repositori gambar Alibaba Cloud yang ingin Anda gunakan. Parameter ini diperlukan jika Anda ingin membangun gambar di lingkungan lokal Anda untuk menerapkan aplikasi. 
           imageTag:          # Tag gambar. Parameter ini diperlukan jika Anda ingin membangun gambar di lingkungan lokal Anda untuk menerapkan aplikasi. 
           imageRepoUser:     # Nama pengguna yang digunakan untuk mengakses repositori gambar Alibaba Cloud. Parameter ini diperlukan jika Anda ingin membangun gambar di lingkungan lokal Anda untuk menerapkan aplikasi. 
           imageRepoPassword: # Kata sandi yang digunakan untuk mengakses repositori gambar Alibaba Cloud. Parameter ini diperlukan jika Anda ingin membangun gambar di lingkungan lokal Anda untuk menerapkan aplikasi. 
         oss:
           bucket:          # Nama Bucket Object Storage Service (OSS) tujuan. Parameter ini diperlukan jika Anda ingin menggunakan Bucket OSS kustom untuk menyimpan paket penyebaran. 
           key:             # Jalur Bucket OSS. Parameter ini diperlukan jika Anda ingin menggunakan Bucket OSS kustom untuk menyimpan paket penyebaran. 
           accessKeyId:     # ID AccessKey yang digunakan untuk mengakses OSS. Parameter ini diperlukan jika Anda ingin menggunakan Bucket OSS kustom untuk menyimpan paket penyebaran. 
           accessKeySecret: # Rahasia AccessKey yang digunakan untuk mengakses OSS. Parameter ini diperlukan jika Anda ingin menggunakan Bucket OSS kustom untuk menyimpan paket penyebaran.
  2. Tentukan Parameter Penyebaran

    Klik di sini untuk menampilkan parameter yang didukung oleh file penyebaran.

    apiVersion: V1
    kind: AppDeployment
    spec:
      type: kubernetes
      target:
        appName:     # Nama aplikasi. 
        namespaceId: # Namespace mikroservis tempat aplikasi akan diterapkan. 
        appId:       # ID aplikasi. Plugin menerapkan aplikasi yang diidentifikasi oleh ID yang ditentukan. Jika Anda tidak menentukan parameter ini, nilai namespaceId dan appName digunakan untuk mengidentifikasi aplikasi yang akan diterapkan. 
        version:     # Versi yang akan diterapkan. Format default terdiri dari nilai hari, jam, menit, dan detik. 
        jdk:         # Versi Java Development Kit (JDK) yang bergantung pada paket yang diterapkan. Open JDK 7 dan Open JDK 8 didukung. Parameter ini tidak tersedia jika Anda menerapkan aplikasi menggunakan gambar. 
        webContainer:  # Versi kontainer Tomcat yang bergantung pada paket yang diterapkan. apache-tomcat-7.0.91 didukung. Parameter ini tidak tersedia jika Anda menerapkan aplikasi menggunakan gambar. 
        batchWaitTime: # Interval antara dua batch berturut-turut. 
        command:       # Perintah yang digunakan untuk memulai gambar. Perintah harus merupakan objek yang dapat dieksekusi di kontainer. Misalnya, Anda dapat mengatur perintah menjadi sleep. Jika Anda menentukan parameter ini, perintah startup asli gambar menjadi tidak valid. 
        commandArgs:   # Parameter perintah startup gambar. Parameter ini diperlukan oleh perintah startup sebelumnya. 
        - 1d
      envs:       # Variabel lingkungan kontainer. 
        - name: envtmp0
          value: '0'
        - name: envtmp1
          value: '1'
      liveness:   # Memeriksa status kesehatan kontainer. Kontainer yang gagal melewati pemeriksaan kesehatan dihentikan dan kemudian dipulihkan. 
        exec:    # Anda perlu menentukan salah satu parameter exec, tcpSocket, dan httpGet.
          command:
            - sleep
            - 1s
        tcpSocket: # Anda perlu menentukan salah satu parameter exec, tcpSocket, dan httpGet.
          host: "192.168.1.109"  # (Opsional) Alamat IP host. Jika parameter ini dibiarkan kosong, nilai default, yaitu alamat IP pod, digunakan.
          port: "18081"  # Nomor port. Nilainya harus berupa string.
        httpGet:  # Anda perlu menentukan salah satu parameter exec, tcpSocket, dan httpGet.
          host: "192.168.1.109"  # (Opsional) Alamat IP host. Jika parameter ini dibiarkan kosong, nilai default, yaitu alamat IP pod, digunakan.
          port: "18081"  # Nomor port. Nilainya harus berupa string.
          path: "/health"
          scheme: "HTTP"  # Nilai valid adalah HTTP dan HTTPS.
          httpHeaders:
           - name: "color"
             value: "blue"
        initialDelaySeconds: 5
        timeoutSeconds: 11
        periodSeconds: 5
        successThreshold: 1   # Nilainya tetap 1 dan tidak dapat diubah.
        failureThreshold: 3
      readiness:   # Memeriksa status startup aplikasi. Kontainer yang gagal melewati pemeriksaan kesehatan beberapa kali dihentikan dan kemudian dimulai ulang. Kontainer yang gagal melewati pemeriksaan kesehatan tidak menerima lalu lintas dari instance Server Load Balancer (SLB). 
        exec:    # Anda perlu menentukan salah satu parameter exec, tcpSocket, dan httpGet.
          command:
            - sleep
            - 1s
        tcpSocket: # Anda perlu menentukan salah satu parameter exec, tcpSocket, dan httpGet.
          host: "192.168.1.109"  # (Opsional) Alamat IP host. Jika parameter ini dibiarkan kosong, nilai default, yaitu alamat IP pod, digunakan.
          port: "18081"  # Nomor port. Nilainya harus berupa string.
        httpGet:  # Anda perlu menentukan salah satu parameter exec, tcpSocket, dan httpGet.
          host: "192.168.1.109"  # (Opsional) Alamat IP host. Jika parameter ini dibiarkan kosong, nilai default, yaitu alamat IP pod, digunakan.
          port: "18081"  # Nomor port. Nilainya harus berupa string.
          path: "/health"
          scheme: "HTTP"  # Nilai valid adalah HTTP dan HTTPS.
          httpHeaders:
           - name: "color"
             value: "blue"
        initialDelaySeconds: 5
        timeoutSeconds: 11
        periodSeconds: 5
        successThreshold: 2
        failureThreshold: 3
      preStop:   # Hook siklus hidup yang dipicu ketika kontainer akan dihapus.
        exec:
          command:
            - /bin/bash
            - -c
            - ls /tmp
        httpGet:
          host: "192.168.1.109"  # (Opsional) Alamat IP host. Jika parameter ini dibiarkan kosong, nilai default, yaitu alamat IP pod, digunakan.
          port: "18081"  # Nomor port. Nilainya harus berupa string.
          path: "/health"
          scheme: "HTTP"  # Nilai valid adalah HTTP dan HTTPS.
          httpHeaders:
           - name: "color"
             value: "blue"
      postStart:   # Hook siklus hidup yang dipicu setelah kontainer dibuat.
        exec:
          command:
           - /bin/bash
           - -c
           - ls /tmp
        httpGet:
          host: "192.168.1.109"  # (Opsional) Alamat IP host. Jika parameter ini dibiarkan kosong, nilai default, yaitu alamat IP pod, digunakan.
          port: "18081"  # Nomor port. Nilainya harus berupa string.
          path: "/health"
          scheme: "HTTP"  # Nilai valid adalah HTTP dan HTTPS.
          httpHeaders:
           - name: "color"
             value: "blue"
      configMountDescs:   # Pengaturan sumber daya konfigurasi.
        - type: "ConfigMap"  # Nilai valid adalah ConfigMap dan Secret.
          name: "configtest"
          mountPath: "/home/admin"  # Jika Anda menentukan direktori untuk parameter ini, mountItems diperlukan untuk mengatur target mount ke file.
          mountItems:   # Mengatur target mount ke file.
            - key: "test-name"
              path: "test"
          useSubPath: true   # Jika target mount adalah file, nilai true menunjukkan untuk mempertahankan file asli, sedangkan nilai false menunjukkan untuk menimpa file asli.
      javaStartUpConfig:   # Parameter startup Java. Atur parameter berdasarkan kebutuhan bisnis Anda.
        initialHeapSize:  # Ukuran awal memori heap.
          original: 1000
          startup: "-Xms1000m"
        maxHeapSize:  # Ukuran maksimum memori heap.
          original: 1000
          startup: "-Xmx1000m"
        newSize:   # Ukuran awal generasi muda.
          original: 200
          startup: "-XX:NewSize=200m"
        maxNewSize:  # Ukuran maksimum generasi muda.
          original: 200
          startup: "-XX:MaxNewSize=200m"
        survivorRatio:  # Rasio ruang Eden terhadap ruang Survivor.
          original: 2
          startup: "-XX:SurvivorRatio=2"
        newRatio:   # Rasio generasi tua terhadap generasi muda.
          original: 8
          startup: "-XX:NewRatio=8"
        permSize:  # Ukuran generasi permanen.
          original: 512
          startup: "-XX:PermSize=512m"
        maxPermSize:  # Ukuran maksimum generasi permanen.
          original: 512
          startup: "-XX:MaxPermSize=200m"
        maxDirectMemorySize:  # Ukuran maksimum memori langsung.
          original: 100
          startup: "-XX:MaxDirectMemorySize=100m"
        threadStackSize:  # Ukuran tumpukan utas.
          original: 500
          startup: "-XX:ThreadStackSize=500"
        hsfserverPort:  # Port server HSF.
          original: 12200
          startup: "-Dhsf.server.port=12200"
        hsfserverMinPoolSize:  # Ukuran minimum kolam utas HSF.
          original: 50
          startup: "-Dhsf.server.min.poolsize=50"
        hsfserverMaxPoolSize:  # Ukuran maksimum kolam utas HSF.
          original: 720
          startup: "-Dhsf.server.max.poolsize=720"
        youngGarbageCollector:   # Kebijakan pengumpulan sampah (GC) untuk generasi muda.
          original: "UseSerialGC"  # Nilai valid adalah UseSerialGC, UseG1GC, UseParNewGC, dan UseParallelGC.
          startup: "-XX:+UseSerialGC"  # Jika parameter asli diatur ke UseG1GC, UseParNewGC, atau UseParallelGC, nilai parameter ini adalah string kosong.
        oldGarbageCollector:   # Kebijakan GC untuk generasi tua.
          original: "UseConcMarkSweepGC"  # Nilai valid adalah UseConcMarkSweepGC, UseSerialGC, UseG1GC, UseConcMarkSweepGC, UseParNewGC, UseParallelOldGC, dan UseParallelGC.
          startup: "-XX:+UseConcMarkSweepGC"  # Tentukan nilai dalam format -XX:+<kebijakan GC>.
        concGCThreads:   # Jumlah utas GC konkuren.
          original: 5
          startup: "-XX:ConcGCThreads=5"
        parallelGCThreads:   # Jumlah utas GC paralel.
          original: 5
          startup: "-XX:ParallelGCThreads=5"
        g1HeapRegionSize:    # Ukuran wilayah Garbage-First (G1).
          original: 50
          startup: "-XX:G1HeapRegionSize=50m"
        gclogFilePath:  # Direktori log GC.
          original: "/tmp/"
          startup: "-Xloggc:/tmp/"
        useGCLogFileRotation:  # Menentukan apakah akan mengaktifkan rotasi log GC.
          original: true
          startup: "-XX:+UseGCLogFileRotation"
        numberOfGCLogFiles:  # Jumlah log GC.
          original: 5
          startup: "-XX:NumberOfGCLogFiles=5"
        gclogFileSize:  # Ukuran log GC.
          original: 100
          startup: "-XX:GCLogFileSize=100m"
        heapDumpOnOutOfMemoryError:  # Menentukan apakah akan mengaktifkan dump out-of-memory (OOM).
          original: true
          startup: "-XX:+HeapDumpOnOutOfMemoryError"
        heapDumpPath: # Jalur file untuk dump OOM.
          original: "/tmp/dumpfile"
          startup: "-XX:HeapDumpPath=/tmp/dumpfile"
        customParams:  # Parameter kustom.
          original: "-Dtest=true"
          startup: "-Dtest=true"
      deployAcrossZones: "true"  # Menentukan apakah akan menerapkan aplikasi lintas zona. Kami merekomendasikan Anda mengaktifkan fitur ini. Nilainya harus berupa string Boolean.
      deployAcrossNodes: "true"  # Menentukan apakah akan menerapkan aplikasi lintas node. Kami merekomendasikan Anda mengaktifkan fitur ini. Nilainya harus berupa string Boolean.
      customTolerations:  # Pengaturan toleransi penjadwalan.
        - key: aa
          operator: Exists
          effect: NoSchedule
        - key: bb
          operator: Equal
          value: "111"
          effect: "NoExecute"
          tolerationSeconds: 111
      customAffinity: # Aturan afinitas kustom.
        nodeAffinity:  # Aturan afinitas node.
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: "beta.kubernetes.io/arch"
                operator: "Gt"
                values:
                - "11"
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
            preference:
              matchExpressions:
              - key: "beta.kubernetes.io/arch"
                operator: "Gt"
                values:
                - "11"
        podAffinity:  # Aturan afinitas aplikasi (pod).
          requiredDuringSchedulingIgnoredDuringExecution:
          - namespaces:
            - "default"
            topologyKey: "failure-domain.beta.kubernetes.io/zone"
            labelSelector:
              matchExpressions:
              - key: "beta.kubernetes.io/arch"
                operator: "In"
                values:
                - "11"
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
            podAffinityTerm:
              namespaces:
              - "default"
              topologyKey: "failure-domain.beta.kubernetes.io/region"
              labelSelector:
                matchExpressions:
                - key: "beta.kubernetes.io/arch"
                  operator: "Exists"
                  values: []
        podAntiAffinity:   # Aturan anti-afinitas aplikasi (pod).
          requiredDuringSchedulingIgnoredDuringExecution:
          - namespaces:
            - "default"
            topologyKey: "kubernetes.io/hostname"
            labelSelector:
              matchExpressions:
              - key: "beta.kubernetes.io/arch"
                operator: "In"
                values:
                - "11"
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 2
            podAffinityTerm:
              namespaces:
              - "default"
              topologyKey: "kubernetes.io/hostname"
              labelSelector:
                matchExpressions:
                - key: "beta.kubernetes.io/arch"
                  operator: "In"
                  values:
                  - "11"
                            

Skenario tipikal

Bagian ini menjelaskan beberapa skenario penyebaran tipikal beserta contoh konfigurasi terkait.
  • Skenario 1: Bangun Paket WAR atau FatJar di Lingkungan Lokal untuk Menerapkan Aplikasi
    Misalnya, Anda memiliki aplikasi yang diterapkan menggunakan paket WAR atau FatJar ke EDAS di wilayah China (Beijing), dan Anda ingin membangun paket WAR atau FatJar di lingkungan lokal untuk menerapkan ulang aplikasi. Berikut adalah deskripsi konfigurasi pengemasan dan penyebaran:
    • File Paket:
      apiVersion: V1
      kind: AppPackage
      spec:
        packageType: War                                    
    • File Penyebaran:
      apiVersion: V1
      kind: AppDeployment
      spec:
        type: kubernetes
        target:
          appId:        # ID aplikasi. Plugin menerapkan aplikasi yang diidentifikasi oleh ID yang ditentukan. Jika Anda tidak menentukan parameter ini, nilai namespaceId dan appName digunakan untuk mengidentifikasi aplikasi yang akan diterapkan. 
          namespaceId:  # (Opsional) Namespace mikroservis tempat aplikasi akan diterapkan. Jika nilai appId tidak tersedia, nilai namespaceId dan appName dapat digunakan untuk mengidentifikasi aplikasi yang akan diterapkan. 
          appName:      # (Opsional) Nama aplikasi. Jika nilai appId tidak tersedia, nilai namespaceId dan appName dapat digunakan untuk mengidentifikasi aplikasi yang akan diterapkan.
  • Skenario 2: Gunakan URL Gambar yang Ada untuk Menerapkan Aplikasi
    Misalnya, Anda memiliki aplikasi yang diterapkan menggunakan gambar di wilayah China (Beijing), dan Anda ingin menggunakan gambar yang ada (registry.cn-beijing.aliyuncs.com/test/gateway:latest) untuk menerapkan ulang aplikasi. Berikut adalah deskripsi konfigurasi pengemasan dan penyebaran:
    • File Paket:
      apiVersion: V1
      kind: AppPackage
      spec:
        packageType: Image
        imageUrl: registry.cn-beijing.aliyuncs.com/test/gateway:latest                                    
    • File Penyebaran:
      apiVersion: V1
      kind: AppDeployment
      spec:
        type: kubernetes
        target:
          appId:        # ID aplikasi. Plugin menerapkan aplikasi yang diidentifikasi oleh ID yang ditentukan. Jika Anda tidak menentukan parameter ini, nilai namespaceId dan appName digunakan untuk mengidentifikasi aplikasi yang akan diterapkan. 
          namespaceId:  # (Opsional) Namespace mikroservis tempat aplikasi akan diterapkan. Jika nilai appId tidak tersedia, nilai namespaceId dan appName dapat digunakan untuk mengidentifikasi aplikasi yang akan diterapkan. 
          appName:      # (Opsional) Nama aplikasi. Jika nilai appId tidak tersedia, nilai namespaceId dan appName dapat digunakan untuk mengidentifikasi aplikasi yang akan diterapkan.
  • Skenario 3: Bangun Gambar di Lingkungan Lokal dan Unggah Gambar ke Repositori untuk Menerapkan Aplikasi
    Misalnya, Anda memiliki aplikasi yang diterapkan menggunakan gambar di wilayah China (Beijing), dan Anda ingin mengompilasi serta membangun gambar di lingkungan lokal lalu mengunggah gambar ke repositori gambar Alibaba Cloud untuk menerapkan ulang aplikasi. Berikut adalah deskripsi konfigurasi pengemasan dan penyebaran:
    • File Paket:
      apiVersion: V1
      kind: AppPackage
      spec:
        packageType: Image
        build:
          docker:
             dockerfile: Dockerfile # File Docker. 
             imageRepoAddress:      # Alamat repositori gambar. 
             imageTag:              # Tag gambar. 
             imageRepoUser:         # Nama pengguna yang digunakan untuk mengakses repositori gambar. 
             imageRepoPassword:     # Kata sandi yang digunakan untuk mengakses repositori gambar.
    • File Penyebaran:
      apiVersion: V1
      kind: AppDeployment
      spec:
        type: kubernetes
        target:
          appId:        # ID aplikasi. Plugin menerapkan aplikasi yang diidentifikasi oleh ID yang ditentukan. Jika Anda tidak menentukan parameter ini, nilai namespaceId dan appName digunakan untuk mengidentifikasi aplikasi yang akan diterapkan. 
          namespaceId:  # (Opsional) Namespace mikroservis tempat aplikasi akan diterapkan. Jika nilai appId tidak tersedia, nilai namespaceId dan appName dapat digunakan untuk mengidentifikasi aplikasi yang akan diterapkan. 
          appName:      # (Opsional) Nama aplikasi. Jika nilai appId tidak tersedia, nilai namespaceId dan appName dapat digunakan untuk mengidentifikasi aplikasi yang akan diterapkan.