Use este guia para migrar as cargas de trabalho para serem executadas na oferta de código aberto do Knative com o Google Kubernetes Engine. Em geral, para migrar suas cargas de trabalho, é preciso instalar o componente Knative Serving em um novo cluster do GKE e, em seguida, reimplantar cada um dos seus serviços nesse cluster do Knative.
Embora o uso, o gerenciamento e o suporte ao Knative de código aberto sejam escolhas e responsabilidades, a migração para o Knative oferece a você a oportunidade de continuar executando suas cargas de trabalho na plataforma do Google Kubernetes Engine.
Diferenças significativas:
- O suporte é limitado ao Google Kubernetes Engine. Entre em contato com a comunidade Knative para receber suporte.
- A Google Cloud CLI (
gcloud) é compatível apenas com o Google Kubernetes Engine. O Knative é compatível com os comandoskubectlekn. Saiba como instalar okn
Antes de começar
- Você precisa ter acesso a um novo cluster do GKE.
- É possível criar seu novo cluster no mesmo projeto ou em um novo Google Cloud .
- Seu cluster precisa atender aos requisitos do Knative.
- Saiba como criar um cluster:
- É necessário transferir manualmente as configurações do cluster para o novo cluster do Knative, incluindo, entre outros:
- Você precisa criar e configurar novos controles de acesso do IAM e do RBAC:
Como instalar o Knative no Google Kubernetes Engine
O Knative oferece várias opções de instalação e camadas de rede que você pode usar. As etapas de instalação do Knative a seguir usam o método do operador Knative e a camada de rede do Istio.
Instale o operador Knative:
Implante o operador no cluster:
kubectl apply -f https://github.com/knative/operator/releases/download/knative-vVERSION/operator.yamlSubstitua VERSION por uma versão do Knative Operator.
Exemplo:
kubectl apply -f https://github.com/knative/operator/releases/download/knative-v1.3.1/operator.yamlDefina a
kubectlCLI para usar o namespacedefault:kubectl config set-context --current --namespace=defaultVerifique se o operador foi criado com sucesso:
kubectl get deployment knative-operatorResultado:
NAME READY UP-TO-DATE AVAILABLE AGE knative-operator 1/1 1 1 6m43s
Instale o componente do Knative Serving:
Crie um arquivo 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-servingImplante o arquivo YAML no cluster:
kubectl apply -f SERVING_FILENAME.yamlSubstitua SERVING_FILENAME pelo arquivo YAML que você criou.
Instale o Istio com a injeção de arquivo secundário como a camada de rede:
Você tem a opção de executar e configurar uma instalação alternativa do Istio. Veja todas as opções de instalação do Istio no site do Knative. A instalação pode levar mais de 30 minutos.
Instale o Istio executando o seguinte comando com a sinalização
--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 padrão, o Istio é instalado no namespace
istio-system. Se você quiser configurar um namespace diferente, siga estas etapas:Para configurar um namespace personalizado para o Istio, anexe os atributos
spec.config.istioao arquivo 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"Substitua:
- LOCAL_GATEWAY_NAMESPACE é o namespace
em que você instalou o Knative Serving. Padrão:
knative-serving - ISTIO_NAMESPACE é o namespace em que
o Istio está instalado. Padrão:
istio-system
- LOCAL_GATEWAY_NAMESPACE é o namespace
em que você instalou o Knative Serving. Padrão:
Implante o serviço SERVING_FILENAME.yaml atualizado no cluster do Knative:
kubectl apply -f SERVING_FILENAME.yamlVerifique a instalação do Istio confirmando que
istio-ingressgatewayreside no namespace especificado:kubectl get svc istio-ingressgateway -n ISTIO_NAMESPACESubstitua ISTIO_NAMESPACE pelo namespace em que você instalou o Istio. Padrã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
Como migrar um serviço
Para migrar um serviço, implante o arquivo de configuração YAML do serviço no cluster Knative.
Exporte o serviço do Knative serving para um arquivo YAML local executando o seguinte comando:
gcloud run services describe SERVICE --format export --namespace NAMESPACE --cluster CLUSTER --platform gke > FILENAME.yamlSubstitua:
SERVICEpelo nome do serviço do Knative serving.NAMESPACEpelo namespace em que o serviço está sendo executado.CLUSTERpelo nome do cluster em que o serviço está em execução.FILENAMEpor um nome de arquivo exclusivo da sua escolha.
Modifique o arquivo
FILENAME.yamlexportado para remover as configurações indesejadas do Knative serving excluindo qualquer um dos seguintes atributos e os valores deles:metadata.annotations.kubectl.kubernetes.io/last-applied-configurationmetadata.managedFieldsspec.template.spec.containers.readinessProbesspec.template.spec.enableServiceLinksPor exemplo, talvez seja necessário remover a seguinte configuração dos atributos
spec:>template:>spec:>containers::... readinessProbe: successThreshold: 1 tcpSocket: {} ...
Implante o arquivo
.yamlmodificado no cluster do Knative:kubectl apply -f SERVICE.yamlSubstitua SERVICE pelo nome do arquivo de configuração do serviço.
Acesse o serviço implantado usando um domínio de teste ou comandos
cURL. É possível usar um serviço DNS curinga para testar o acesso externo ao seu serviço. Consulte a seção Como configurar o DNS nos documentos do Knative para ver mais opções.Para usar o Magic DNS (sslip.io), execute o seguinte comando.
Também é possível usar diretamente sslip.io.
kubectl apply -f https://github.com/knative/serving/releases/download/knative-vVERSION/serving-default-domain.yamlSubstitua VERSION pela versão do Knative Serving.
Exemplo:
kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.3.0/serving-default-domain.yaml
Como migrar o tráfego para o serviço
Depois de testar os serviços recém-implantados e estar pronto para migrar todo o tráfego de produção, configure o domínio personalizado e atualize os registros DNS com seu registrador. Siga as instruções em Como configurar domínios personalizados.