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 está implantado no cluster. Para mais informações, consulte Implantar e gerenciar componentes do Knative.
Um nome de domínio registrado. Para mais detalhes, consulte Alibaba Cloud Domains.
Configure um domínio personalizado global
Para aplicar um sufixo de domínio comum a todos os Knative Services, siga estas etapas:
-
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 desejado e salve as alterações. Neste exemplo, o domínio personalizado é 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 seu domínio para apontar para o endereço IP do gateway do 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 serviço
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. Reescreva o Path de um Knative Service configurando a anotação alb.ingress.kubernetes.io/rewrite-target: . Veja um 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 seu domínio personalizado, consulte Configurar acesso via HTTPS com certificado.
Para implantar serviços gRPC no Knative e melhorar a eficiência da rede, consulte Implantar serviços gRPC no Knative.