Topik ini menjelaskan cara menggunakan tool saectl dan perintah-perintah umumnya untuk membantu Anda memulai dengan cepat.
Prasyarat
Tool saectl telah diinstal dan dikonfigurasi dengan ID AccessKey, Rahasia AccessKey, serta wilayah penerapan aplikasi. Untuk informasi selengkapnya, lihat Instal dan konfigurasikan tool saectl.
Konversi file YAML Kubernetes ke file YAML SAE
Untuk memigrasikan aplikasi yang diterapkan di Kubernetes ke SAE, ikuti langkah-langkah berikut:
Jalankan perintah berikut untuk mengonversi file YAML Kubernetes yang ada menjadi file YAML SAE. File YAML SAE mematuhi spesifikasi SAE, yang berbeda dari spesifikasi Kubernetes.
saectl convert -f <k8s-compliant-file.yaml> -o <sae-compliant-file.yaml> # <k8s-compliant-file.yaml>: Nama file YAML Kubernetes yang ada. # <sae-compliant-file.yaml>: Nama file YAML SAE yang akan dihasilkan.Jalankan perintah berikut untuk menerapkan aplikasi ke SAE berdasarkan file YAML SAE tersebut.
saectl apply -f <sae-compliant-file.yaml> # <sae-compliant-file.yaml>: Nama file YAML SAE yang dihasilkan.Jika terjadi error, ubah secara manual file YAML SAE berdasarkan pesan error tersebut. Kemudian, kembali ke langkah sebelumnya dan jalankan perintah lagi. Error biasanya termasuk dalam salah satu kategori berikut:
Beberapa field yang didukung dalam file YAML Kubernetes tidak didukung atau memiliki persyaratan format tertentu dalam file YAML SAE. Setelah konversi, Anda harus menghapus atau mengganti field-field tersebut secara manual. Untuk informasi lebih lanjut tentang field yang didukung dan persyaratan format dalam file YAML SAE, lihat topik lain dalam direktori ini.
Beberapa field yang wajib ada dalam file YAML SAE mungkin tidak tersedia dalam file YAML Kubernetes. Setelah konversi, placeholder dalam format
${parameter_name}akan meminta Anda menambahkan field tersebut. Misalnya, Anda hanya perlu mengganti${vpc-id}dengan nilai aktualnya. Dalam contoh ini, Anda harus mengaitkan VPC saat mendefinisikan namespace di SAE. Karena file YAML Kubernetes asli tidak menyediakan parameter${vpc-id}, Anda harus menambahkannya secara manual.apiVersion: v1 kind: Namespace metadata: annotations: sae.aliyun.com/vpc-id: ${vpc-id} creationTimestamp: null labels: kubernetes.io/metadata.name: default name: nstest spec: {} status: {}
Jika file YAML Kubernetes mendefinisikan beberapa resource, Anda dapat mendefinisikannya dalam satu file yang sama. Gunakan pemisah standar Kubernetes --- untuk memisahkan resource tersebut. Tool saectl dapat mengonversinya ke file YAML SAE secara batch. Contohnya:
apiVersion: apps/v1
kind: Deployment
# ... Deployment Definition ...
---
apiVersion: v1
kind: ConfigMap
# ... ConfigMap Definition ...
Namun, perhatikan bahwa pembuatan resource-resource tersebut tidak boleh bergantung pada urutan eksekusi tertentu.
Misalnya, jika deployment dan service yang bergantung pada deployment tersebut didefinisikan dalam satu file YAML SAE yang sama, akan terjadi error saat file tersebut dijalankan untuk membuat kedua resource secara bersamaan. Hal ini karena service hanya dapat dibuat setelah deployment berhasil dibuat.
Anda harus mendefinisikan deployment dan service tersebut dalam file YAML SAE yang terpisah. Pertama, buat deployment tersebut. Setelah deployment berhasil dibuat, barulah buat service-nya.
Contoh - Terapkan Nginx menggunakan saectl
Konversi file YAML docker-compose ke file YAML SAE
Untuk memigrasikan aplikasi yang diterapkan menggunakan Docker Compose ke SAE, ikuti langkah-langkah berikut:
Manage namespaces
Tool saectl mendukung pembuatan, penampilan, dan penghapusan namespace. Tool ini tidak mendukung pembaruan namespace.
Buat namespace
Buat file bernama
namespace.yaml. Kode contoh berikut menunjukkan isi file tersebut, yang mencakup konfigurasi namespace.apiVersion: v1 kind: Namespace metadata: annotations: sae.aliyun.com/vpc-id: ${vpc-id} # Ganti ${vpc-id} dengan ID VPC yang akan dikaitkan dengan namespace. Formatnya adalah vpc-xxxxxxxxxxxxxxxxxxxxx. name: ${namespace} # Ganti ${namespace} dengan nama namespace. spec: {}Di direktori tempat file
namespace.yamlberada, jalankan perintah berikut untuk membuat namespace tersebut.saectl apply -f namespace.yaml
Lihat namespace
Jalankan perintah berikut untuk melihat namespace yang ada di wilayah penerapan aplikasi yang ditentukan.
saectl get nsBerikut ini contoh output-nya:
NAME STATUS REGION
default Active cn-beijing
testns Active cn-beijingTabel berikut menjelaskan field-field tersebut.
Field | Description |
NAME | Nama namespace. `default` menunjukkan namespace default. |
STATUS | Status namespace. `Active` menunjukkan bahwa namespace tersedia. |
REGION | Wilayah tempat namespace berada. |
Delete a namespace
Jalankan perintah berikut untuk menghapus namespace tertentu.
saectl delete ns ${namespace}
# ${namespace} adalah nama namespace.Manage applications
Tool saectl mendukung pembuatan, penampilan, pembaruan, dan penghapusan aplikasi.
Buat aplikasi
Buat file bernama
deployment.yaml. Kode contoh berikut menunjukkan isi file tersebut, yang mencakup konfigurasi aplikasi.apiVersion: apps/v1 kind: Deployment metadata: name: ${deployment-name} # Ganti ${deployment-name} dengan nama aplikasi. spec: replicas: 2 # Jumlah instans aplikasi. selector: matchLabels: sae.aliyun.com/app-name: ${deployment-name} # Ganti ${deployment-name} dengan nama aplikasi. template: metadata: labels: sae.aliyun.com/app-name: ${deployment-name} # Ganti ${deployment-name} dengan nama aplikasi. spec: containers: - name: main # Tetapkan nama kontainer sebagai main untuk menghindari konflik. image: registry.openanolis.cn/openanolis/nginx:1.14.1-8.6 # Contoh ini menggunakan image Nginx.Di direktori tempat file
deployment.yamlberada, jalankan perintah berikut untuk membuat aplikasi di namespace default.saectl apply -f deployment.yamlJalankan perintah berikut untuk melihat informasi tentang aplikasi yang telah dibuat. Jika nilai field STATE pada output bernilai RUNNING, aplikasi sedang berjalan.
saectl get deployment ${deployment-name} # ${deployment-name} adalah nama aplikasi.Jalankan perintah berikut untuk melihat informasi instans dari aplikasi yang telah dibuat.
saectl get pods -l sae.aliyun.com/app-name=${deployment-name} # ${deployment-name} adalah nama aplikasi.
Lihat daftar aplikasi
Jalankan perintah berikut untuk melihat aplikasi yang ada di namespace tertentu.
saectl get deployment -n ${namespace}
# ${namespace} adalah nama namespace. Jika parameter -n tidak digunakan untuk menentukan namespace, namespace default akan digunakan.Berikut ini contoh output-nya:
NAME READY AVAILABLE TYPE STATE LANGUAGE AGE
test-yaml 3/3 3 Image RUNNING java 6d1h
sc-c 2/2 2 Image RUNNING java 13d
sc-b 2/2 2 Image RUNNING java 13d
sc-a 1/1 1 Image RUNNING java 13dTabel berikut menjelaskan field-field tersebut.
Field | Description |
NAME | Nama aplikasi. |
READY | Jumlah instans aplikasi yang siap / Jumlah target instans yang diinginkan. Siap berarti instans tersebut telah lulus pemeriksaan kesiapan (readiness probe). |
AVAILABLE | Jumlah instans aplikasi yang sedang berjalan saat ini. |
TYPE | Metode penerapan aplikasi. `Image` menunjukkan bahwa aplikasi diterapkan menggunakan image. |
STATE | Status aplikasi. `Running` menunjukkan bahwa aplikasi sedang berjalan. |
LANGUAGE | Tumpukan teknologi aplikasi. |
AGE | Usia aplikasi. |
View application details
Anda dapat menggunakan perintah get atau describe untuk melihat detail aplikasi.
Lihat konfigurasi aplikasi menggunakan perintah get
Jalankan perintah berikut untuk melihat konfigurasi aplikasi.
saectl get deployment ${deployment-name} -o yaml -n ${namespace}
# ${deployment-name} adalah nama aplikasi.
# ${namespace} adalah nama namespace. Jika parameter -n tidak digunakan untuk menentukan namespace, namespace default akan digunakan.Lihat detail aplikasi menggunakan perintah describe
Jalankan perintah berikut untuk melihat detail aplikasi.
saectl describe deployment ${deployment-name} -n ${namespace}
# ${deployment-name} adalah nama aplikasi.
# ${namespace} adalah nama namespace. Jika parameter -n tidak digunakan untuk menentukan namespace, namespace default akan digunakan.Update an application
Anda dapat memperbarui aplikasi menggunakan perintah scale, edit, atau apply.
Ubah skala aplikasi secara manual menggunakan perintah scale
Jalankan perintah berikut untuk mengubah skala aplikasi secara manual.
saectl scale deployment ${deployment-name} -n ${namespace} --replicas=${pod-num}
# ${deployment-name} adalah nama aplikasi.
# ${namespace} adalah nama namespace. Jika parameter -n tidak digunakan untuk menentukan namespace, namespace default akan digunakan.
# ${pod-num} adalah jumlah instans aplikasi yang diinginkan.Edit konfigurasi aplikasi secara online menggunakan perintah edit
Jalankan perintah berikut. Konfigurasi aplikasi yang ditentukan akan terbuka dalam file YAML.
saectl edit deployment ${deployment-name} -n ${namespace} # ${deployment-name} adalah nama aplikasi. # ${namespace} adalah nama namespace. Jika parameter -n tidak digunakan untuk menentukan namespace, namespace default akan digunakan.Pada file YAML yang terbuka, ubah konfigurasi sesuai kebutuhan, lalu simpan dan tutup file tersebut. Tunggu hingga perubahan konfigurasi diterapkan.
Perbarui aplikasi berdasarkan file konfigurasi YAML menggunakan perintah apply
Ubah file konfigurasi deployment.yaml dari aplikasi yang telah diterapkan. Di direktori tempat file konfigurasi tersebut berada, jalankan perintah berikut untuk menerapkan perubahan konfigurasi.
saectl apply -f deployment.yamlDelete an application
Jalankan perintah berikut untuk menghapus aplikasi tertentu.
saectl delete deployment ${deployment-name} -n ${namespace}
# ${deployment-name} adalah nama aplikasi.
# ${namespace} adalah nama namespace. Jika parameter -n tidak digunakan untuk menentukan namespace, namespace default akan digunakan.Manage Server Load Balancer (SLB)
Server Load Balancer (SLB) berkorespondensi dengan tipe resource service di Kubernetes. Tool saectl mendukung pembuatan, penampilan, pembaruan, dan pelepasan instance SLB.
Buat instance SLB baru untuk aplikasi
Buat file bernama
svc.yaml. Kode contoh berikut menunjukkan isi file tersebut, yang mencakup konfigurasi SLB.apiVersion: v1 kind: Service metadata: name: internet-${deployment-name} # Ganti ${deployment-name} dengan nama aplikasi. # internet menentukan instance SLB yang menghadap publik. Untuk menentukan instance SLB internal, ganti dengan intranet. spec: ports: - name: port-80 port: 80 # Port yang digunakan untuk mengakses aplikasi. Ganti dengan port aktual sesuai kebutuhan. protocol: TCP targetPort: 80 # Port yang diekspos oleh kontainer. Ganti dengan port aktual sesuai kebutuhan. selector: sae.aliyun.com/app-name: ${deployment-name} # Ganti ${deployment-name} dengan nama aplikasi.Di direktori tempat file
svc.yamlberada, jalankan perintah berikut untuk membuat instance SLB baru untuk aplikasi tersebut.saectl apply -f svc.yaml
Kaitkan aplikasi ke instance SLB yang sudah ada
Buat file bernama
svc.yaml. Kode contoh berikut menunjukkan isi file tersebut, yang mencakup konfigurasi SLB.apiVersion: v1 kind: Service metadata: annotations: sae.aliyun.com/loadbalancer-id: ${your-slb-id} # Ganti ${your-slb-id} dengan ID SLB. name: internet-${deployment-name} # Ganti ${deployment-name} dengan nama aplikasi. # internet menentukan instance SLB yang menghadap publik. Untuk menentukan instance SLB internal, ganti dengan intranet. spec: ports: - name: port-80 port: 80 # Port yang digunakan untuk mengakses aplikasi. Ganti dengan port aktual sesuai kebutuhan. protocol: TCP targetPort: 80 # Port yang diekspos oleh kontainer. Ganti dengan port aktual sesuai kebutuhan. selector: sae.aliyun.com/app-name: ${deployment-name} # Ganti ${deployment-name} dengan nama aplikasi.Di direktori tempat file
svc.yamlberada, jalankan perintah berikut untuk mengaitkan aplikasi ke instance SLB yang sudah ada.saectl apply -f svc.yaml
View the SLB instance list
Jalankan perintah berikut untuk melihat daftar instance SLB yang ada.
saectl get service -l sae.aliyun.com/app-name=${deployment-name} -n ${namespace}
# ${deployment-name} adalah nama aplikasi. Jika parameter -l tidak digunakan untuk menentukan nama aplikasi, instance SLB yang terkait dengan semua aplikasi akan ditampilkan secara default.
# ${namespace} adalah nama namespace. Jika parameter -n tidak digunakan untuk menentukan namespace, namespace default akan digunakan.Berikut ini contoh output-nya:
NAME TYPE EXTERNAL-IP PORT(S) BOUND AGE
internet-myapp LoadBalancer xxx.x.xx.xx 80/TCP myapp 6d20h
intranet-myapp LoadBalancer xx.xx.xxx.xx 80/TCP myapp 4d1hTabel berikut menjelaskan field-field tersebut.
Field | Description |
NAME | Nama service. Formatnya adalah Untuk |
TYPE | Tipe service. `LoadBalancer` menunjukkan instance SLB. |
EXTERNAL-IP | Alamat IP instance SLB. |
PORT(S) | Informasi pemetaan port instance SLB. |
BOUND | Nama aplikasi yang dikaitkan dengan instance SLB tersebut. |
AGE | Usia service. |
View SLB instance details
Jalankan perintah berikut untuk melihat konfigurasi instance SLB.
saectl get service ${service-name} -n ${namespace} -o yaml
# ${service-name} adalah nama service.
# ${namespace} adalah nama namespace. Jika parameter -n tidak digunakan untuk menentukan namespace, namespace default akan digunakan.Update an SLB instance
Anda dapat menggunakan perintah edit atau apply untuk memperbarui instance SLB.
Edit konfigurasi SLB secara online menggunakan perintah edit
Jalankan perintah berikut. Konfigurasi instance SLB yang ditentukan akan terbuka dalam file YAML.
saectl edit service ${service-name} -n ${namespace} # ${service-name} adalah nama service. # ${namespace} adalah nama namespace. Jika parameter -n tidak digunakan untuk menentukan namespace, namespace default akan digunakan.Pada file YAML yang terbuka, ubah konfigurasi sesuai kebutuhan. Kemudian, simpan dan tutup file tersebut. Tunggu hingga perubahan konfigurasi diterapkan.
Perbarui instance SLB berdasarkan file konfigurasi YAML menggunakan perintah apply
Ubah file konfigurasi svc.yaml dari instance SLB yang ada. Di direktori tempat file konfigurasi tersebut berada, jalankan perintah berikut untuk menerapkan perubahan konfigurasi.
saectl apply -f svc.yamlDetach an SLB instance
Jalankan perintah berikut untuk melepaskan instance SLB tertentu.
saectl delete service ${service-name} -n ${namespace}
# ${service-name} adalah nama service.
# ${namespace} adalah nama namespace. Jika parameter -n tidak digunakan untuk menentukan namespace, namespace default akan digunakan.Manage ConfigMaps
Tool saectl mendukung pembuatan, penampilan, pembaruan, dan penghapusan ConfigMap. ConfigMap dapat dirujuk sebagai variabel lingkungan di dalam kontainer atau dipasang sebagai file ke dalam kontainer.
Buat ConfigMap
Buat file bernama
cm.yaml. Kode contoh berikut menunjukkan isi file tersebut, yang mencakup konfigurasi ConfigMap.apiVersion: v1 kind: ConfigMap metadata: name: database-configmap # Nama ConfigMap. namespace: default # Namespace tempat ConfigMap berada. data: # Pasangan kunci-nilai dalam ConfigMap. database: mysql database_uri: mysql://localhost:2309Di direktori tempat file
cm.yamlberada, jalankan perintah berikut untuk membuat ConfigMap bernamadatabase-configmapdi namespace default.saectl apply -f cm.yaml
Lihat daftar ConfigMap di suatu wilayah
Jalankan perintah berikut untuk melihat daftar ConfigMap yang ada di suatu wilayah.
saectl get configmap -ABerikut ini contoh output-nya:
NAMESPACE NAME DATA AGE
default nacos 1 69d
test test-config 2 10dTabel berikut menjelaskan field-field tersebut.
Field | Description |
NAMESPACE | Namespace tempat ConfigMap berada. |
NAME | Nama ConfigMap. |
DATA | Jumlah entri data dalam ConfigMap. |
AGE | Usia ConfigMap. |
View the ConfigMap list in a namespace
Jalankan perintah berikut untuk melihat daftar ConfigMap yang ada di suatu namespace.
saectl get configmap -n ${namespace}
# ${namespace} adalah nama namespace. Jika parameter -n tidak digunakan untuk menentukan namespace, namespace default akan digunakan.View ConfigMap details
Jalankan perintah berikut untuk melihat detail ConfigMap tertentu.
saectl get cm ${cm-name} -n ${namespace} -o yaml
# ${cm-name} adalah nama ConfigMap.
# ${namespace} adalah nama namespace. Jika parameter -n tidak digunakan untuk menentukan namespace, namespace default akan digunakan.Reference a ConfigMap as a container environment variable
File contoh berikut menunjukkan cara merujuk ConfigMap sebagai variabel lingkungan kontainer. Anda dapat merujuk beberapa atau seluruh pasangan kunci-nilai sesuai kebutuhan.
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-configmap
namespace: default
spec:
replicas: 1
selector:
matchLabels:
sae.aliyun.com/app-name: test-configmap
template:
metadata:
creationTimestamp: null
labels:
sae.aliyun.com/app-name: test-configmap
spec:
containers:
- args:
- /home/admin/start.sh
command:
- /bin/bash
env: ### Berikut ini contoh merujuk beberapa pasangan kunci-nilai.
- name: database # Nama variabel lingkungan di dalam kontainer.
valueFrom:
configMapKeyRef: # Nilai variabel lingkungan merujuk nilai kunci database di database-configmap.
key: database
name: database-configmap
envFrom: ### Berikut ini contoh merujuk seluruh pasangan kunci-nilai.
- configMapRef: # Seluruh pasangan kunci-nilai di other-configmap dirujuk sebagai variabel lingkungan di dalam kontainer.
name: other-configmap
name: main
image: registry.cn-shenzhen.aliyuncs.com/sae-serverless-demo/sae-demo:microservice-java-provider-v1.0
imagePullPolicy: Always
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: "2"
memory: 4Gi
restartPolicy: Always
terminationGracePeriodSeconds: 10Mount a ConfigMap as a file into a container
File contoh berikut menunjukkan cara memasang ConfigMap sebagai file ke dalam kontainer.
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-configmap
namespace: default
spec:
replicas: 1
selector:
matchLabels:
sae.aliyun.com/app-name: test-configmap
template:
metadata:
labels:
sae.aliyun.com/app-name: test-configmap
spec:
containers:
- args:
- /home/admin/start.sh
command:
- /bin/bash
name: main
image: registry.cn-shenzhen.aliyuncs.com/sae-serverless-demo/sae-demo:microservice-java-provider-v1.0
imagePullPolicy: Always
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: "2"
memory: 4Gi
volumeMounts:
- mountPath: /tmp/nacos # Jalur pemasangan file ConfigMap.
name: my-volume # Nama volume yang dipasang adalah my-volume.
volumes: # Deklarasikan my-volume berdasarkan nacos-configmap.
- configMap:
name: nacos-configmap
name: my-volume
restartPolicy: Always
terminationGracePeriodSeconds: 10Update a ConfigMap
Anda dapat menggunakan perintah edit atau apply untuk memperbarui ConfigMap.
Edit ConfigMap secara online menggunakan perintah edit
Jalankan perintah berikut. Konfigurasi ConfigMap yang ditentukan akan terbuka dalam file YAML.
saectl edit cm ${cm-name} -n ${namespace} # ${cm-name} adalah nama ConfigMap. # ${namespace} adalah nama namespace. Jika parameter -n tidak digunakan untuk menentukan namespace, namespace default akan digunakan.Pada file YAML yang terbuka, ubah konfigurasi sesuai kebutuhan. Kemudian, simpan dan tutup file tersebut. Tunggu hingga perubahan konfigurasi diterapkan.
Perbarui ConfigMap berdasarkan file konfigurasi YAML menggunakan perintah apply
Ubah file konfigurasi cm.yaml dari ConfigMap yang ada. Di direktori tempat file konfigurasi tersebut berada, jalankan perintah berikut untuk menerapkan perubahan konfigurasi.
saectl apply -f cm.yamlDelete a ConfigMap
Jalankan perintah berikut untuk menghapus ConfigMap tertentu.
saectl delete cm ${cm-name} -n ${namespace}
# ${cm-name} adalah nama ConfigMap.
# ${namespace} adalah nama namespace. Jika parameter -n tidak digunakan untuk menentukan namespace, namespace default akan digunakan.