Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ Cloud Container Engine/ Guia de usuário/ Rede/ Ingresses/ Ingresses de Nginx/ Uso do kubectl para criar um ingress de Nginx
Atualizado em 2024-11-28 GMT+08:00

Uso do kubectl para criar um ingress de Nginx

Cenário

Esta seção usa uma carga de trabalho do Nginx como exemplo para descrever como criar um ingress de Nginx usando o kubectl.

Pré-requisitos

  • O complemento nginx-ingress foi instalado em um cluster. Para mais detalhes, consulte Instalar o complemento.
  • Um ingress fornece acesso à rede para cargas de trabalho de back-end. Certifique-se de que uma carga de trabalho esteja disponível em um cluster. Se nenhuma carga de trabalho estiver disponível, implemente uma carga de trabalho referindo-se a Criação de uma Implantação, Criação de um StatefulSet ou Criação de um DaemonSet.
  • Um Serviço ClusterIP ou NodePort foi configurado para a carga de trabalho. Para obter detalhes sobre como configurar o Serviço, consulte ClusterIP ou NodePort.

Descrição de ingress de networking.k8s.io/v1

Em clusters do CCE de v1.23 ou posterior, a versão de ingress é comutada para networking.k8s.io/v1.

Comparada com v1beta1, v1 tem as seguintes diferenças nos parâmetros:

  • O tipo de ingress é alterado de kubernetes.io/ingress.class em annotations para spec.ingressClassName.
  • O formato de backend é alterado.
  • O parâmetro pathType deve ser especificado para cada caminho. As opções são as seguintes:
    • ImplementationSpecific: o método de correspondência depende do Ingress Controller. O método de correspondência definido por ingress.beta.kubernetes.io/url-match-mode é usado no CCE, que é o mesmo que v1beta1.
    • Exact: correspondência exata do URL, que diferencia maiúsculas de minúsculas.
    • Prefix: correspondência com base no prefixo de URL separado por uma barra (/). A correspondência diferencia maiúsculas de minúsculas, e os elementos no caminho são correspondidos um a um. Um elemento path refere-se a uma lista de rótulos no caminho separados por uma barra (/).

Criar um ingress de Nginx

  1. Use o kubectl para se conectar ao cluster. Para mais detalhes, consulte Conexão a um cluster usando o kubectl.
  2. Crie um arquivo YAML chamado ingress-test.yaml. O nome do arquivo pode ser personalizado.

    vi ingress-test.yaml

    A partir do cluster v1.23, a versão de entrada é alternada de networking.k8s.io/v1beta1 para networking.k8s.io/v1. Para obter detalhes sobre as diferenças entre v1 e v1beta1, consulte Descrição de ingress de networking.k8s.io/v1.

    O seguinte usa HTTP como um exemplo para descrever como configurar o arquivo YAML:

    Se o nó estiver em um cluster de v1.23 ou posterior:
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress-test
    spec:
      rules:
        - host: ''
          http:
            paths:
              - path: /
                backend:
                  service:
                    name: <your_service_name>  # Replace it with the name of your target Service.
                    port:
                      number: <your_service_port>  # Replace it with the port number of your target Service.
                property:
                  ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
                pathType: ImplementationSpecific
      ingressClassName: nginx   # Nginx ingress is used.
    Se o nó estiver em um cluster de v1.21 ou anterior:
    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: ingress-test
      namespace: default
      annotations:
        kubernetes.io/ingress.class: nginx   # Nginx ingress is used.
    spec:
      rules:
        - host: ''
          http:
            paths:
              - path: '/'
                backend:
                  serviceName: <your_service_name>  # Replace it with the name of your target Service.
                  servicePort: <your_service_port>  # Replace it with the port number of your target Service.
    Tabela 1 Parâmetros principais

    Parâmetro

    Obrigatório

    Tipo

    Descrição

    kubernetes.io/ingress.class

    Sim (somente para clusters da v1.21 ou anterior)

    String

    nginx: indica que ingress de Nginx é usado. Esta opção não pode ser usada se o complemento nginx-ingress não estiver instalado.

    Esse parâmetro é obrigatório quando um ingress é criado chamando a API.

    ingressClassName

    Sim

    (somente para clusters da v1.23 ou posterior)

    String

    nginx: indica que Nginx ingress é usado. Esta opção não pode ser usada se o complemento nginx-ingress não estiver instalado.

    Esse parâmetro é obrigatório quando um ingress é criado chamando a API.

    host

    Não

    String

    Nome de domínio para acessar o Serviço. Por padrão, esse parâmetro é deixado em branco e o nome de domínio precisa ser totalmente correspondido. Certifique-se de que o nome de domínio tenha sido registrado e arquivado. Depois que uma regra de nome de domínio estiver configurada, você deve usar o nome de domínio para acesso.

    path

    Sim

    String

    Caminho de rota definido pelo usuário. Todas as solicitações de acesso externo devem corresponder ao host e ao path.

    NOTA:
    • A regra de correspondência do caminho de acesso de Nginx ingress é baseada no prefixo do caminho separado pela barra (/) e diferencia maiúsculas de minúsculas. Se o subcaminho separado por uma barra (/) corresponder ao prefixo, o acesso será normal. No entanto, se o prefixo for apenas uma parte da cadeia de caracteres no subcaminho, o acesso não será correspondido. Por exemplo, se o URL estiver definido como /healthz, /healthz/v1 será correspondido, mas /healthzv1 não será correspondido.
    • O caminho de acesso adicionado aqui deve existir na aplicação back-end. Caso contrário, o encaminhamento falha.

      Por exemplo, o URL de acesso padrão da aplicação Nginx é /usr/share/nginx/html. Ao adicionar /test à política de encaminhamento de ingress, certifique-se de que o URL de acesso da seu aplicação Nginx contenha /usr/share/nginx/html/test. Caso contrário, o erro 404 será retornado.

    ingress.beta.kubernetes.io/url-match-mode

    Não

    String

    Política de correspondência de rotas.

    Padrão: STARTS_WITH (correspondência de prefixo)

    Opções:

    • EQUAL_TO: correspondência exata
    • STARTS_WITH: correspondência de prefixo

    pathType

    Sim

    String

    Tipo de caminho. Este campo é suportado apenas por clusters de v1.23 ou posterior.
    • ImplementationSpecific: o método de correspondência depende do Ingress Controller. O método de correspondência definido por ingress.beta.kubernetes.io/url-match-mode é usado no CCE.
    • Exact: correspondência exata do URL, que diferencia maiúsculas de minúsculas.
    • Prefix: correspondência de prefixo, que diferencia maiúsculas de minúsculas. Com esse método, o caminho do URL é separado em vários elementos por barras (/) e os elementos são correspondidos um por um. Se cada elemento no URL corresponder ao caminho, os subcaminhos do URL poderão ser roteados normalmente.
      NOTA:
      • Durante a correspondência de prefixo, cada elemento deve ser exatamente correspondido. Se o último elemento do URL for a subcadeia do último elemento no caminho da solicitação, nenhuma correspondência será executada. Por exemplo, /foo/bar corresponde a /foo/bar/baz, mas não corresponde a /foo/barbaz.
      • Quando elementos são separados por barras (/), se o URL ou o caminho da requisição termina com uma barra (/), a barra (/) no final é ignorada. Por exemplo, /foo/bar corresponde a /foo/bar/.

    Veja exemplos de correspondência de caminho de ingress.

  3. Crie um ingress.

    kubectl create -f ingress-test.yaml

    Se forem exibidas informações semelhantes às seguintes, o ingress foi criado.

    ingress/ingress-test created

    Visualize o ingress criado.

    kubectl get ingress

    Se informações semelhantes às seguintes forem exibidas, o ingress foi criado com êxito e a carga de trabalho está acessível.

    NAME             HOSTS     ADDRESS          PORTS   AGE
    ingress-test     *         121.**.**.**     80      10s

  4. Digite http://121.**.**.**:80 na caixa de endereço do navegador para acessar a carga de trabalho (por exemplo, carga de trabalho do Nginx).

    121.**.**.** indica o endereço IP do balanceador de carga unificado.