Secara default, ACK Knative menetapkan nama domain dalam format {route}.{namespace}.example.com. Untuk menggunakan domain Anda sendiri, ACK Knative mendukung empat pendekatan konfigurasi tergantung pada kasus penggunaan Anda.
| Konfigurasi | Gunakan saat | Metode |
|---|---|---|
| Akhiran domain global | Akhiran domain yang sama untuk semua layanan dalam kluster | Edit ConfigMap config-domain |
| Domain layanan tunggal | Domain spesifik untuk satu layanan | Konsol atau resource DomainMapping |
| Jalur Kustom | Mengarahkan traffic ke path tertentu pada sebuah domain | knative.aliyun.com/serving-ingress Anotasi |
| Nama domain wildcard | Mencocokkan semua subdomain (hanya untuk gerbang ALB) | knative.aliyun.com/serving-ingress: "/" |
Prasyarat
Sebelum memulai, pastikan Anda telah:
Mendeploy Knative di kluster Anda. Lihat Deploy and manage Knative.
Nama domain telah terdaftar. Lihat Alibaba Cloud DNS.
Memiliki file kubeconfig untuk kluster Anda dan kubectl yang telah terhubung. Lihat Connect to a cluster using kubectl.
Tetapkan nama domain kustom global
Edit ConfigMap config-domain di namespace knative-serving untuk menerapkan akhiran domain yang sama ke semua layanan Knative sekaligus.
Buka ConfigMap untuk diedit.
kubectl edit cm config-domain --namespace knative-servingGanti
example.comdengan nama domain Anda, lalu simpan dan tutup file tersebut.apiVersion: v1 kind: ConfigMap metadata: name: config-domain namespace: knative-serving data: mydomain.com: "" # Ganti dengan nama domain aktual Anda.Verifikasi bahwa perubahan telah diterapkan.
# Ganti helloworld-go dengan nama layanan Knative Anda. kubectl get route helloworld-go --output jsonpath="{.status.url}" | awk -F/ '{print $3}'Output yang diharapkan:
helloworld-go.default.mydomain.comTambahkan rekaman DNS yang memetakan nama domain kustom Anda ke alamat IP gerbang Knative.
Akses layanan Knative menggunakan nama domain kustom.
curl http://helloworld-go.default.mydomain.comOutput yang diharapkan:
Hello Knative!
Tetapkan nama domain kustom untuk satu layanan
Untuk mengikat nama domain tertentu ke satu layanan Knative, gunakan Konsol ACK atau resource DomainMapping.
Konsol
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, pilih Applications > Knative.
Di halaman Knative, klik tab Services, lalu klik nama layanan target.
Di halaman detail layanan, klik Access Control di pojok kanan atas untuk mengonfigurasi nama domain kustom.
kubectl
Gunakan resource DomainMapping untuk memetakan nama domain tertentu ke layanan Knative.
Buat file bernama
helloworld.knative.top.yaml.vi helloworld.knative.top.yamlTambahkan konten berikut ke file tersebut, lalu simpan dan tutup.
apiVersion: serving.knative.dev/v1beta1 kind: DomainMapping metadata: name: helloworld.knative.top.mydomain.com # Tetapkan ke nama domain aktual Anda. namespace: default # Tetapkan ke namespace tempat layanan target berada. spec: ref: name: helloworld-go # Nama layanan Knative target. kind: Service apiVersion: serving.knative.dev/v1Terapkan DomainMapping ke kluster.
kubectl apply -f helloworld.knative.top.yamlOutput yang diharapkan:
domainmapping.serving.knative.dev/helloworld.knative.top createdVerifikasi DomainMapping.
kubectl get domainmapping helloworld.knative.topOutput yang diharapkan:
NAME URL READY REASON helloworld.knative.top http://helloworld.knative.top TrueTambahkan rekaman DNS yang memetakan nama domain kustom Anda ke alamat IP gerbang Knative.
Akses layanan Knative menggunakan nama domain kustom.
curl http://helloworld.knative.top.mydomain.comOutput yang diharapkan:
Hello Knative!
Tetapkan path kustom untuk satu layanan
Gunakan anotasi knative.aliyun.com/serving-ingress untuk mengarahkan traffic ke path tertentu pada domain kustom. Misalnya, knative.aliyun.com/serving-ingress: cafe.mydomain.com/coffee mengarahkan traffic ke path /coffee pada cafe.mydomain.com.
Untuk mengarahkan traffic dari beberapa path ke layanan yang sama, pisahkan path-path tersebut dengan koma.
Jalur 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:160e4dc8Beberapa 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. Tambahkan anotasi alb.ingress.kubernetes.io/rewrite-target bersamaan dengan knative.aliyun.com/serving-ingress untuk menulis ulang path masuk sebelum mencapai layanan Anda.
Contoh berikut mengarahkan traffic dari /api/coffee pada Ingress ke /coffee pada layanan:
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 mencocokkan semua subdomain di bawah domain kustom Anda, tetapkan anotasi knative.aliyun.com/serving-ingress ke /.
Nama domain wildcard hanya didukung dengan gerbang ALB.
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:160e4dc8Langkah selanjutnya
Konfigurasikan sertifikat HTTPS untuk nama domain kustom Anda.
Deploy layanan gRPC di Knative untuk meningkatkan efisiensi jaringan.