¿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
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:
|