Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ Cloud Container Engine/ Guía del usuario/ Red/ Ingresos/ Ingresos de Nginx/ Uso de kubectl para crear una entrada de Nginx
Actualización más reciente 2024-09-10 GMT+08:00

Uso de kubectl para crear una entrada de Nginx

Escenario

Esta sección utiliza una carga de trabajo de Nginx como ejemplo para describir cómo crear una entrada de Nginx con kubectl.

Requisitos previos

  • El complemento nginx-ingress se ha instalado en un clúster. Para obtener más información, véase Instalación del complemento.
  • Un ingreso proporciona acceso a la red para cargas de trabajo backend. Asegúrese de que una carga de trabajo esté disponible en un clúster. Si no hay ninguna carga de trabajo disponible, desplegue una carga de trabajo haciendo referencia a Creación de una Deployment, Creación de un StatefulSet o Creación de un DaemonSet.
  • Se ha configurado un Service ClusterIP o NodePort para la carga de trabajo. Para obtener más información acerca de cómo configurar el Service, consulte ClusterIP o NodePort.
  • Si se utiliza HTTPS para el acceso externo, debe crear un secreto de IngressTLS por adelantado. Para obtener más información sobre cómo crear un secreto, consulte Creación de un secreto.

Descripción de ingreso de networking.k8s.io/v1

En los clústeres de CCE de v1.23 o posterior, la versión de ingreso se cambia a networking.k8s.io/v1.

Comparado con v1beta1, v1 tiene las siguientes diferencias en parámetros:

  • El tipo de entrada se cambia de kubernetes.io/ingress.class en annotations a spec.ingressClassName.
  • Se cambia el formato de backend.
  • El parámetro pathType debe especificarse para cada ruta. Las opciones son las siguientes:
    • ImplementationSpecific: El método de coincidencia depende del controlador de entrada. El método de coincidencia definido por ingress.beta.kubernetes.io/url-match-mode se usa en CCE, que es el mismo que v1beta1.
    • Exact: coincidencia exacta del URL, que distingue entre mayúsculas y minúsculas.
    • Prefix: coincidencia basada en el prefijo de URL separado por una barra diagonal (/). La coincidencia distingue entre mayúsculas y minúsculas, y los elementos de la ruta se hacen coincidir uno por uno. Un elemento de trazado hace referencia a una lista de etiquetas en el trazado separadas por una barra diagonal (/).

Creación de un ingreso de Nginx

  1. Utilice kubectl para conectarse al clúster. Para obtener más información, véase Conexión a un clúster con kubectl.
  2. Cree un archivo YAML denominado ingress-test.yaml. El nombre del archivo se puede personalizar.

    vi ingress-test.yaml

    A partir del clúster v1.23, la versión de ingreso cambia de networking.k8s.io/v1beta1 a networking.k8s.io/v1. Para obtener más información sobre las diferencias entre v1 y v1beta1, consulte Descripción de ingreso de networking.k8s.io/v1.

    A continuación se utiliza HTTP como ejemplo para describir cómo configurar el archivo YAML:

    Si el nodo está en un clúster de v1.23 o 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.
    Si el nodo está en un clúster de v1.21 o 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.
    Tabla 1 Parámetros de clave

    Parámetro

    Obligatorio

    Tipo

    Descripción

    kubernetes.io/ingress.class

    Sí (solo para los clústeres de v1.21 o anteriores)

    String

    nginx: indica que se utiliza la entrada de Nginx. Esta opción no se puede utilizar si el complemento de nginx-ingress no está instalado.

    Este parámetro es obligatorio cuando se crea una entrada invocando a la API.

    ingressClassName

    (solo para los clústeres de v1.23 o posterior)

    String

    nginx: indica que se utiliza la entrada de Nginx. Esta opción no se puede utilizar si el complemento de nginx-ingress no está instalado.

    Este parámetro es obligatorio cuando se crea una entrada invocando a la API.

    host

    No

    String

    Nombre de dominio para acceder al Service. De forma predeterminada, este parámetro se deja en blanco y el nombre de dominio debe coincidir completamente. Asegúrese de que el nombre de dominio ha sido registrado y archivado. Una vez configurada una regla de nombre de dominio, debe usar el nombre de dominio para tener acceso.

    path

    String

    Ruta de ruta definida por el usuario. Todas las solicitudes de acceso externo deben coincidir con host y path.

    NOTA:
    • La regla de coincidencia de ruta de acceso de entrada de Nginx se basa en el prefijo de ruta separado por la barra diagonal (/) y distingue entre mayúsculas y minúsculas. Si la ruta secundaria separada por una barra diagonal (/) coincide con el prefijo, el acceso es normal. Sin embargo, si el prefijo es solo una parte de la cadena de caracteres en la ruta secundaria, el acceso no coincide. Por ejemplo, si la dirección URL está establecida en /healthz, /healthz/v1 coincide, pero /healthzv1 no coincide.
    • La ruta de acceso agregada aquí debe existir en la aplicación de backend. De lo contrario, el reenvío falla.

      Por ejemplo, el URL de acceso predeterminado de la aplicación Nginx es /usr/share/nginx/html. Al agregar /test a la política de reenvío de ingreso, asegúrese de que su aplicación de Nginx contiene el mismo URL, es decir, /usr/share/nginx/html/test, de lo contrario, se devuelve 404.

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

    No

    String

    Política de coincidencia de rutas.

    Predeterminado: STARTS_WITH (Coincidencia de prefijo)

    Opciones:

    • EQUAL_TO: coincidencia exacta
    • STARTS_WITH: coincidencia de prefijos
    • REGEX: coincidencia de expresiones regulares

    pathType

    String

    Tipo de ruta. Este campo solo es compatible con los clústeres de v1.23 o posterior.

    • ImplementationSpecific: El método de coincidencia depende del controlador de entrada. El método de emparejamiento definido por ingress.beta.kubernetes.io/url-match-mode se usa en CCE.
    • Exact: coincidencia exacta del URL, que distingue entre mayúsculas y minúsculas.
    • Prefix: coincidencia basada en el prefijo de URL separado por una barra diagonal (/). La coincidencia distingue entre mayúsculas y minúsculas, y los elementos de la ruta se hacen coincidir uno por uno. Un elemento de trazado hace referencia a una lista de etiquetas en el trazado separadas por una barra diagonal (/).

  3. Cree una entrada.

    kubectl create -f ingress-test.yaml

    Si se muestra la información similar a la siguiente, se ha creado la entrada.

    ingress/ingress-test created

    Vea la entrada creada.

    kubectl get ingress

    Si se muestra información similar a la siguiente, la entrada se ha creado correctamente y se puede acceder a la carga de trabajo.

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

  4. Ingrese http://121.**.**.**:80 en el cuadro de dirección del navegador para acceder a la carga de trabajo (por ejemplo, Carga de trabajo de Nginx).

    121.**.**.** indica la dirección IP del balanceador de carga unificado.