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

Obedeça aos seguintes requisitos para implantar o Tanzu Package for Contour Ingress.

Componentes do pacote de contorno

O pacote do Contour Ingress instala dois contêineres no cluster: Envoy e Contour. Para obter mais informações, consulte https://projectcontour.io/. Os contêineres são extraídos do registro público VMware especificado no Repositório de Pacotes.
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.

  1. 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"
    
  2. Instale o pacote do Contour Ingress.
    kubectl apply -f contour.yaml

Configuração do pacote de contorno

Os valores de configuração do controlador do Contour Ingress são definidos em contour-data-values.yaml.
Tabela 1. Parâmetros de configuração do Contour Ingress
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

v1.17.3_vmware.1

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.