我想知道是否有与部署中类似的ingress配置版本控制。假设有一个错误的配置,我想恢复到以前的配置。我想了解ingress YAML配置中的generation
。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/service-match: 'new-nginx: header("foo", /^bar$/)' #Canary release rule. In this example, the request header is used.
nginx.ingress.kubernetes.io/service-weight: 'new-nginx: 50,old-nginx: 50' #The route weight.
creationTimestamp: null
generation: 1
name: nginx-ingress
selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/nginx-ingress
spec:
rules: ##The Ingress rule.
- host: foo.bar.com
http:
paths:
- backend:
serviceName: new-nginx
servicePort: 80
path: /
- backend:
serviceName: old-nginx
servicePort: 80
path: /
Kubernetes本身并没有提供这一功能,像Rancher这样的管理工具也没有。
如果你想做到这一点,你需要一个基础设施作为代码工具,比如Terreform、ansible等。这些工具的配置文件可以在repo中进行版本控制。
即使没有这些,您也可以独立导出givingingress yaml,并将其提交给repo。
查看解决方案的方式略有不同-您可以使用gitOps。我的意思是,你可以把所有的yaml放在git repo中,在集群上安装ArgoCD,然后让ArgoCD为你做同步。当您意识到您在yaml文件中搞砸了某个东西时,只需在git repo中恢复提交即可。这样你就可以保持历史,得到一个优雅而不固执己见的解决方案。