All Products
Search
Document Center

Container Service for Kubernetes:Konfigurasikan akses HTTPS untuk Layanan Knative

Last Updated:Aug 21, 2026

Jika Anda menggunakan domain kustom untuk Layanan Knative, konfigurasikan sertifikat HTTPS untuk mengamankan data dalam transit. Knative mendukung akses HTTPS, sehingga memungkinkan pemetaan Layanan Knative ke domain kustom secara aman.

Prasyarat

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

Langkah 1: Buat Layanan Knative

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

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

  3. Pada halaman Knative, pada tab Services, atur Namespace menjadi default, lalu klik Buat dengan Template. Gunakan templat contoh untuk membuat Layanan Knative bernama helloworld-go. Ikuti petunjuk di layar.

    Setelah layanan dibuat, tab Services menampilkan layanan helloworld-go dengan status Successful. Nama domain default-nya adalah helloworld-go.default.example.com. Sebelum mengakses layanan, konfigurasikan Header Host untuk memastikan permintaan ke domain layanan dirutekan oleh gerbang akses.

Langkah 2: Konfigurasikan layanan HTTPS

Metode konfigurasi HTTPS bergantung pada jenis gerbang yang Anda gunakan:

  • Gerbang ALB: AlbConfig mengelola sertifikat. Anda mengaktifkan TLS dengan menambahkan Anotasi, sehingga tidak perlu menangani sertifikat secara manual.

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

ALB

Anda dapat menentukan sertifikat dalam AlbConfig dan mengaktifkan akses TLS pada Layanan Knative dengan menggunakan Anotasi knative.k8s.alibabacloud/tls: "true". Berikut ini contohnya.

Untuk mengaktifkan akses HTTPS, tambahkan Anotasi TLS ke Layanan Knative Anda dan konfigurasikan pendengar pada Port 443 dalam AlbConfig Anda.

  1. Tambahkan Anotasi knative.k8s.alibabacloud/tls: "true" ke file YAML Layanan Knative Anda.

    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 dengan wilayah Anda.
            env:
            - name: TARGET
              value: "Knative"
  2. Tambahkan pendengar pada Port 443 ke AlbConfig Anda, misalnya knative-internet, untuk mengarahkan trafik HTTPS ke kluster.

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: knative-internet
    spec:
      config:
      ...
      listeners:
        - port: 443
          # Opsi mencakup HTTP, HTTPS, dan QUIC
          protocol: HTTPS 
      ...
  3. Verifikasi bahwa layanan dapat diakses melalui HTTPS.

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

    Output yang diharapkan:

    Hello Knative!

Kourier

Gerbang Kourier tidak memiliki manajemen sertifikat bawaan. Anda harus menyimpan sertifikat TLS sebagai Secret di kluster, lalu menggunakan DomainMapping untuk mengikat sertifikat tersebut ke domain.

1. Buat Secret sertifikat

Contoh berikut menggunakan sertifikat HTTPS tanda tangan sendiri dari OpenSSL. Jika Anda sudah memiliki file sertifikat dalam format .pem, Anda dapat melewati Langkah 1 dan langsung ke Langkah 2.

Sertifikat tanda tangan sendiri hanya untuk tujuan pengujian. Di lingkungan produksi, gunakan sertifikat yang dikeluarkan oleh Certificate Authority (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. Secara opsional, dapatkan encoding Base64 dari file knativetop-key.pem dan knativetop-cert.pem dari langkah 1. Ini hanya diperlukan jika Anda membuat Secret secara manual dari file YAML, bukan untuk perintah kubectl pada langkah berikutnya.

    • Terapkan encoding Base64 ke knativetop-key.pem.

      cat knativetop-key.pem | base64

      Output yang diharapkan:

      a25hdGl2ZXRvcC1r******
    • Terapkan encoding Base64 ke knativetop-cert.pem.

      cat knativetop-cert.pem | base64

      Output yang diharapkan:

      a25hdGl2ZXRvcC1jZ******==
  3. Buat Secret tersebut.

    Anda dapat menggunakan Secret dalam konfigurasi TLS Layanan Knative untuk mengaktifkan akses aman ke 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 resource yang memetakan domain ke satu atau beberapa Layanan Knative.

Dengan Secret yang telah dibuat, gunakan DomainMapping untuk mengikat domain kustom ke Layanan Knative dan aktifkan enkripsi TLS dengan mereferensikan Secret tersebut.

  1. Buat file helloworld.knative.top.yaml dan tulis konfigurasi DomainMapping 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 siap digunakan.

    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 domain kustom.

    # Ganti dengan alamat gerbang Kourier Anda.
    curl -H "Host: helloworld.knative.top" https://8.141.XX.XX -k

    Output yang diharapkan:

    >Hello Knative!

Dokumen terkait