kubernetes ingress 是否有任何版本控制?
Are there any versioning for kubernetes 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 中进行版本控制。
即使没有这些,您也可以独立导出一个 give ingress yaml,并将其提交到一个 repo。
查看解决方案的方式略有不同 - 您可以使用 gitOps。我的意思是,您可以将所有 yaml 放在 git 存储库中,在您的集群上安装 ArgoCD,然后让 ArgoCD 为您进行同步。当您意识到您在 yaml 文件中搞砸了某些东西时,只需恢复 git 存储库中的提交。这样您就可以维护历史并获得优雅的非固执己见的解决方案。
我想知道入口配置是否有类似于部署中的版本控制。假设有一个错误的配置我想恢复到以前的配置。
我想了解入口 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 中进行版本控制。
即使没有这些,您也可以独立导出一个 give ingress yaml,并将其提交到一个 repo。
查看解决方案的方式略有不同 - 您可以使用 gitOps。我的意思是,您可以将所有 yaml 放在 git 存储库中,在您的集群上安装 ArgoCD,然后让 ArgoCD 为您进行同步。当您意识到您在 yaml 文件中搞砸了某些东西时,只需恢复 git 存储库中的提交。这样您就可以维护历史并获得优雅的非固执己见的解决方案。