O formato padrão de nome de domínio para um Knative service é {route}.{namespace}.{default-example.com}, em que {default-example.com} representa o sufixo de domínio padrão, geralmente example.com. O ACK permite usar domínios personalizados para oferecer maior flexibilidade na configuração de rotas.
Há duas formas de personalizar domínios:
Personalize o domínio globalmente para todos os Knative services modificando o ConfigMap.
Use a anotação
knative.aliyun.com/serving-ingresspara configurar rapidamente um domínio personalizado em um Knative service específico.
Pré-requisitos
O Knative deve estar implantado no cluster. Para mais informações, consulte Deploy and manage Knative components.
Um nome de domínio registrado é necessário. Para mais detalhes, consulte Alibaba Cloud Domains.
Configure um domínio personalizado global
Siga as etapas abaixo para aplicar um sufixo de domínio comum a todos os Knative services.
-
Execute o comando a seguir para edite o objeto ConfigMap
config-domainno namespaceknative-serving.kubectl edit cm config-domain --namespace knative-serving -
Modifique o arquivo de configuração.
Altere o nome de domínio padrão
example.comno arquivo de configuração para o domínio personalizado e salve a alteração. Neste exemplo, o domínio personalizado está definido comomydomain.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. -
Execute o comando a seguir para verifique se o novo domínio foi aplicado:
# Replace helloworld-go with the name of your Knative Service. kubectl get route helloworld-go --output jsonpath="{.status.url}" | awk -F/ '{print $3}'Saída esperada:
helloworld-go.default.mydomain.comEssa saída confirma a aplicação do domínio personalizado.
Atualize os registros DNS do domínio para apontar para o endereço IP do gateway Knative.
-
Execute o comando a seguir para acessar o Knative service com o domínio personalizado:
curl http://helloworld-go.default.mydomain.comSaída esperada:
Hello Knative!Essa saída confirma que o Knative service está acessível pelo domínio personalizado.
Configure domínio e caminho por service
Para defina um nome de domínio e um caminho específicos para um Knative service, use a anotação knative.aliyun.com/serving-ingress e especifique diretamente o domínio e o caminho desejados. Por exemplo, knative.aliyun.com/serving-ingress: cafe.mydomain.com/coffee define o nome de domínio cafe.mydomain.com e o caminho /coffee.
Exemplo de domínio personalizado
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
Exemplo de domínio curinga
Separe vários domínios com vírgula.
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
Exemplo de caminho único
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
Exemplo de vários caminhos
Separe vários caminhos com vírgula.
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
Reescrever um caminho
O gateway ALB oferece suporte à reescrita de caminhos. Você pode reescrever o Path de um Knative service configurando a anotação alb.ingress.kubernetes.io/rewrite-target: . Veja o exemplo de código a seguir.
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
Configure um domínio curinga universal
Para defina um domínio curinga para um Knative service, defina o valor da anotação knative.aliyun.com/serving-ingress como /. Por exemplo, knative.aliyun.com/serving-ingress: / indica um domínio totalmente curinga. Confira o exemplo a seguir.
Somente gateways ALB são compatíveis.
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
Tópicos relacionados
Para configure um certificado HTTPS no domínio personalizado, consulte Configure access over HTTPS with a certificate.
Para implantar serviços gRPC no Knative e melhorar a eficiência da rede, consulte Deploy gRPC services in Knative.