Tüm Ürünler
Search
Belge Merkezi

Serverless App Engine:saectl aracı için hızlı başlangıç

Son Güncelleme:Oct 06, 2026

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:

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.

  1. Kubernetes YAML dosyasını dönüştürün:

    saectl convert -f <k8s-compliant-file.yaml> -o <sae-compliant-file.yaml>
  2. Uygulamayı dağıtın:

    saectl apply -f <sae-compliant-file.yaml>
  3. Bir hata oluşursa, hata mesajına göre SAE YAML dosyasını düzeltin ve apply komutunu 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: {}
Önemli

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

Bu örnekte, bir Deployment ve bir Service içeren iki Kubernetes YAML dosyası kullanılarak Nginx SAE'ye dağıtılır ve ardından temizlik yapılır.

  1. Aşağıdaki iki Kubernetes YAML dosyasıyla başlayın: nginx-deployment.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: registry.cn-beijing.aliyuncs.com/sae-serverless-demo/sae-demo:nginx-v1.23.4
            ports:
            - containerPort: 80
            resources:
              requests:
                cpu: "1"
                memory: "2Gi"

    nginx-service.yaml:

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
    spec:
      allocateLoadBalancerNodePorts: true
      ports:
      - port: 80
        protocol: TCP
      selector:
        app: nginx
      type: LoadBalancer
  2. Her iki dosyayı da SAE YAML biçimine dönüştürün:

    saectl convert -f nginx-deployment.yaml -o output-nginx-deployment.yaml
    saectl convert -f nginx-service.yaml -o output-nginx-service.yaml
  3. Deployment'ı dağıtın ve durumunu doğrulayın:

    saectl apply -f output-nginx-deployment.yaml
    saectl get deployment nginx  # STATE: PUBLISHING = in progress, RUNNING = ready

    Devam etmeden önce STATE değerinin RUNNING olmasını bekleyin.

  4. Service'i oluşturun ve genel IP adresini alın:

    saectl apply -f output-nginx-service.yaml
    saectl get service internet-nginx -o wide  # EXTERNAL-IP: <pending> = creating, IP address = ready

    EXTERNAL-IP bir IP adresi gösterdiğinde uygulamaya erişin:

    curl http://<public-ip>:<port>
  5. Temizlik yapın — İşiniz bittiğinde Deployment ve Service'i silin:

    saectl delete -f output-nginx-deployment.yaml  # The Service is deleted along with the Deployment

Docker Compose dosyasını SAE YAML dosyasına dönüştürme

Bir uygulamayı Docker Compose'tan SAE'ye geçirmek için:

  1. Docker Compose YAML dosyasını bir Kubernetes YAML dosyasına dönüştürün. Talimatlar için Kompose belgelerine

  2. Yukarıda açıklandığı gibi, saectl convert kullanarak 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

  1. Aşağıdaki içeriğe sahip namespace.yaml adlı 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: {}
  2. 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

  1. Aşağıdaki içeriğe sahip deployment.yaml adlı 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
  2. Varsayılan ad alanında uygulamayı oluşturmak için dosyayı uygulayın:

    saectl apply -f deployment.yaml
  3. Uygulamanın çalıştığını kontrol edin:

    saectl get deployment <deployment-name>  # STATE: RUNNING means the application is up
  4. 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

  1. 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
  2. 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

  1. Aşağıdaki içeriğe sahip svc.yaml adlı 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}
  2. SLB örneğini oluşturmak için dosyayı uygulayın:

    saectl apply -f svc.yaml

Uygulamayı mevcut SLB örneğine bağlama

  1. svc.yaml adlı bir dosyayı sae.aliyun.com/loadbalancer-id açı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}
  2. 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

  1. SLB yapılandırmasını bir düzenleyicide açın:

    saectl edit service <service-name> -n <namespace>  # Omit -n to use the default namespace
  2. 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

  1. Aşağıdaki içeriğe sahip cm.yaml adlı 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
  2. 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

  1. ConfigMap'i bir düzenleyicide açın:

    saectl edit cm <cm-name> -n <namespace>  # Omit -n to use the default namespace
  2. 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