saectl, Serverless App Engine (SAE) için komut satırı aracıdır. Kubernetes ve Docker Compose YAML dosyalarını SAE biçimine dönüştürmek; ad alanları, uygulamalar, Server Load Balancer (SLB) örnekleri ve ConfigMaps dahil olmak üzere SAE kaynaklarının yaşam döngüsünü yönetmek için bu aracı kullanın.
Ön koşullar
Başlamadan önce aşağıdakileri tamamladığınızdan emin olun:
saectl yüklü olmalı; bir AccessKey ID, AccessKey secret ve uygulama dağıtım bölgesi yapılandırılmış olmalıdır — bkz. saectl aracını yükleme ve yapılandırma
Hızlı başlangıç
Aşağıdaki komutlar, bir Kubernetes YAML dosyasını dönüştürüp uygulamayı SAE'ye dağıtmak için gereken temel iş akışını gösterir:
saectl convert -f <k8s-file.yaml> -o <sae-file.yaml> # Convert a Kubernetes YAML file to an SAE YAML file
saectl apply -f <sae-file.yaml> # Deploy the application
saectl get deployment <deployment-name> # Check deployment status: PUBLISHING = in progress, RUNNING = ready
Uçtan uca eksiksiz bir örnek için bkz. saectl kullanarak Nginx dağıtma.
Kubernetes YAML dosyasını SAE YAML dosyasına dönüştürme
SAE YAML dosyaları, Kubernetes belirtimlerinden farklı olan SAE teknik özelliklerini takip eder. Mevcut bir Kubernetes YAML dosyasından SAE uyumlu bir dosya oluşturmak için convert komutunu kullanın, ardından apply ile dağıtımı yapın.
-
Kubernetes YAML dosyasını dönüştürün:
saectl convert -f <k8s-compliant-file.yaml> -o <sae-compliant-file.yaml> -
Uygulamayı dağıtın:
saectl apply -f <sae-compliant-file.yaml> -
Bir hata oluşursa, hata mesajına göre SAE YAML dosyasını düzeltin ve
applykomutunu tekrar çalıştırın. Hatalar iki kategoriye ayrılır:Desteklenmeyen veya farklı biçimlendirilmiş alanlar: Kubernetes YAML dosyalarındaki bazı alanlar SAE YAML dosyalarında desteklenmez veya farklı biçim gereksinimlerine sahiptir. Dönüştürmeden sonra bu alanları silin veya değiştirin. Desteklenen alanlar ve biçim gereksinimleri için bu dizindeki diğer konulara bakın.
-
Gerekli alanların eksik olması: SAE YAML dosyalarında gerekli olan bazı alanlar Kubernetes YAML dosyasında bulunmayabilir. Dönüştürmeden sonra, eksik her alan için
${parameter_name}yer tutucusu görüntülenir. Yer tutucuyu gerçek değerle değiştirin. Örneğin, SAE bir ad alanı tanımlarken Virtual Private Cloud (VPC) gerektirir ancak Kubernetes YAML dosyaları bu parametreyi içermez. Dönüştürmeden sonra çıktıda${vpc-id}yer tutucusu görünür: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: {}
Bir Kubernetes YAML dosyası birden fazla kaynak tanımlıyorsa, bunları tek bir dosyada standart Kubernetes ayırıcısı --- ile ayırın. saectl, dosyadaki tüm kaynakları toplu iş olarak dönüştürür. Ancak, aynı dosyadaki kaynakların belirli bir yürütme sırasına bağımlı olmaması gerekir. Örneğin, bir Deployment ve ona bağlı bir Service aynı dosyada bulunuyorsa, her iki kaynak da aynı anda oluşturulduğu için dağıtım başarısız olur. Sıraya bağımlı kaynakları ayrı dosyalarda tanımlayın ve sırasıyla uygulayın.
saectl kullanarak Nginx dağıtma
Docker Compose dosyasını SAE YAML dosyasına dönüştürme
Bir uygulamayı Docker Compose'tan SAE'ye geçirmek için:
Docker Compose YAML dosyasını bir Kubernetes YAML dosyasına dönüştürün. Talimatlar için Kompose belgelerine
Yukarıda açıklandığı gibi,
saectl convertkullanarak Kubernetes YAML dosyasını SAE YAML dosyasına dönüştürün.
Ad alanlarını yönetme
saectl, ad alanları oluşturma, görüntüleme ve silme işlemlerini destekler. Ad alanlarını güncelleme işlemi desteklenmez.
Ad alanı oluşturma
-
Aşağıdaki içeriğe sahip
namespace.yamladlı bir dosya oluşturun:apiVersion: v1 kind: Namespace metadata: annotations: sae.aliyun.com/vpc-id: ${vpc-id} # Replace with the VPC ID (format: vpc-xxxxxxxxxxxxxxxxxxxxx) name: ${namespace} # Replace with the namespace name spec: {} -
Ad alanını oluşturmak için dosyayı uygulayın:
saectl apply -f namespace.yaml
Ad alanlarını görüntüleme
saectl get ns
Örnek çıktı:
NAME STATUS REGION
default Active cn-beijing
testns Active cn-beijing
| Alan | Açıklama |
|---|---|
| NAME | Ad alanı adı. default varsayılan ad alanıdır. |
| STATUS | Ad alanı durumu. Active, ad alanının kullanılabilir olduğunu gösterir. |
| REGION | Ad alanının bulunduğu bölge. |
Ad alanı silme
saectl delete ns <namespace> # Replace <namespace> with the namespace name
Uygulamaları yönetme
saectl, uygulama oluşturma, görüntüleme, güncelleme ve silme işlemlerini destekler.
Uygulama oluşturma
-
Aşağıdaki içeriğe sahip
deployment.yamladlı bir dosya oluşturun:apiVersion: apps/v1 kind: Deployment metadata: name: ${deployment-name} # Replace with the application name spec: replicas: 2 # Number of application instances selector: matchLabels: sae.aliyun.com/app-name: ${deployment-name} template: metadata: labels: sae.aliyun.com/app-name: ${deployment-name} spec: containers: - name: main # Use "main" to avoid conflicts image: registry.openanolis.cn/openanolis/nginx:1.14.1-8.6 -
Varsayılan ad alanında uygulamayı oluşturmak için dosyayı uygulayın:
saectl apply -f deployment.yaml -
Uygulamanın çalıştığını kontrol edin:
saectl get deployment <deployment-name> # STATE: RUNNING means the application is up -
Uygulamanın Pod örneklerini görüntüleyin:
saectl get pods -l sae.aliyun.com/app-name=<deployment-name>
Uygulama listesini görüntüleme
saectl get deployment -n <namespace> # Omit -n to use the default namespace
Örnek çıktı:
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 13d
| Alan | Açıklama |
|---|---|
| NAME | Uygulama adı. |
| READY | Hazır örnekler / hedeflenen örnekler. Bir örnek, hazırlık probu kontrolünü geçtiğinde hazır kabul edilir. |
| AVAILABLE | Şu anda çalışan örnekler. |
| TYPE | Dağıtım yöntemi. Image, uygulamanın bir konteyner görüntüsünden dağıtıldığını gösterir. |
| STATE | Uygulama durumu. RUNNING, uygulamanın çalıştığını gösterir. |
| LANGUAGE | Uygulamanın teknoloji yığını. |
| AGE | Uygulamanın ne kadar süredir çalıştığı. |
Uygulama ayrıntılarını görüntüleme
YAML yapılandırmasını görüntülemek için get veya tam ayrıntıları görüntülemek için describe kullanın.
Uygulama yapılandırmasını görüntüleme
saectl get deployment <deployment-name> -o yaml -n <namespace> # Omit -n to use the default namespace
Uygulama ayrıntılarını görüntüleme
saectl describe deployment <deployment-name> -n <namespace> # Omit -n to use the default namespace
Uygulamayı güncelleme
Üç komut mevcuttur: scale, edit ve apply.
Uygulamayı ölçeklendirme
saectl scale deployment <deployment-name> --replicas=<pod-num> -n <namespace>
# <pod-num>: the desired number of instances
# Omit -n to use the default namespace
Uygulama yapılandırmasını çevrimiçi düzenleme
-
Uygulamanın YAML yapılandırmasını bir düzenleyicide açın:
saectl edit deployment <deployment-name> -n <namespace> # Omit -n to use the default namespace Yapılandırmayı değiştirin, ardından dosyayı kaydedip kapatın. Değişiklikler otomatik olarak uygulanır.
Güncellenmiş yapılandırmayı dosyadan uygulama
deployment.yaml dosyasını değiştirin, ardından şu komutu çalıştırın:
saectl apply -f deployment.yaml
Uygulama silme
saectl delete deployment <deployment-name> -n <namespace> # Omit -n to use the default namespace
SLB örneklerini yönetme
SLB örnekleri, Kubernetes'teki Service kaynak türüne karşılık gelir. saectl, SLB örnekleri oluşturma, görüntüleme, güncelleme ve ayırma işlemlerini destekler.
Yeni SLB örneği oluşturma
-
Aşağıdaki içeriğe sahip
svc.yamladlı bir dosya oluşturun:apiVersion: v1 kind: Service metadata: name: internet-${deployment-name} # "internet" = public network; use "intranet" for private network # Replace ${deployment-name} with the application name spec: ports: - name: port-80 port: 80 # Port used to access the application protocol: TCP targetPort: 80 # Port exposed by the container selector: sae.aliyun.com/app-name: ${deployment-name} -
SLB örneğini oluşturmak için dosyayı uygulayın:
saectl apply -f svc.yaml
Uygulamayı mevcut SLB örneğine bağlama
-
svc.yamladlı bir dosyayısae.aliyun.com/loadbalancer-idaçıklamasını içerecek şekilde oluşturun:apiVersion: v1 kind: Service metadata: annotations: sae.aliyun.com/loadbalancer-id: ${your-slb-id} # Replace with the SLB ID name: internet-${deployment-name} # Replace ${deployment-name} with the application name spec: ports: - name: port-80 port: 80 protocol: TCP targetPort: 80 selector: sae.aliyun.com/app-name: ${deployment-name} -
Dosyayı uygulayın:
saectl apply -f svc.yaml
SLB örneklerini görüntüleme
saectl get service -l sae.aliyun.com/app-name=<deployment-name> -n <namespace>
# Omit -l to list SLB instances for all applications
# Omit -n to use the default namespace
Örnek çıktı:
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 4d1h
| Alan | Açıklama |
|---|---|
| NAME | <network-type>-<application-name> biçimindeki hizmet adı. internet = genel ağ, intranet = özel ağ. |
| TYPE | Hizmet türü. LoadBalancer, bir SLB örneği olduğunu gösterir. |
| EXTERNAL-IP | SLB örneğinin IP adresi. |
| PORT(S) | SLB örneğinin bağlantı noktası eşlemesi. |
| BOUND | SLB örneğinin bağlı olduğu uygulama. |
| AGE | Hizmetin ne kadar süredir var olduğu. |
SLB örneği ayrıntılarını görüntüleme
saectl get service <service-name> -o yaml -n <namespace> # Omit -n to use the default namespace
SLB örneğini güncelleme
Çevrimiçi güncelleme için edit veya dosyadan güncelleme için apply kullanın.
SLB yapılandırmasını çevrimiçi düzenleme
-
SLB yapılandırmasını bir düzenleyicide açın:
saectl edit service <service-name> -n <namespace> # Omit -n to use the default namespace Yapılandırmayı değiştirin, ardından dosyayı kaydedip kapatın. Değişiklikler otomatik olarak uygulanır.
Güncellenmiş yapılandırmayı dosyadan uygulama
svc.yaml dosyasını değiştirin, ardından şu komutu çalıştırın:
saectl apply -f svc.yaml
SLB örneğini ayırma
saectl delete service <service-name> -n <namespace> # Omit -n to use the default namespace
ConfigMaps yönetme
saectl, ConfigMap oluşturma, görüntüleme, güncelleme ve silme işlemlerini destekler. ConfigMap, yapılandırmayı anahtar-değer çiftleri olarak depolar; bu çiftlere ortam değişkeni olarak başvurabilir veya bunları bir konteyner içinde dosya olarak bağlayabilirsiniz.
ConfigMap oluşturma
-
Aşağıdaki içeriğe sahip
cm.yamladlı bir dosya oluşturun:apiVersion: v1 kind: ConfigMap metadata: name: database-configmap # ConfigMap name namespace: default # Namespace where the ConfigMap is created data: # Key-value pairs database: mysql database_uri: mysql://localhost:2309 -
ConfigMap'i oluşturmak için dosyayı uygulayın:
saectl apply -f cm.yaml
ConfigMap'leri görüntüleme
Tüm ad alanlarındaki ConfigMap'leri listeleme
saectl get configmap -A
Örnek çıktı:
NAMESPACE NAME DATA AGE
default nacos 1 69d
test test-config 2 10d
| Alan | Açıklama |
|---|---|
| NAMESPACE | ConfigMap'in bulunduğu ad alanı. |
| NAME | ConfigMap adı. |
| DATA | ConfigMap'teki anahtar-değer çifti sayısı. |
| AGE | ConfigMap'in ne kadar süredir var olduğu. |
Bir ad alanındaki ConfigMap'leri listeleme
saectl get configmap -n <namespace> # Omit -n to use the default namespace
ConfigMap ayrıntılarını görüntüleme
saectl get cm <cm-name> -o yaml -n <namespace> # Omit -n to use the default namespace
Konteynerde ConfigMap kullanma
Ortam değişkenleri olarak başvurma
Tek tek anahtar-değer çiftlerine veya tüm çiftlere ortam değişkeni olarak başvurun:
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: # Reference individual key-value pairs
- name: database # Environment variable name in the container
valueFrom:
configMapKeyRef: # Value comes from the "database" key in database-configmap
key: database
name: database-configmap
envFrom: # Reference all key-value pairs
- configMapRef: # All pairs in other-configmap become environment variables
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: 10
Dosya olarak bağlama
Bir ConfigMap'i konteyner içinde belirtilen bir yola dosya olarak bağlayın:
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 # Path where the ConfigMap file is mounted
name: my-volume
volumes:
- configMap:
name: nacos-configmap # ConfigMap to mount as my-volume
name: my-volume
restartPolicy: Always
terminationGracePeriodSeconds: 10
ConfigMap güncelleme
Çevrimiçi güncelleme için edit veya dosyadan güncelleme için apply kullanın.
ConfigMap'i çevrimiçi düzenleme
-
ConfigMap'i bir düzenleyicide açın:
saectl edit cm <cm-name> -n <namespace> # Omit -n to use the default namespace Yapılandırmayı değiştirin, ardından dosyayı kaydedip kapatın. Değişiklikler otomatik olarak uygulanır.
Güncellenmiş yapılandırmayı dosyadan uygulama
cm.yaml dosyasını değiştirin, ardından şu komutu çalıştırın:
saectl apply -f cm.yaml
ConfigMap silme
saectl delete cm <cm-name> -n <namespace> # Omit -n to use the default namespace
Sonraki adımlar
SAE YAML dosyaları için desteklenen YAML alanlarını ve biçim gereksinimlerini öğrenmek üzere bu dizindeki diğer konuları inceleyin.