Use este guia para migrar as suas cargas de trabalho para execução na oferta Knative de código aberto com o Google Kubernetes Engine. Em geral, a migração das suas cargas de trabalho requer a instalação do componente Knative Serving num novo cluster do GKE e, em seguida, a reimplementação de cada um dos seus serviços nesse cluster do Knative.
Embora a utilização, a gestão e o apoio técnico do Knative de código aberto sejam da sua escolha e responsabilidade, a migração para o Knative oferece-lhe a oportunidade de continuar a executar as suas cargas de trabalho na plataforma Google Kubernetes Engine.
Diferenças importantes:
- O suporte está limitado ao Google Kubernetes Engine. Pode contactar a comunidade Knative para receber apoio técnico do Knative.
 - A CLI do Google Cloud (
gcloud) só é suportada pelo Google Kubernetes Engine. O Knative suporta os comandoskubectlekn. Saiba como instalarkn 
Antes de começar
- Tem de ter acesso a um novo cluster do GKE.
- Pode criar o novo cluster no mesmo Google Cloud projeto ou num novo.
 - O cluster tem de cumprir os requisitos do Knative.
 - Saiba como criar um cluster:
 
 - Tem de transferir manualmente todas as configurações de cluster para o novo cluster do Knative, incluindo, entre outros:
 - Tem de criar e configurar novos controlos de acesso IAM e RBAC:
 
Instalar o Knative no Google Kubernetes Engine
O Knative oferece várias opções de instalação e camadas de rede que pode optar por usar. Os seguintes passos de instalação do Knative usam o método do operador do Knative e a camada de rede do Istio.
Instale o operador Knative:
Implemente o operador no seu cluster:
kubectl apply -f https://github.com/knative/operator/releases/download/knative-vVERSION/operator.yamlSubstitua VERSION por uma versão do operador Knative.
Exemplo:
kubectl apply -f https://github.com/knative/operator/releases/download/knative-v1.3.1/operator.yamlDefina a
kubectlCLI para usar o espaço de nomesdefault:kubectl config set-context --current --namespace=defaultVerifique se o operador foi criado com êxito:
kubectl get deployment knative-operatorResultado:
NAME READY UP-TO-DATE AVAILABLE AGE knative-operator 1/1 1 1 6m43s
Instale o componente Knative Serving:
Crie um ficheiro YAML com o seguinte, por exemplo: SERVING_FILENAME.yaml:
apiVersion: v1 kind: Namespace metadata: name: knative-serving --- apiVersion: operator.knative.dev/v1alpha1 kind: KnativeServing metadata: name: knative-serving namespace: knative-servingImplemente o ficheiro YAML no cluster:
kubectl apply -f SERVING_FILENAME.yamlSubstitua SERVING_FILENAME pelo ficheiro YAML que criou.
Instale o Istio com a injeção de sidecar como a camada de rede:
Tem a opção de realizar e configurar uma instalação alternativa do Istio. Consulte todas as opções de instalação do Istio no Website do Knative. Tenha em atenção que esta instalação pode demorar 30 minutos ou mais.
Instale o Istio executando o seguinte comando com a flag
--set hub=gcr.io/istio-releasepara evitar a limitação de taxa do Docker:istioctl install --set hub=gcr.io/istio-releaseExecute o seguinte comando para ativar a injeção de sidecar:
kubectl label namespace default istio-injection=enabledOpcional: por predefinição, o Istio é instalado no espaço de nomes
istio-system. Se quiser configurar um espaço de nomes diferente, pode seguir os seguintes passos:Para configurar um espaço de nomes personalizado para o Istio, anexe os atributos
spec.config.istioao ficheiro de configuração SERVING_FILENAME.yaml. Por exemplo:apiVersion: operator.knative.dev/v1alpha1 kind: KnativeServing metadata: name: knative-serving namespace: knative-serving spec: # ... config: istio: local-gateway.LOCAL_GATEWAY_NAMESPACE.knative-local-gateway: "knative-local-gateway.ISTIO_NAMESPACE.svc.cluster.local"Substituição:
- LOCAL_GATEWAY_NAMESPACE é o espaço de nomes
onde instalou o Knative Serving. Predefinição: 
knative-serving - ISTIO_NAMESPACE é o espaço de nomes onde o Istio está instalado. Predefinição: 
istio-system 
- LOCAL_GATEWAY_NAMESPACE é o espaço de nomes
onde instalou o Knative Serving. Predefinição: 
 Implemente o serviço SERVING_FILENAME.yaml atualizado no seu cluster do Knative:
kubectl apply -f SERVING_FILENAME.yamlValide a instalação do Istio confirmando que o
istio-ingressgatewayreside no espaço de nomes especificado:kubectl get svc istio-ingressgateway -n ISTIO_NAMESPACESubstitua ISTIO_NAMESPACE pelo espaço de nomes onde instalou o Istio. Predefinição:
istio-systemResultado:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.232.10.190 34.123.5.116 15021:30337/TCP,80:32549/TCP,443:31210/TCP 119m
Migrar um serviço
Para migrar um serviço, implementa o ficheiro de configuração YAML do serviço no cluster do Knative.
Exporte o seu serviço Knative serving para um ficheiro YAML local executando o seguinte comando:
gcloud run services describe SERVICE --format export --namespace NAMESPACE --cluster CLUSTER --platform gke > FILENAME.yamlSubstituição:
SERVICEcom o nome do seu serviço Knative Serving.NAMESPACEcom o espaço de nomes onde o seu serviço está a ser executado.CLUSTERcom o nome do cluster onde o seu serviço está a ser executado.FILENAMEcom um nome de ficheiro único à sua escolha.
Modifique o ficheiro
FILENAME.yamlexportado para remover configurações de serviço Knative indesejadas eliminando qualquer um dos seguintes atributos e os respetivos valores:metadata.annotations.kubectl.kubernetes.io/last-applied-configurationmetadata.managedFieldsspec.template.spec.containers.readinessProbesspec.template.spec.enableServiceLinksPor exemplo, pode ter de remover a seguinte configuração dos atributos
spec:>template:>spec:>containers::... readinessProbe: successThreshold: 1 tcpSocket: {} ...
Implemente o ficheiro
.yamlmodificado no seu cluster do Knative:kubectl apply -f SERVICE.yamlSubstitua SERVICE pelo nome do ficheiro de configuração do seu serviço.
Aceda ao seu serviço implementado através de um domínio de teste ou de comandos
cURL. Pode usar um serviço DNS de caráter universal para testar o acesso externo ao seu serviço. Consulte a secção configurar DNS nos documentos do Knative para ver mais opções.Para usar o DNS mágico (sslip.io), execute o seguinte comando.
Tenha em atenção que também pode usar diretamente sslip.io.
kubectl apply -f https://github.com/knative/serving/releases/download/knative-vVERSION/serving-default-domain.yamlSubstitua VERSION pela sua versão do Knative Serving.
Exemplo:
kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.3.0/serving-default-domain.yaml
Migrar tráfego para o seu serviço
Depois de testar os serviços implementados recentemente e quando tiver tudo preparado para migrar todo o tráfego de produção, pode configurar o domínio personalizado e atualizar os registos DNS com a sua entidade de registo. Siga as instruções em Configurar domínios personalizados.