Я полагаю, что вас укусила kubectl
попытка записать предыдущее положение дел в {"metadata":{"annotation":{"kubectl.kubernetes.io/last-applied-configuration": "GINORMOUS string"}}}
, как описано здесь . Проблемы возникают не у самого Ingress
.
В вашем случае, поскольку входной объект очень большой, я думаю, вам придется использовать kubectl replace
вместо apply
, так как (а) у вас, кажется, все равно есть полная декларация (б) я не думаю, что kubectl replace
пытается перехватить эту аннотацию, если только явно не предоставлено --save-config=true
- replace
Отдельно от вашего вопроса, если вы еще не знаете, не нужно объявлять каждый Ingress
в одном ресурсе - это намного, намного, намного, намного проще в управлениии рассуждать о Ingress
ресурсах, когда они различны
Таким образом, ваша конфигурация:
apiVersion: voyager.appscode.com/v1beta1
kind: Ingress
metadata:
name: generated-ingress
namespace: default
spec:
tls:
- secretName: ssl-cert-eample-domain.com
hosts:
- example-domain.com
# Repeated for each domain using SSL
rules:
- host: '*'
http:
paths:
- backend:
serviceName: the-backend
servicePort: '80'
- host: example-domain.com
http:
paths:
- backend:
serviceName: the-backend
servicePort: '80'
headerRules:
- X-HTTPS YES
станет:
apiVersion: voyager.appscode.com/v1beta1
kind: Ingress
metadata:
name: star-domain
namespace: default
spec:
rules:
- host: '*'
http:
paths:
- backend:
serviceName: the-backend
servicePort: '80'
, а затем будет повторять эту структуру для каждогоодин из доменов:
apiVersion: voyager.appscode.com/v1beta1
kind: Ingress
metadata:
name: example-domain
namespace: default
spec:
tls:
- secretName: ssl-cert-example-domain.com
hosts:
- example-domain.com
rules:
- host: example-domain.com
http:
paths:
- backend:
serviceName: the-backend
servicePort: '80'
headerRules:
- X-HTTPS YES
также избыточно ставить ingress
в metadata: name:
ресурса Ingress
, так как при вводе его имени вам нужно будет сказатьkubectl describe ingress/generated-ingress