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