All Products
Search
Document Center

Container Compute Service:Konfigurasikan sertifikat untuk mengakses Layanan Knative melalui HTTPS

Last Updated:Sep 17, 2026

Jika Anda ingin menggunakan nama domain kustom untuk Layanan Knative, kami menyarankan agar Anda mengonfigurasi sertifikat HTTPS untuk nama domain tersebut guna meningkatkan keamanan transmisi data. Knative memungkinkan Anda menentukan sertifikat HTTPS dengan mengonfigurasi DomainMapping, yang secara aman memetakan Layanan Knative ke nama domain kustom.

Prasyarat

Knative telah dideploy di kluster ACS Anda. Untuk informasi selengkapnya, lihat Deploy Knative.

Langkah 1: Buat Layanan Knative

  1. Masuk ke Konsol Container Compute Service (ACS). Di panel navigasi sebelah kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri pada halaman detail kluster, pilih Applications > Knative.

  3. Pada tab Services halaman Knative, atur Namespace menjadi default, lalu klik Create from Template untuk membuat Layanan Knative (Layanan helloworld-go) dari templat contoh di konsol. Ikuti petunjuk untuk menyelesaikan pembuatan. Setelah Layanan dibuat, statusnya akan muncul sebagai berhasil di tab Services, dan nama domain default-nya adalah helloworld-go.default.example.com. Sebelum mengakses Layanan tersebut, Anda harus mengikat nama domain akses ke gerbang masuk sebagai Host.

Langkah 2: Konfigurasikan layanan HTTPS

Cara mengonfigurasi HTTPS bergantung pada jenis gateway:

  • Gateway ALB: Sertifikat dikelola terpusat oleh AlbConfig. Anda mengaktifkan TLS dengan menggunakan anotasi, tanpa perlu menangani file sertifikat secara manual.

  • Gateway Kourier: Anda harus membuat Secret sertifikat secara manual, lalu mengikat Secret tersebut ke nama domain menggunakan DomainMapping.

ALB

Anda dapat menentukan sertifikat dalam AlbConfig dan mengaktifkan akses TLS pada Layanan Knative dengan menggunakan anotasi knative.k8s.alibabacloud/tls: "true". Lihat contoh berikut.

Untuk mengaktifkan akses HTTPS, tambahkan anotasi TLS ke YAML Layanan Knative dan konfigurasikan pendengar pada Port 443 di AlbConfig.

  1. Tambahkan anotasi knative.k8s.alibabacloud/tls: "true" ke YAML Layanan Knative.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld
      namespace: default
      annotations:
        knative.k8s.alibabacloud/tls: "true"
    spec:
      template:
        spec:
          containers:
          - image: registry-vpc.cn-shenzhen.aliyuncs.com/knative-sample/helloworld-go:73fbdd56  # Ganti wilayah dengan wilayah yang benar-benar Anda gunakan.
            env:
            - name: TARGET
              value: "Knative"
  2. Tambahkan pendengar pada Port 443 di AlbConfig (misalnya, knative-internet) untuk mengarahkan trafik HTTPS ke dalam kluster.

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: knative-internet
    spec:
      config:
      ...
      listeners:
        - port: 443
          # Nilai yang valid: HTTP, HTTPS, QUIC
          protocol: HTTPS
      ...
  3. Verifikasi bahwa Layanan dapat diakses melalui HTTPS.

    # Ganti alb-ppcate4ox6******.cn-beijing.alb.aliyuncs.com dengan alamat gateway ALB Anda.
    curl -H "Host: helloworld.knative.top" https://alb-ppcate4ox6******.cn-beijing.alb.aliyuncs.com -k

    Output yang diharapkan:

    Hello Knative!

Kourier

Gateway Kourier tidak menyediakan manajemen sertifikat bawaan. Anda harus menyimpan sertifikat TLS di kluster sebagai Secret terlebih dahulu. Setelah Secret siap, ikat nama domain ke sertifikat tersebut menggunakan DomainMapping.

1. Buat Secret sertifikat

Contoh berikut menggunakan sertifikat HTTPS tanda tangan sendiri yang dihasilkan dengan OpenSSL. Jika Anda sudah memiliki file sertifikat dalam format .pem, Anda dapat melewati langkah 1 dan langsung mulai dari langkah 2.

Sertifikat tanda tangan sendiri hanya untuk pengujian. Di lingkungan produksi, kami menyarankan agar Anda menggunakan sertifikat yang dikeluarkan oleh Otoritas Sertifikat (CA).

  1. Buat sertifikat tanda tangan sendiri menggunakan OpenSSL.

    openssl genrsa -out knativetop-key.pem 4096
    openssl req -subj "/CN=helloworld.knative.top" -sha256 -new -key knativetop-key.pem -out knativetop.csr
    echo subjectAltName = DNS:helloworld.knative.top > extfile.cnf
    openssl x509 -req -days 3650 -sha256 -in knativetop.csr -signkey knativetop-key.pem -out knativetop-cert.pem -extfile extfile.cnf

    Output yang diharapkan:

    Signature ok
    subject=CN = helloworld.knative.top
    Getting Private key
  2. Encode file knativetop-key.pem dan knativetop-cert.pem yang dibuat pada langkah 1 ke Base64.

    • Encode knativetop-key.pem ke Base64.

      cat knativetop-key.pem | base64

      Output yang diharapkan:

      a25hdGl2ZXRvcC1r******
    • Encode knativetop-cert.pem ke Base64.

      cat knativetop-cert.pem | base64

      Output yang diharapkan:

      a25hdGl2ZXRvcC1jZ******==
  3. Buat Secret tersebut. Secret ini dapat digunakan dalam konfigurasi TLS Layanan Knative untuk mengaktifkan akses aman ke nama domain helloworld.knative.top.

    kubectl create secret tls secret-tls --key knativetop-key.pem --cert knativetop-cert.pem

    Output yang diharapkan:

    secret/secret-tls created

2. Buat DomainMapping

Di Knative, DomainMapping adalah objek resource yang memetakan nama domain ke satu atau beberapa Layanan Knative. Setelah Secret siap, gunakan DomainMapping untuk mengikat nama domain kustom ke Layanan Knative dan referensikan Secret yang telah dibuat sebelumnya untuk mengaktifkan enkripsi TLS.

  1. Buat file helloworld.knative.top.yaml dengan konten berikut.

    apiVersion: serving.knative.dev/v1beta1
    kind: DomainMapping
    metadata:
      name: helloworld.knative.top
      namespace: default
    spec:
      ref:
        name: helloworld-go
        kind: Service
        apiVersion: serving.knative.dev/v1
    # Blok tls menentukan secret yang akan digunakan.
      tls:
        secretName: secret-tls
  2. Terapkan DomainMapping ke kluster.

    kubectl apply -f helloworld.knative.top.yaml

    Output yang diharapkan:

    domainmapping.serving.knative.dev/helloworld.knative.top created
  3. Jalankan perintah berikut untuk memverifikasi bahwa DomainMapping telah siap.

    kubectl get domainmapping helloworld.knative.top

    Output yang diharapkan:

    NAME                          URL                                      READY   REASON
    helloworld.knative.top       https://helloworld.knative.top            True
  4. Verifikasi bahwa Layanan dapat diakses melalui nama domain kustom.

    # 8.141.XX.XX adalah alamat gateway Kourier.
    curl -H "Host: helloworld-go.default.example.com" http://8.141.XX.XX -k

    Output yang diharapkan:

    Hello Knative!