Como obter compatibilidade entre a propriedade do ingress e o cliente-go do Kubernetes?
Cenário
A estrutura de ingress do Kubernetes não contém o atributo property. Portanto, a entrada criada pelo client-go por meio da chamada da API não contém o atributo dproperty. O CCE fornece uma solução para garantir a compatibilidade com o client-go do Kubernetes.
Solução
Ao usar client-go para criar uma instância de ingress, faça a seguinte declaração na annotation:
kubernetes.io/ingress.property: '[{"host":"test.com","path":"/test","matchmode":"STARTS_WITH"},{"host":"test.com","path":"/dw","matchmode":"EQUAL_TO"}]'
Regra de correspondência: quando um usuário chama a interface Kubernetes do CCE para criar uma instância de ingress, o CCE tenta corresponder os campos host e path nas regras de ingress. Se os campos host e path nas regras de ingress forem os mesmos da anotação, o CCE injetará o atributo property no caminho. O seguinte é um exemplo:
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
O formato após a conversão é o seguinte:
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 |
Descrição |
---|---|---|
host |
String |
Configuração de nome de domínio. Se este parâmetro não for definido, o path será automaticamente correspondido. |
path |
String |
Caminho de correspondência. |
ingress.beta.kubernetes.io/url-match-mode |
String |
Política de correspondência de rotas. Os valores são os seguintes:
|