O Contour é um controlador de entrada do Kubernetes que usa o proxy reverso do Envoy. Instale o Tanzu Package for Contour Ingress para expor rotas de entrada para serviços em execução em clusters TKG 2.
Requisitos do pacote
- Provisione um cluster TKG 2. Consulte Provisionando clusters do TKG 2 em Supervisor.
- Conecte-se ao cluster do TKG 2. Consulte Gerenciando identidade e acesso para clusters TKG 2 em Supervisor.
- Instale os pré-requisitos do pacote Tanzu. Consulte Instalar os pré-requisitos do pacote Tanzu usando o Kubectl
Componentes do pacote de contorno
Contêiner | Tipo de recurso | Réplicas | Descrição |
---|---|---|---|
Enviado | DaemonSet | 3 | Proxy reverso de alto desempenho |
Contorno | Implantação | 2 | Servidor de gerenciamento e configuração do Envoy |
Instalar o pacote de contorno
Instale o pacote do Contour.
- Crie a especificação
contour.yaml
.apiVersion: v1 kind: ServiceAccount metadata: name: contour-sa namespace: tkg-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: contour-role-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: contour-sa namespace: tkg-system --- apiVersion: packaging.carvel.dev/v1alpha1 kind: PackageInstall metadata: name: contour namespace: tkg-system spec: serviceAccountName: contour-sa packageRef: refName: contour.tanzu.vmware.com versionSelection: constraints: 1.20.2+vmware.1-tkg.1 values: - secretRef: name: contour-data-values --- apiVersion: v1 kind: Secret metadata: name: contour-data-values namespace: tkg-system stringData: values.yml: | --- contour: pspNames: "vmware-system-restricted"
- Instale o pacote do Contour Ingress.
kubectl apply -f contour.yaml
Configuração do pacote de contorno
contour-data-values.yaml
.
Parâmetro | Descrição | Tipo | Padrão |
---|---|---|---|
Infrastructure_provider | Provedor de Infraestrutura. Valores com suporte: vsphere, aws, azure | seqüência de caracteres | Parâmetro obrigatório |
contour.namespace | Namespace no qual o contorno será implantado | seqüência de caracteres | tanzu-system-ingress |
contour.config.requestTimeout | Tempo limite da solicitação do cliente a ser passado para o Envoy | time.Duration | 0s (Consulte a seção abaixo para obter detalhes) |
contour.config.server.xdsServerType | Tipo de servidor XDS a ser usado: Valores com suporte: contour ou envoy | seqüência de caracteres | Nulo |
contour.config.tls.minimumProtocolVersion | Versão mínima de TLS que o Contour negociará | seqüência de caracteres | 1,1 |
contour.config.tls.fallbackCertificate.name | Nome do segredo que contém o certificado de fallback para solicitações que não correspondem ao SNI definido para um vhost | seqüência de caracteres | Nulo |
contour.config.tls.fallbackCertificate.namespace | Namespace do segredo que contém o certificado de fallback | seqüência de caracteres | Nulo |
contour.config.tls.envoyClientCertificate.name | Nome do segredo a ser usado como certificado do cliente, chave privada para conexão TLS com o serviço de back-end | seqüência de caracteres | Nulo |
contour.config.tls.envoyClientCertificate.namespace | Namespace do segredo a ser usado como certificado de cliente, chave privada para conexão TLS com o serviço de back-end | seqüência de caracteres | Nulo |
contour.config.leaderelection.configmapName | Nome do configmap a ser usado para a seleção do líder de contorno | seqüência de caracteres | líder eleito |
contour.config.leaderelection.configmapNamespace | Namespace do configmap de seleção de líder de contorno | seqüência de caracteres | tanzu-system-ingress |
contour.config.disablePermitInsecure | Desabilita o campo permitInsecure do ingressroute | booliano | falso |
contour.config.accesslogFormat | Formato do log de acesso | seqüência de caracteres | enviado |
contour.config.jsonFields | Campos que serão registrados | matriz de strings | documento do pacote envoy |
contour.config.useProxyProtocol | https://projectcontour.io/guides/proxy-proto/ | booliano | falso |
contour.config.defaultHTTPVersions | Versões HTTP que o Contour deve programar o Envoy para servir | matriz de strings | "HTTP/1.1 HTTP2" |
contour.config.timeouts.requestTimeout | O tempo limite para uma solicitação inteira | time.Duration | Nulo (o tempo limite está desativado) |
contour.config.timeouts.connectionIdleTimeout | O tempo de espera antes de encerrar uma conexão ociosa | time.Duration | anos 60 |
contour.config.timeouts.streamIdleTimeout | O tempo de espera antes de encerrar uma solicitação ou fluxo sem atividade | time.Duration | 5m |
contour.config.timeouts.maxConnectionDuration | O tempo de espera antes de encerrar uma conexão, independentemente da atividade ou não | time.Duration | Nulo (o tempo limite está desativado) |
contour.config.timeouts.ConnectionShutdownGracePeriod | O tempo de espera entre o envio de um GOAWAY inicial e final | time.Duration | 5s |
contour.config.cluster.dnsLookupFamily | dns-lookup-family a ser usado para solicitações de upstream para serviços do tipo externalName de uma rota HTTPProxy | seqüência de caracteres | Nulo (valores compatíveis: auto, v4, v6) |
contour.config.debug | Ativar a depuração de contorno | booliano | falso |
contour.config.ingressStatusAddress | O endereço a ser definido no status de cada recurso do Ingress | seqüência de caracteres | Nulo |
contour.certificate.duration | Duração do certificado de contorno | time.Duration | 8760h |
contour.certificate.renewAntes | Duração antes do certificado de contorno deve ser renovado | time.Duration | 360h |
contour.deployment.replicas | Nº de réplicas de contorno | inteiro | 2 |
contour.image.repository | Localização do repositório com a imagem de contorno. O padrão é o registro público VMware. Altere esse valor se você estiver usando um repositório privado (por exemplo, ambiente air-gapped). | seqüência de caracteres | projects.registry.vmware.com/tkg |
contour.image.name | Nome da imagem de contorno | seqüência de caracteres | contorno |
contour.image.tag | Marca de imagem de contorno. Esse valor pode precisar ser atualizado se você estiver atualizando a versão do Contour. | seqüência de caracteres | v1.11.0_vmware.1 |
contour.image.pullPolicy | Política de extração de imagem de contorno | seqüência de caracteres | IfNotPresent |
envoy.image.repository | Localização do repositório com a imagem do Envoy. O padrão é o registro público VMware. Altere esse valor se você estiver usando um repositório privado (por exemplo, ambiente air-gapped). | seqüência de caracteres | projects.registry.vmware.com/tkg |
envoy.image.name | Nome da imagem do enviado | seqüência de caracteres | enviado |
envoy.image.tag | Etiqueta de imagem do Envoy. Esse valor pode precisar ser atualizado se você estiver atualizando a versão do Envoy. | seqüência de caracteres |
|
envoy.image.pullPolicy | Política de pull de imagem do Envoy | seqüência de caracteres | IfNotPresent |
envoy.hostPort.enable | Sinalizar para expor as portas do Envoy no host | booliano | verdadeiro |
envoy.hostPort.http | Porta do host HTTP do Envoy | inteiro | 80 |
envoy.hostPort.https | Porta do host HTTPS do Envoy | inteiro | 443 |
envoy.service.type | Tipo de serviço para expor o envoy. Valores com suporte: ClusterIP, NodePort, LoadBalancer | seqüência de caracteres | Parâmetro obrigatório para vSphere: NodePort ou LoadBalancer, AWS: LoadBalancer, Azure: LoadBalancer |
envoy.service.annotations | Anotações de serviço do Envoy | Mapa (valores-chave) | Mapa vazio |
envoy.service.externalTrafficPolicy | Política de tráfego externo do serviço de enviado. Valores com suporte: Local, Cluster | seqüência de caracteres | Cluster |
envoy.service.nodePort.http | NodePort desejado para serviço do tipo NodePort usado para solicitações HTTP | inteiro | Nulo - o Kubernetes atribui uma porta de nó dinâmico |
envoy.service.nodePort.https | nodePort desejado para serviço do tipo NodePort usado para solicitações HTTPS | inteiro | Nulo - o Kubernetes atribui uma porta de nó dinâmico |
envoy.deployment.hostNetwork | Executar o envoy no hostNetwork | booliano | falso |
envoy.service.aws.LBType | Tipo de AWS LB a ser usado para expor o serviço do envoy. Valores com suporte: classic, nlb | seqüência de caracteres | clássico |
envoy.loglevel | Nível de log a ser usado para o envoy | seqüência de caracteres | informações |
Tempo limite da rota para downloads de arquivos
O parâmetro contour.config.requestTimeout
define a duração do tempo limite da rota de contorno. O valor padrão é 0s
. Se você estiver usando o Contorno para a transferência de arquivos, talvez seja necessário ajustar esse valor.
De acordo com a documentação do Contour, um valor de tempo limite de 0s
direciona o Contour para usar o tempo limite do Envoy. De acordo com a documentação do Envoy, o Envoy tem um tempo limite padrão de 15 segundos. Além disso, o Envoy espera que toda a operação de solicitação-resposta seja concluída dentro do intervalo de tempo limite.
Isso significa que, com a configuração padrão de tempo limite do contorno de 0s
, a transferência de arquivos deve ser concluída em 15 segundos. Para transferências de arquivos grandes, esse tempo pode não ser suficiente. Para desativar o tempo limite padrão do Envoy, defina o valor contour.config.requestTimeout
como 0
.