Le format de nom de domaine par défaut d'un service Knative est {route}.{namespace}.{default-example.com}, où {default-example.com} représente le suffixe de domaine par défaut, généralement example.com. ACK prennent en charge les domaines personnalisés pour une configuration plus flexible des routes.
Vous pouvez personnaliser les domaines de deux manières :
Personnalisez globalement le domaine pour tous les services Knative en modifiant la ConfigMap.
Utilisez l'annotation
knative.aliyun.com/serving-ingresspour configurer rapidement un domaine personnalisé pour un service Knative spécifique.
Prérequis
Knative est déployé dans votre cluster. Pour plus d'informations, consultez les rubriques et Déployer et gérer les composants Knative.
Vous avez enregistré un nom de domaine. Pour plus d'informations, consultez la rubrique Alibaba Cloud Domains.
Configurer un domaine personnalisé global
Pour appliquer un suffixe de domaine commun à tous les services Knative, suivez les étapes ci-dessous.
-
Exécutez la commande suivante pour modifier l'objet ConfigMap
config-domaindans le namespaceknative-serving.kubectl edit cm config-domain --namespace knative-serving -
Modifiez le fichier de configuration.
Remplacez le nom de domaine par défaut
example.comdu fichier de configuration par un domaine personnalisé, puis enregistrez la configuration. Dans cet exemple, le domaine personnalisé est défini surmydomain.apiVersion: v1 kind: ConfigMap metadata: name: config-domain namespace: knative-serving data: mydomain.com: "" # Replace example.com with mydomain.com. In a real-world scenario, replace this with your own service domain. -
Exécutez la commande suivante pour vérifier que le nouveau domaine est appliqué :
# Replace helloworld-go with the name of your Knative Service. kubectl get route helloworld-go --output jsonpath="{.status.url}" | awk -F/ '{print $3}'Résultat attendu :
helloworld-go.default.mydomain.comCe résultat confirme l'application du domaine personnalisé.
Mettez à jour les enregistrements DNS de votre domaine pour qu'ils pointent vers l'adresse IP de la passerelle Knative.
-
Exécutez la commande suivante pour accéder au service Knative via le domaine personnalisé :
curl http://helloworld-go.default.mydomain.comRésultat attendu :
Hello Knative!Ce résultat confirme que le service Knative est accessible via le domaine personnalisé.
Configurer un domaine et un chemin par service
Pour définir un nom de domaine et un chemin spécifiques pour un service Knative, utilisez l'annotation knative.aliyun.com/serving-ingress afin de spécifier directement un nom de domaine et un chemin personnalisés. Par exemple, knative.aliyun.com/serving-ingress: cafe.mydomain.com/coffee spécifie le nom de domaine cafe.mydomain.com et le chemin /coffee.
Exemple de domaine personnalisé
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: coffee-mydomain
annotations:
knative.aliyun.com/serving-ingress: cafe.mydomain.com
spec:
template:
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8
Exemple de domaine générique (wildcard)
Séparez plusieurs domaines par une virgule.
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: coffee-mydomain
annotations:
knative.aliyun.com/serving-ingress: "*.mydomain.com"
spec:
template:
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8
Exemple de chemin unique
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:160e4dc8
Exemple de plusieurs chemins
Séparez plusieurs chemins par une virgule.
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:160e4dc8
Réécrire un chemin
La passerelle ALB prend en charge la réécriture de chemin. Vous pouvez réécrire le chemin d'un service Knative en configurant l'annotation alb.ingress.kubernetes.io/rewrite-target: . Voici un exemple de code.
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:160e4dc8
Configurer un domaine générique universel
Pour définir un domaine générique pour un service Knative, définissez la valeur de l'annotation knative.aliyun.com/serving-ingress sur /. Par exemple, knative.aliyun.com/serving-ingress: / indique un domaine générique complet. Voici un exemple.
Seules les passerelles ALB sont prises en charge.
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:160e4dc8
Rubriques connexes
Pour configurer un certificat HTTPS pour votre domaine personnalisé, consultez les rubriques Configurer l'accès HTTPS avec un certificat et .
Pour déployer des services gRPC dans Knative et améliorer l'efficacité du réseau, consultez les rubriques Déployer des services gRPC dans Knative et .