Nama domain default untuk layanan Knative memiliki format {route}.{namespace}.{default-example.com}. Bagian {default-example.com} adalah akhiran default, yang biasanya berupa `example.com`. Untuk menggunakan nama domain kustom guna mendapatkan routing yang lebih fleksibel, Anda dapat mengikuti langkah-langkah dalam topik ini. ACK Knative memungkinkan Anda mengubah nama domain kustom global untuk semua layanan Knative menggunakan ConfigMap. Anda juga dapat menggunakan DomainMapping untuk menetapkan nama domain kustom bagi satu layanan Knative tertentu.
Prasyarat
Knative telah diterapkan di kluster Anda. Untuk informasi selengkapnya, lihat Deploy and manage Knative.
Anda telah mendaftarkan nama domain. Untuk informasi selengkapnya, lihat Alibaba Cloud DNS.
Anda telah memperoleh file kubeconfig kluster Anda dan menggunakan kubectl untuk terhubung ke kluster.
Konfigurasi nama domain kustom global
Untuk menggunakan akhiran nama domain yang sama untuk semua layanan Knative di ACK Knative tanpa menyetel nama domain untuk setiap layanan secara individual, Anda dapat mengikuti langkah-langkah berikut.
Jalankan perintah berikut untuk mengedit objek ConfigMap bernama
config-domaindi namespaceknative-serving.kubectl edit cm config-domain --namespace knative-servingModifikasi berkas konfigurasi.
Ubah nama domain default dari
example.commenjadi nama domain kustom Anda dan simpan berkas tersebut. Contoh ini menetapkan nama domain kustom menjadimydomain.apiVersion: v1 kind: ConfigMap metadata: name: config-domain namespace: knative-serving data: mydomain.com: "" # Ganti example.com dengan mydomain.com. Gunakan nama domain layanan sebenarnya Anda.Jalankan perintah berikut untuk memeriksa apakah nama domain telah berlaku.
# Ganti helloworld-go dengan nama layanan Knative Anda. kubectl get route helloworld-go --output jsonpath="{.status.url}" | awk -F/ '{print $3}'Keluaran yang diharapkan:
helloworld-go.default.mydomain.comKeluaran tersebut menunjukkan bahwa nama domain kustom telah berlaku.
Tambahkan rekaman DNS untuk memetakan nama domain kustom ke alamat IP gerbang Knative.
Jalankan perintah berikut untuk mengakses layanan Knative menggunakan nama domain kustom.
curl http://helloworld-go.default.mydomain.comKeluaran yang diharapkan:
Hello Knative!Keluaran tersebut menunjukkan bahwa nama domain kustom telah dikonfigurasi dan layanan Knative berhasil merespons permintaan.
Konfigurasi nama domain kustom untuk satu layanan
Untuk menetapkan nama domain tertentu bagi layanan Knative, Anda dapat mengikuti langkah-langkah berikut.
Konsol
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang Anda inginkan lalu klik namanya. Di panel navigasi kiri, pilih .
Pada halaman Knative, klik tab Services lalu klik nama layanan target.
Pada halaman detail layanan, klik Access Settings di pojok kanan atas untuk mengonfigurasi nama domain kustom bagi layanan tersebut.
kubectl
Untuk menetapkan nama domain tertentu bagi sebuah Service dan menggunakan pengontrol Ingress untuk routing yang fleksibel, Anda dapat menggunakan DomainMapping.
Jalankan perintah berikut untuk membuat berkas
helloworld.knative.top.yaml.vi helloworld.knative.top.yamlTambahkan konten YAML berikut ke dalam berkas tersebut. Kemudian, simpan dan tutup berkas.
apiVersion: serving.knative.dev/v1beta1 kind: DomainMapping metadata: name: helloworld.knative.top.mydomain.com # Tetapkan nama domain layanan. Gunakan nama domain layanan sebenarnya Anda. namespace: default # Tetapkan namespace ke namespace tempat layanan berada. spec: ref: name: helloworld-go # Nama layanan target. kind: Service apiVersion: serving.knative.dev/v1Jalankan perintah berikut untuk menerapkan sumber daya yang didefinisikan dalam
helloworld.knative.top.yamlke kluster Kubernetes.kubectl apply -f helloworld.knative.top.yamlKeluaran yang diharapkan:
domainmapping.serving.knative.dev/helloworld.knative.top createdJalankan perintah berikut untuk memverifikasi DomainMapping.
kubectl get domainmapping helloworld.knative.topKeluaran yang diharapkan:
NAME URL READY REASON helloworld.knative.top http://helloworld.knative.top TrueKeluaran tersebut menunjukkan bahwa nama domain kustom telah berlaku.
Tambahkan rekaman DNS untuk memetakan nama domain kustom ke alamat IP gerbang Knative.
Jalankan perintah berikut untuk mengakses layanan Knative menggunakan nama domain kustom.
curl http://helloworld.knative.top.mydomain.comKeluaran yang diharapkan:
Hello Knative!Keluaran tersebut menunjukkan bahwa nama domain kustom telah dikonfigurasi dan layanan Knative berhasil merespons permintaan.
Konfigurasi path kustom untuk satu layanan
Untuk menetapkan path tertentu bagi layanan Knative, Anda dapat menggunakan anotasi knative.aliyun.com/serving-ingress untuk menentukan nama domain kustom dan path-nya. Misalnya, knative.aliyun.com/serving-ingress: cafe.mydomain.com/coffee menentukan nama domain cafe.mydomain.com dan path /coffee.
Contoh path tunggal:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: coffee-mydomain
annotations:
knative.aliyun.com/serving-ingress: cafe.mydomain.com/coffee
spec:
template:
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8Contoh beberapa path:
Gunakan koma (,) untuk memisahkan beberapa path.
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: coffee-mydomain
annotations:
knative.aliyun.com/serving-ingress: cafe.mydomain.com/coffee,cafe.mydomain.com/tea
spec:
template:
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8Menulis ulang path
Gerbang Application Load Balancer (ALB) mendukung penulisan ulang path. Untuk menulis ulang path bagi layanan Knative, Anda dapat mengonfigurasi anotasi alb.ingress.kubernetes.io/rewrite-target: . Kode berikut menunjukkan contohnya.
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: coffee-mydomain
annotations:
knative.aliyun.com/serving-ingress: cafe.mydomain.com/api/coffee
alb.ingress.kubernetes.io/rewrite-target: /coffee
spec:
template:
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8Tetapkan nama domain wildcard
Untuk menetapkan nama domain wildcard bagi layanan Knative, Anda dapat mengatur nilai anotasi knative.aliyun.com/serving-ingress menjadi /. Misalnya, knative.aliyun.com/serving-ingress: / menentukan nama domain wildcard. Kode berikut menunjukkan contohnya.
Hanya gerbang ALB yang didukung.
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: coffee-mydomain
annotations:
knative.aliyun.com/serving-ingress: "/"
spec:
template:
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8Referensi
Untuk mengonfigurasi sertifikat HTTPS bagi nama domain kustom, lihat Configure an HTTPS certificate.
Untuk menerapkan layanan gRPC di Knative dan meningkatkan efisiensi jaringan, lihat Deploy a gRPC service in Knative.