全部产品
Search
文档中心

Container Service for Kubernetes:Konfigurasikan sertifikat untuk Knative agar dapat mengakses Layanan melalui HTTPS

更新时间:Dec 18, 2025

Jika Anda ingin menggunakan nama domain kustom untuk mengekspos Layanan Knative, kami menyarankan agar Anda mengonfigurasi sertifikat untuk nama domain tersebut guna mengamankan transmisi data. Knative memungkinkan Anda menggunakan DomainMapping untuk mengonfigurasi sertifikat agar dapat mengakses Layanan melalui HTTPS.

Prasyarat

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

Langkah 1: Buat Layanan Knative

  1. Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster yang ingin Anda kelola, lalu pilih Applications > Knative di panel navigasi sebelah kiri.

  3. Pada tab Services di halaman Knative, atur Namespace menjadi default, lalu klik Create from Template. Buat Layanan Knative bernama helloworld-go dari Sample Template yang tersedia di Konsol, lalu klik Create. Setelah itu, Layanan bernama helloworld-go akan dibuat.

    image.png

Langkah 2: Buat sertifikat yang dikelola sebagai Secret

Di Knative, Secret digunakan untuk menyimpan dan mengelola informasi sensitif, seperti kunci, kata sandi, dan sertifikat. Pada contoh ini, OpenSSL digunakan untuk membuat sertifikat tanda tangan sendiri. File sertifikat dan file kunci privat di-encode menggunakan Base64 dan disimpan dalam Secret di kluster. Contoh berikut menunjukkan cara membuat sertifikat tanda tangan sendiri yang dikelola sebagai Secret.

  1. Jalankan perintah OpenSSL berikut untuk membuat sertifikat tanda tangan sendiri:

    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. Gunakan Base64 untuk meng-encode file knativetop-key.pem dan knativetop-cert.pem di Langkah 1.

    • Jalankan perintah berikut untuk meng-encode file knativetop-key.pem menggunakan Base64:

      cat knativetop-key.pem | base64

      Output yang diharapkan:

      a25hdGl2ZXRvcC1r******
    • Jalankan perintah berikut untuk meng-encode file knativetop-cert.pem menggunakan Base64:

      cat knativetop-cert.pem | base64

      Output yang diharapkan:

      a25hdGl2ZXRvcC1jZ******==
  3. Jalankan perintah berikut untuk membuat Secret:

    Secret ini dapat digunakan dalam konfigurasi TLS Layanan Knative untuk mengakses nama domain helloworld.knative.top secara aman.

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

    Output yang diharapkan:

    secret/secret-tls created

Langkah 3: Buat DomainMapping

DomainMapping adalah objek resource di Knative yang memetakan nama domain ke satu atau beberapa Layanan Knative. Anda dapat membuat DomainMapping untuk memetakan nama domain kustom ke Layanan Knative sehingga aplikasi Anda dapat mengakses layanan tersebut melalui nama domain tersebut.

  1. Jalankan perintah berikut untuk membuat file bernama helloworld.knative.top.yaml:

    vim helloworld.knative.top.yaml
  2. Buka editor vi, tambahkan konten YAML berikut, simpan perubahan, lalu keluar:

    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
    # tls block specifies the secret to be used
      tls:
        secretName: secret-tls
  3. Jalankan perintah berikut untuk menerapkan resource yang didefinisikan dalam file helloworld.knative.top.yaml ke kluster ACK:

    kubectl apply -f helloworld.knative.top.yaml

    Output yang diharapkan:

    domainmapping.serving.knative.dev/helloworld.knative.top created
  4. Jalankan perintah berikut untuk memverifikasi DomainMapping:

    kubectl get domainmapping helloworld.knative.top

    Output yang diharapkan:

    NAME                          URL                                      READY   REASON
    helloworld.knative.top       https://helloworld.knative.top            True

Langkah 4: Akses Layanan Knative melalui HTTPS

Jalankan perintah berikut untuk mengakses Layanan Knative melalui HTTPS:

ALB

Tambahkan listener pada Port 443 di AlbConfig. Kode berikut merupakan contoh penambahan listener pada Port 443 untuk knative-internet:

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: knative-internet
spec:
  config:
  ...
  listeners:
    - port: 443
      protocol: HTTPS # Valid values for protocol: HTTP, HTTPS, and QUIC.
  ...

Jalankan perintah berikut untuk melakukan uji akses:

# alb-ppcate4ox6******.cn-beijing.alb.aliyuncs.com is the address of the ALB Ingress. 
curl -H "host: helloworld.knative.top" https://alb-ppcate4ox6******.cn-beijing.alb.aliyuncs.com -k

MSE

# 8.141.XX.XX is the address of the MSE Ingress. 
curl -H "host: helloworld-go.default.example.com" https://8.141.XX.XX -k

ASM

# 8.141.XX.XX is the address of the ASM Ingress. 
curl -H "host: helloworld-go.default.example.com" http://8.141.XX.XX -k

Output yang diharapkan:

Hello Knative!

Referensi