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/ Preguntas frecuentes/ Redes/ Configuración de la red/ ¿Cómo puedo lograr la compatibilidad entre la propiedad de entrada y el client-go de Kubernetes?
Actualización más reciente 2023-08-08 GMT+08:00

¿Cómo puedo lograr la compatibilidad entre la propiedad de entrada y el client-go de Kubernetes?

Escenario

La estructura de entrada de Kubernetes no contiene el atributo property. Por lo tanto, la entrada creada por la invocación a la API client-go no contiene el atributo property. CCE proporciona una solución para garantizar la compatibilidad con Kubernetes client-go.

Solución

Cuando utilice client-go para crear una instancia de ingreso, realice la siguiente declaración en el annotation:

kubernetes.io/ingress.property: '[{"host":"test.com","path":"/test","matchmode":"STARTS_WITH"},{"host":"test.com","path":"/dw","matchmode":"EQUAL_TO"}]'

Matching rule: Cuando un usuario llama a la interfaz de Kubernetes de CCE para crear una instancia de ingreso, CCE intenta hacer coincidir los campos host y path en las reglas de ingreso. Si los campos host y path de las reglas de ingreso son los mismos que los de la anotación, CCE inyecta el atributo property en la ruta de acceso. A continuación se presenta un ejemplo:

kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: test
  namespace: default
  resourceVersion: '2904229'
  generation: 1
  labels:
    isExternal: 'true'
    zone: data
  annotations:
    kubernetes.io/ingress.class: cce
    kubernetes.io/ingress.property: '[{"host":"test.com","path":"/test","matchmode":"STARTS_WITH"},{"Path":"/dw","MatchMode":"EQUAL_TO"}]'
spec:
  rules:
     - host: test.com
       http:
        paths:
          - path: /ss
            backend:
              serviceName: zlh-test
              servicePort: 80
          - path: /dw
            backend:
              serviceName: zlh-test
              servicePort: 80

El formato después de la conversión es el siguiente:

kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: test
  namespace: default
  resourceVersion: '2904229'
  generation: 1
  labels:
    isExternal: 'true'
    zone: data
  annotations:
    kubernetes.io/ingress.class: cce
    kubernetes.io/ingress.property: '[{"host":"test.com","path":"/ss","matchmode":"STARTS_WITH"},{"host":"","path":"/dw","matchmode":"EQUAL_TO"}]'
spec:
  rules:
     - host: test.com
       http:
        paths:
          - path: /ss
            backend:
              serviceName: zlh-test
              servicePort: 80
            property:
              ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
          - path: /dw
            backend:
              serviceName: zlh-test
              servicePort: 80
Tabla 1 Descripciones de parámetros clave

Parámetro

Tipo

Descripción

host

String

Configuración del nombre de dominio.

Si este parámetro no está definido, se hace coincidir automáticamente path.

path

String

Camino coincidente.

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

String

Política de coincidencia de rutas. Los valores son los siguientes:

  • REGEX: indica coincidencia de expresiones regulares.
  • STARTS_WITH: indica coincidencia de prefijo.
  • EQUAL_TO: indica la coincidencia exacta.