All Products
Search
Document Center

Container Service for Kubernetes:Buat Deployment tanpa status

Last Updated:Aug 26, 2026

Deployment merupakan jenis workload Kubernetes yang umum digunakan untuk mengelola aplikasi tanpa status. Deployment memastikan jumlah replika Pod tertentu selalu berjalan di kluster sesuai dengan kondisi yang telah Anda tentukan. Topik ini menjelaskan cara membuat aplikasi tanpa status di kluster Container Service for Kubernetes (ACK) menggunakan Konsol ACK dan kubectl.

Persiapan awal

Sebelum membuat workload, baca Workload untuk memahami konsep dasar dan pertimbangan penting. Topik ini terbagi menjadi bagian-bagian berikut:

  • Buat Deployment: Menyediakan panduan cepat tentang cara membuat Deployment menggunakan konsol dan kubectl.

  • Parameter konfigurasi: Menjelaskan parameter konfigurasi konsol dan menyediakan contoh file YAML untuk kubectl.

Penting

Contoh dalam topik ini menggunakan gambar publik. Untuk menarik gambar publik, kluster atau node Anda harus memiliki akses internet publik. Anda dapat mengaktifkannya dengan salah satu cara berikut:

  • Aktifkan akses jaringan publik untuk kluster (Direkomendasikan): Buat gerbang NAT untuk VPC tempat kluster ditempatkan. Ini memberikan akses internet publik untuk semua resource di kluster.

  • Tetapkan alamat IP publik statis ke node: Node dengan alamat IP publik dapat menarik gambar publik. Namun, Anda harus menetapkan alamat IP publik ke setiap node tempat Anda men-deploy workload.

Buat Deployment

Gunakan konsol

Penting

Langkah-langkah berikut menyediakan proses sederhana untuk membuat workload. Ikuti langkah-langkah ini untuk segera men-deploy dan memverifikasi aplikasi Anda. Setelah memahami operasi dasar, lihat Parameter konfigurasi untuk menyesuaikan workload Anda.

  1. Configure basic application information

    1. Masuk ke Konsol ACK dan klik Clusters di panel navigasi sebelah kiri. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, pilih Workloads > Deployments. Di halaman Deployments, klik Create from Image.

      image

    2. Di halaman Basic Information, konfigurasikan pengaturan dasar untuk aplikasi. Lalu, klik Next.

      image

  2. Configure the container

    Di bagian Container Configuration, konfigurasikan Image Name dan Port. Pengaturan lainnya bersifat opsional dan Anda dapat mempertahankan nilai default. Lalu, klik Next untuk membuka halaman wizard Advanced Settings. Alamat gambar adalah sebagai berikut.

    Penting

    Untuk menarik gambar ini, Anda harus mengaktifkan akses internet publik untuk kluster Anda. Jika Anda mempertahankan opsi Configure SNAT for VPC saat membuat kluster, akses internet publik sudah diaktifkan. Jika tidak, lihat Aktifkan akses jaringan publik untuk kluster.

    anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

    image

  3. Configure advanced settings

    Di halaman Advanced, konfigurasikan pengaturan kontrol akses, penskalaan, dan penjadwalan. Di bagian Access Control, konfigurasikan cara mengekspos Pod backend lalu klik OK. Kemudian, klik Create di bagian bawah halaman.

    Penting

    Langkah ini membuat Service bertipe LoadBalancer untuk mengekspos workload. Instance Server Load Balancer (SLB) terkait akan dikenai biaya. Untuk informasi lebih lanjut, lihat Pay-as-you-go. Jika Anda tidak lagi memerlukan instance SLB, segera lepas untuk menghindari biaya yang tidak perlu.

    image

  4. View the application

    Setelah aplikasi dibuat, halaman Complete muncul. Di panel Creation Task Submitted, klik View Details. Klik tab Access Method, temukan Service yang baru dibuat (nginx-test-svc), lalu klik tautan di kolom External Endpoint untuk mengakses halaman selamat datang NGINX.image

    image

    Anda dapat View, Edit, atau Redeploy workload yang telah dibuat.image

Gunakan kubectl

Penting

Sebelum membuat workload, hubungkan ke kluster ACK Anda menggunakan kubectl. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk menghubungkan ke kluster.

  1. Salin konfigurasi YAML berikut dan simpan ke deployment.yaml. Konfigurasi ini mendefinisikan Deployment dan Service bertipe LoadBalancer untuk akses eksternal.

    apiVersion: apps/v1
    kind: Deployment    # Jenis workload.
    metadata:
      name: nginx-test
      namespace: default  # Namespace. Ubah sesuai kebutuhan Anda.
      labels:
        app: nginx
    spec:
      replicas: 2  # Jumlah replika Pod.
      selector:
        matchLabels:
          app: nginx
      template: # Template Pod.
        metadata:
          labels: # Label Pod.
            app: nginx 
        spec:
          containers:
          - name: nginx  # Nama kontainer.
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6  # Gambar NGINX dan versinya.
            ports:
            - containerPort: 80  # Port yang diekspos oleh kontainer.
              protocol: TCP  # Protokol. Anda dapat mengaturnya ke TCP atau UDP. Nilai default: TCP.
    ---
    # Definisi Service.
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-test-svc
      namespace: default  # Namespace. Ubah sesuai kebutuhan Anda.
      labels:
        app: nginx
    spec:
      selector:
        app: nginx  # Memilih Pod dengan label tertentu.
      ports:
        - port: 80           # Port yang diekspos oleh Service di dalam kluster.
          targetPort: 80     # Port kontainer yang menerima trafik.
          protocol: TCP      # Protokol. Nilai default: TCP.
      type: LoadBalancer     # Jenis Service. Nilai default: ClusterIP (hanya untuk akses internal).
  2. Jalankan perintah berikut untuk membuat Deployment dan Service:

    kubectl apply -f deployment.yaml

    Output yang diharapkan:

    deployment.apps/nginx-test created
    service/nginx-test-svc created
  3. Jalankan perintah berikut untuk menanyakan alamat IP publik Service:

    kubectl get svc

    Output yang diharapkan:

    NAME            TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)        AGE
    kubernetes      ClusterIP      172.16.**.***    <none>          443/TCP        4h47m
    nginx-test-svc  LoadBalancer   172.16.**.***    106.14.**.***   80:31130/TCP   1h10m
  4. Masukkan alamat IP publik Nginx (106.14.**.***) di browser untuk mengakses kontainer Nginx dari workload tersebut.

    image

Parameter konfigurasi

Parameter konsol

Informasi dasar

image

Parameter

Deskripsi

Name

Nama workload. Nama Pod diturunkan dari nama ini.

Namespace

Namespace yang berisi workload.

Replicas

Jumlah replika Pod. Nilai default: 2.

Type

Jenis workload. Untuk informasi lebih lanjut tentang cara memilih jenis workload, lihat Buat workload.

Label

Label beban kerja.

Annotations

Anotasi workload.

Synchronize Timezone

Menentukan apakah kontainer menggunakan zona waktu yang sama dengan node host-nya.

Konfigurasi kontainer

Umum

image

Parameter

Deskripsi

Image Name

  • Select images

    Klik Select images untuk memilih gambar. Anda dapat memilih salah satu jenis gambar berikut:

    • Container Registry Enterprise Edition: Pilih gambar Edisi Perusahaan yang di-host di Alibaba Cloud Container Registry (ACR). Anda harus menentukan wilayah dan instance ACR tempat gambar tersebut berada. Untuk informasi lebih lanjut tentang ACR, lihat Apa itu ACR?.

    • Container Registry Personal Edition: Pilih gambar Edisi Pribadi yang di-host di ACR. Anda harus menentukan wilayah dan instance ACR tempat gambar tersebut berada.

    • Artifact Center: Gambar umum yang disediakan oleh Alibaba Cloud dan Komunitas OpenAnolis. Untuk menggunakan gambar dari Artifact Center, Anda harus mengaktifkan akses internet publik untuk kluster. Untuk informasi lebih lanjut, lihat Artifact Center.

    Saat menggunakan gambar dari sumber lain, Anda dapat langsung memasukkan alamat gambar dalam format domainname/namespace/imagename:tag. Jika Anda tidak menentukan domainname, misalnya dengan memasukkan nginx:1.7.9, gambar akan ditarik dari Docker Hub.

  • Select image pull policy

    ACK mendukung kebijakan tarik gambar berikut (imagePullPolicy):

    • IfNotPresent (Default): Jika gambar sudah ada di node, versi lokal digunakan. Jika tidak, gambar ditarik dari repositori.

    • Always: Gambar selalu ditarik dari repositori setiap kali Pod dibuat.

    • Never: Hanya gambar lokal yang digunakan. Jika gambar tidak ada di node, Pod gagal dimulai.

  • Set image pull Secret

    Saat menggunakan gambar dari ACR atau repositori pihak ketiga, Anda mungkin perlu mengonfigurasi Secret untuk menarik gambar.

    Catatan

    Untuk instance ACR Edisi Perusahaan, Anda dapat menggunakan komponen bebas kata sandi untuk menarik gambar. Untuk informasi lebih lanjut, lihat Instal dan gunakan komponen bebas kata sandi untuk kluster tidak dikelola.

Resource limit

resources.limits kontainer. Untuk informasi lebih lanjut, lihat Requests and Limits.

Resource requests

resources.requests sumber daya kontainer. Untuk informasi lebih lanjut, lihat Requests and Limits.

Container start parameter

  • stdin: Menunjukkan bahwa input standar diaktifkan untuk kontainer.

  • tty: Mengalokasikan terminal virtual untuk kontainer sehingga Anda dapat mengirim sinyal ke kontainer.

Kedua opsi ini biasanya digunakan bersama untuk melampirkan terminal (tty) ke input standar kontainer (stdin). Misalnya, program interaktif menerima input standar dari pengguna dan menampilkannya di terminal.

Privileged container

  • Jika Anda memilih kotak centang ini, privileged diatur ke true untuk mengaktifkan mode istimewa.

  • Jika Anda tidak memilih kotak centang ini, privileged diatur ke false untuk menonaktifkan mode istimewa.

Mode istimewa memberikan akses hampir setara dengan proses yang berjalan di sistem operasi host kepada kontainer. Ini termasuk akses ke perangkat keras dan kemampuan untuk memasang sistem file.

Init containers

Pilih opsi ini untuk membuat init container.

Init container dijalankan dan diselesaikan sebelum kontainer aplikasi utama dimulai. Init container dapat digunakan untuk menunda startup kontainer aplikasi hingga prasyarat tertentu terpenuhi, seperti menunggu layanan dependensi tersedia. Init container juga dapat berisi alat utilitas atau skrip setup yang tidak ada di gambar aplikasi untuk menginisialisasi lingkungan runtime, seperti mengatur parameter kernel atau menghasilkan file konfigurasi. Untuk informasi lebih lanjut, lihat Init Containers dalam dokumentasi Kubernetes.

Port

image

Parameter

Deskripsi

Name

Nama port kontainer. Ini hanya untuk identifikasi dan tidak berdampak fungsional.

Container Port

Port yang diekspos oleh kontainer. Nilainya harus bilangan bulat antara 1 hingga 65535. Kontainer harus mengekspos port agar dapat diakses dari luar Pod dan memungkinkan komunikasi dengan kontainer lain dalam Pod yang sama.

Semua kontainer dalam satu Pod berbagi namespace jaringan yang sama, sehingga nomor port harus unik dalam satu Pod.

Protocol

Protokol Lapisan 4 yang digunakan oleh port kontainer. Nilai yang valid: TCP dan UDP.

Variabel lingkungan

image

Parameter

Deskripsi

Type

Metode yang digunakan untuk mengatur variabel lingkungan. Jenis berikut didukung:

  • Custom

    Anda dapat menggunakan env untuk langsung mengkodekan variabel lingkungan dalam workload.

  • ConfigMaps

    Gunakan envFrom untuk mengambil data konfigurasi non-sensitif dari ConfigMap.

  • Secrets

    Anda dapat menggunakan envFrom untuk mengambil informasi sensitif yang disimpan dalam ConfigMap, seperti password dan API key.

  • Value/ValueFrom

    Gunakan value/valueFrom untuk mengambil variabel lingkungan lain atau nilai yang telah ditentukan.

  • ResourceFieldRef

    Gunakan resourceFieldRef untuk mendapatkan informasi sumber daya tentang node tempat Pod berjalan.

Anda dapat mereferensikan semua pasangan kunci-nilai dari ConfigMap atau Secret. Misalnya, untuk mereferensikan semua data dari Secret, pilih jenis Secrets lalu pilih Secret target tanpa menentukan kunci.环境变量

YAML yang sesuai juga mereferensikan seluruh Secret.yaml

Untuk memilih referensi sumber daya, Anda dapat menggunakan parameter resourceFieldRef. Parameter ini mereferensikan nilai sumber daya yang dideklarasikan untuk kontainer dalam spesifikasi Pod dan meneruskan nilai-nilai tersebut ke kontainer sebagai variabel lingkungan. YAML yang sesuai adalah sebagai berikut:

image

Variable Key

Nama variabel lingkungan di dalam Pod.

Value/ValueFrom

Nilai variabel lingkungan atau referensi ke nilai dari sumber lain.

Pemeriksaan kesehatan

image

Parameter

Deskripsi

Liveness probe: Pemeriksaan kelangsungan hidup memeriksa apakah kontainer sedang berjalan. Jika pemeriksaan gagal beberapa kali, kubelet akan me-restart kontainer. Ini dapat membantu mengatasi masalah seperti deadlock di mana kontainer berjalan tetapi tidak dapat melanjutkan proses.

Jenis permintaan: Permintaan HTTP

Mengirim permintaan HTTP ke kontainer untuk memeriksa kesehatannya secara berkala.

  • Protocol: HTTP atau HTTPS.

  • Path: Jalur yang diakses pada server HTTP.

  • Port: Port atau nama port yang diekspos oleh kontainer. Nomor port harus bilangan bulat antara 1 hingga 65535.

  • HTTP Headers: Header kustom yang diatur dalam permintaan HTTP. Anda dapat menentukan beberapa header dengan kunci yang sama.

  • Initial Delay (detik): Jumlah detik yang ditunggu setelah kontainer dimulai sebelum pemeriksaan pertama dilakukan. Ini sesuai dengan parameter initialDelaySeconds. Nilai default adalah 3 detik.

  • Probe interval (detik): Interval melakukan pemeriksaan, yang ditentukan oleh parameter periodSeconds. Nilai default adalah 10 detik, dan nilai minimum adalah 1 detik.

  • Timeout (detik): Periode timeout untuk pemeriksaan, yang ditentukan oleh parameter timeoutSeconds. Nilai default adalah 1 detik dan nilai minimum adalah 1 detik.

  • Healthy threshold: Jumlah minimum pemeriksaan sukses berturut-turut yang diperlukan untuk menandai kontainer sebagai sehat setelah kegagalan. Nilai default: 1. Nilai minimum: 1. Untuk liveness probe, nilai ini harus 1.

  • Unhealthy threshold: Jumlah minimum pemeriksaan gagal berturut-turut yang diperlukan untuk menandai kontainer sebagai tidak sehat. Nilai default: 3. Nilai minimum: 1.

Jenis permintaan: Koneksi TCP

kubelet mencoba membuka soket TCP pada port yang ditentukan. Jika koneksi berhasil, kontainer dianggap sehat. Jika tidak, dianggap gagal.

  • Port: Port atau nama port yang diekspos oleh kontainer. Nomor port harus bilangan bulat antara 1 hingga 65535.

  • Initial delay (detik): Nilai parameter initialDelaySeconds. Ini adalah jumlah detik yang ditunggu setelah kontainer dimulai sebelum pemeriksaan pertama dilakukan. Nilai default adalah 15 detik.

  • Probe frequency (detik): Interval melakukan pemeriksaan, yang ditentukan oleh parameter periodSeconds. Nilai default adalah 10 detik dan nilai minimum adalah 1 detik.

  • Timeout (detik): Periode timeout untuk pemeriksaan. Ini sesuai dengan parameter timeoutSeconds. Nilai default adalah 1 detik dan nilai minimum adalah 1 detik.

  • Healthy threshold: Jumlah minimum pemeriksaan sukses berturut-turut yang diperlukan untuk menandai kontainer sebagai sehat setelah kegagalan. Nilai default: 1. Nilai minimum: 1. Untuk liveness probe, nilai ini harus 1.

  • Unhealthy threshold: Jumlah minimum pemeriksaan gagal berturut-turut yang diperlukan untuk menandai kontainer sebagai tidak sehat. Nilai default: 3. Nilai minimum: 1.

Jenis permintaan: Baris perintah

Menjalankan perintah di dalam kontainer untuk menentukan status kesehatannya.

  • Command: Perintah yang digunakan untuk memeriksa kesehatan kontainer.

  • Initial delay (detik): Nilai untuk initialDelaySeconds, yaitu jumlah detik yang ditunggu setelah kontainer dimulai sebelum pemeriksaan pertama dilakukan. Nilai default adalah 5 detik.

  • Probe Interval (detik): Interval waktu untuk melakukan pemeriksaan. Ini sesuai dengan parameter periodSeconds. Nilai default adalah 10 detik dan nilai minimum adalah 1 detik.

  • Timeout (detik): Parameter timeoutSeconds, yang menentukan periode timeout untuk pemeriksaan. Nilai default adalah 1 detik. Nilai minimum adalah 1 detik.

  • Healthy threshold: Jumlah minimum pemeriksaan sukses berturut-turut yang diperlukan untuk menandai kontainer sebagai sehat setelah kegagalan. Nilai default: 1. Nilai minimum: 1. Untuk liveness probe, nilai ini harus 1.

  • Unhealthy threshold: Jumlah minimum pemeriksaan gagal berturut-turut yang diperlukan untuk menandai kontainer sebagai tidak sehat. Nilai default: 3. Nilai minimum: 1.

Readiness probe: Pemeriksaan kesiapan memeriksa apakah kontainer siap menerima trafik. Pod ditambahkan sebagai backend ke Service hanya setelah pemeriksaan kesiapannya berhasil.

Startup Probes: Pemeriksaan ini hanya dijalankan saat kontainer dimulai untuk memeriksa apakah telah berhasil dimulai. Liveness Probes dan Readiness Probes hanya dijalankan setelah pemeriksaan startup berhasil.

Catatan

Startup probes hanya didukung di kluster Kubernetes yang menjalankan versi 1.18 atau lebih baru.

Siklus hidup

image

Parameter

Deskripsi

Start

Mengatur perintah dan argumen start untuk kontainer. Ini mendefinisikan operasi yang dilakukan saat kontainer dimulai dan digunakan untuk menginisialisasi layanan aplikasi. Ini cocok untuk penyebaran aplikasi yang memerlukan variabel lingkungan, titik pemasangan, atau pemetaan port tertentu.

Post Start

Mengatur perintah yang dijalankan segera setelah kontainer dibuat. Ini berguna untuk melakukan tugas seperti menginisialisasi konfigurasi atau menjalankan skrip sebelum proses utama dimulai.

Pre Stop

Mengatur perintah yang dijalankan segera sebelum kontainer dihentikan. Ini berguna untuk mematikan proses aplikasi secara elegan guna memastikan konsistensi data dan mencegah kehilangan data atau anomali layanan.

Anda dapat mengonfigurasi penanganan start, post-start, dan pre-stop untuk siklus hidup kontainer. Untuk informasi lebih lanjut, lihat Attach Handlers to Container Lifecycle Events dalam dokumentasi Kubernetes.

Volume

Parameter

Deskripsi

Add Local Storage

Memasang volume penyimpanan lokal dari node host ke Pod. Data dalam volume penyimpanan lokal disimpan di node dan akan hilang jika node dimatikan. Penyimpanan lokal juga mendukung pemasangan Secrets, ConfigMaps, dan jenis volume sementara lainnya. Sebelum menggunakan volume penyimpanan, baca Penyimpanan untuk memahami dasar-dasar penyimpanan di ACK.

Add PVC (PersistentVolumeClaim)

Memasang volume penyimpanan cloud ke Pod untuk menyimpan data penting secara persisten. Volume penyimpanan cloud adalah layanan penyimpanan jarak jauh yang independen dari node pekerja dan tidak terpengaruh oleh perubahan node. ACK mendukung berbagai layanan penyimpanan Alibaba Cloud, seperti cloud disk, Apsara File Storage NAS, dan Object Storage Service (OSS). Sebelum menggunakan volume penyimpanan, baca Penyimpanan untuk memahami dasar-dasar penyimpanan di ACK.

Log

Collection configuration

  • Log Service: Logstore dibuat di proyek Log Service yang terkait dengan kluster untuk menyimpan log yang dikumpulkan. Sebelum menggunakan log, baca Manajemen Log untuk memahami dasar-dasar logging di ACK.

  • Jalur log di dalam kontainer. Atur ke Stdout untuk mengumpulkan log output standar kontainer.

Custom Tag

Setelah Anda mengatur tag kustom, tag tersebut dikumpulkan bersama output log kontainer. Ini membantu analisis, seperti statistik dan penyaringan log.

Konfigurasi lanjutan

Kartu konfigurasi

Parameter

Deskripsi

Access Control

Services

Service menyediakan titik akhir Lapisan 4 (lapisan transport) yang stabil dan terpadu untuk sekelompok Pod. Ini adalah resource yang wajib untuk mengekspos workload. Service mendukung berbagai jenis, termasuk Cluster IP, Node Port, dan Load Balancer. Sebelum mengonfigurasi Service, lihat Manajemen Service untuk memahami konsep dasarnya.

Ingresses

Ingress menyediakan titik masuk Lapisan 7 (lapisan aplikasi) untuk beberapa Service dalam kluster dan meneruskan permintaan ke Service yang berbeda berdasarkan pencocokan nama domain. Sebelum menggunakan Ingress, Anda harus menginstal controller Ingress. ACK menyediakan beberapa opsi untuk berbagai skenario. Untuk informasi lebih lanjut, lihat Perbandingan NGINX Ingress Controller, ALB Ingress Controller, dan gerbang MSE Ingress.

Scaling

Horizontal Pod Autoscaler (HPA)

Horizontal Pod Autoscaler (HPA) secara otomatis menskala jumlah Pod berdasarkan metrik kinerja kontainer. Ini membantu Anda menyesuaikan total sumber daya yang digunakan oleh workload Anda sebagai respons terhadap fluktuasi beban bisnis, menskala keluar untuk menangani beban tinggi dan menskala masuk untuk menghemat sumber daya selama beban rendah. Untuk informasi lebih lanjut, lihat Gunakan HorizontalPodAutoscaler untuk menskala Pod secara otomatis.

Cron Horizontal Pod Autoscaler (CronHPA)

Cron Horizontal Pod Autoscaler (CronHPA) menskala workload pada waktu yang dijadwalkan. Ini cocok untuk skenario dengan perubahan beban bisnis yang dapat diprediksi dan bersifat siklus, seperti puncak trafik di platform media sosial setelah makan siang dan makan malam. Untuk informasi lebih lanjut, lihat Gunakan CronHPA untuk menskala Pod secara otomatis.

Scheduling

Upgrade strategy

Strategi yang digunakan untuk mengganti Pod lama dengan yang baru saat konfigurasi Pod berubah.

  • rolling update: Mengganti Pod satu per satu atau dalam batch. Penggantian berikutnya dimulai hanya setelah Pod baru berjalan dengan sukses. Metode ini memastikan kelangsungan layanan, tetapi klien mungkin mengakses versi Pod yang berbeda secara bersamaan selama pembaruan.

  • recreate: Menghentikan semua Pod yang ada sekaligus sebelum membuat yang baru. Ini dapat menyebabkan gangguan layanan tetapi memastikan semua Pod menjalankan versi yang sama setelah pembaruan.

  • Node affinity

  • Pod affinity

  • Pod anti-affinity

  • Tolerations

Affinity, anti-affinity, dan toleransi digunakan untuk mengontrol cara Pod dijadwalkan ke node. Operasi ini kompleks dan memerlukan perencanaan sebelumnya. Untuk informasi lebih lanjut, lihat Penjadwalan.

Labels and annotations

Pod labels

Menambahkan label ke setiap Pod yang termasuk dalam workload. Di kluster, resource seperti workload dan Service menggunakan label untuk mencocokkan dengan Pod. Secara default, ACK menambahkan label dalam format app:(nama aplikasi) ke Pod.

Pod annotations

Menambahkan anotasi ke setiap Pod dalam workload ini. Beberapa fitur di ACK menggunakan anotasi, yang dapat Anda tambahkan atau ubah sesuai kebutuhan saat menggunakan fitur tersebut.

Contoh YAML workload

apiVersion: apps/v1
kind: Deployment    # Jenis workload.
metadata:
  name: nginx-test
  namespace: default  # Namespace. Ubah sesuai kebutuhan Anda.
  labels:
    app: nginx
spec:
  replicas: 2  # Jumlah replika Pod.
  selector:
    matchLabels:
      app: nginx
  template: # Template Pod.
    metadata:
      labels: # Label Pod.
        app: nginx 
      annotations: # Anotasi Pod.
        description: "Ini adalah penyebaran aplikasi"
    spec:
      containers:
      - name: nginx  # Nama kontainer.
        image: nginx:1.7.9  # Gambar NGINX dan versinya.
        ports:
        - name: nginx  # Nama port.
          containerPort: 80  # Port yang diekspos oleh kontainer.
          protocol: TCP  # Protokol. Anda dapat mengaturnya ke TCP atau UDP. Nilai default: TCP.
        command: ["/bin/sh"]  # Titik masuk kontainer.
        args: [ "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY) && exec nginx -g 'daemon off;'"] # Mencetak variabel dan menjalankan NGINX.
        stdin: true  # Mengaktifkan input standar.
        tty: true    # Mengalokasikan pseudo-TTY.
        env:
          - name: SPECIAL_LEVEL_KEY
            valueFrom:
              configMapKeyRef:
                name: special-config  # Nama ConfigMap.
                key: SPECIAL_LEVEL    # Kunci di ConfigMap.
        securityContext:
          privileged: true  # Mengaktifkan mode istimewa jika diatur ke true. Nilai default: false.
        resources:
          limits:
            cpu: "500m"               # Jumlah maksimum CPU, 500 millicore.
            memory: "256Mi"           # Jumlah maksimum memori, 256 MiB.
            ephemeral-storage: "1Gi"  # Jumlah maksimum penyimpanan sementara, 1 GiB.
          requests:
            cpu: "200m"               # Jumlah minimum CPU yang diminta, 200 millicore.
            memory: "128Mi"           # Jumlah minimum memori yang diminta, 128 MiB.
            ephemeral-storage: "500Mi" # Jumlah minimum penyimpanan sementara yang diminta, 500 MiB.
        livenessProbe:  # Konfigurasi pemeriksaan kelangsungan hidup.
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:  # Konfigurasi pemeriksaan kesiapan.
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 5
          periodSeconds: 10
        volumeMounts:
        - name: tz-config
          mountPath: /etc/localtime
          readOnly: true
      volumes:
      - name: tz-config
        hostPath:
          path: /etc/localtime  # Memasang file /etc/localtime dari host ke jalur yang sama di kontainer.
---
# Definisi Service.
apiVersion: v1
kind: Service
metadata:
  name: nginx-test-svc
  namespace: default  # Namespace. Ubah sesuai kebutuhan Anda.
  labels:
    app: nginx
spec:
  selector:
    app: nginx  # Memilih Pod dengan label tertentu.
  ports:
    - port: 80           # Port yang diekspos oleh Service di dalam kluster.
      targetPort: 80     # Port kontainer yang menerima trafik.
      protocol: TCP      # Protokol. Nilai default: TCP.
  type: ClusterIP        # Jenis Service. Nilai default: ClusterIP (hanya untuk akses internal).
---
# Definisi Ingress.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  namespace: default  # Namespace. Ubah sesuai kebutuhan Anda.
  annotations:
    kubernetes.io/ingress.class: "nginx"  # Menentukan controller Ingress.
    # Jika Anda menggunakan controller Ingress SLB Alibaba Cloud, Anda dapat menambahkan anotasi berikut:
    # service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "lb-xxxxxxxxxx"
    # service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.spec.s1.small"
spec:
  rules:
    - host: foo.bar.com  # Ganti dengan nama domain Anda.
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: nginx-test-svc # Nama Service backend.
                port:
                  number: 80         # Port Service backend.
  tls:  # Opsional. Digunakan untuk mengaktifkan HTTPS.
    - hosts:
        - foo.bar.com  # Ganti dengan nama domain Anda.
      secretName: tls-secret  # Nama Secret yang berisi sertifikat TLS.

Referensi