sem*_*ral 5 kubernetes kubernetes-helm
我们有 Helm 3.0.3 和 1.18 k8s,一年以来我们没有遇到过像下面这样的任何问题。我们通过 helm 将多个微服务部署到 k8s,到目前为止一切正常。但即使我们没有对服务字段进行任何更改,我们也会收到如下错误。
这是我如何部署到 k8s 的命令。当我在 k8s 中卸载该服务并开始重新构建时,它可以正常工作,但是当我需要推送新更改时?再次面对这个错误。
+ helm upgrade --install --debug --force xx-ui-dev --values values.dev.yaml --namespace dev --set image.tag=608 .
Run Code Online (Sandbox Code Playgroud)
错误
history.go:52: [debug] getting history for release xx-ui-dev
upgrade.go:120: [debug] preparing upgrade for xx-ui-dev
upgrade.go:128: [debug] performing update for xx-ui-dev
upgrade.go:292: [debug] creating upgraded release for xx-ui-dev
client.go:173: [debug] checking 7 resources for changes
client.go:432: [debug] Replaced "xx-ui-dev" with kind NetworkPolicy for kind NetworkPolicy
client.go:432: [debug] Replaced "xx-ui-dev" with kind ServiceAccount for kind ServiceAccount
client.go:432: [debug] Replaced "xx-ui-dev-auth" with kind Secret for kind Secret
client.go:432: [debug] Replaced "xx-ui-dev-config" with kind ConfigMap for kind ConfigMap
client.go:205: [debug] error updating the resource "xx-ui-dev":
failed to replace object: Service "xx-ui-dev" is invalid: spec.clusterIP: Invalid value: "": field is immutable
client.go:432: [debug] Replaced "xx-ui-dev" with kind Deployment for kind Deployment
client.go:432: [debug] Replaced "xx-ui-dev" with kind HorizontalPodAutoscaler for kind HorizontalPodAutoscaler
upgrade.go:351: [debug] warning: Upgrade "xx-ui-dev" failed: failed to replace object: Service "xx-ui-dev" is invalid: spec.clusterIP: Invalid value: "": field is immutable
Error: UPGRADE FAILED: failed to replace object: Service "xx-ui-dev" is invalid: spec.clusterIP: Invalid value: "": field is immutable
helm.go:84: [debug] failed to replace object: Service "xx-ui-dev" is invalid: spec.clusterIP: Invalid value: "": field is immutable
Run Code Online (Sandbox Code Playgroud)
服务.yaml
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: 50003
protocol: TCP
name: http
selector:
app.kubernetes.io/name: {{ include "xx-ui.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
tier: backend
Run Code Online (Sandbox Code Playgroud)
values.dev.yaml
service:
type: ClusterIP
port: 80
Run Code Online (Sandbox Code Playgroud)
使用--force
with 时helm upgrade
,helm 使用替换策略而不是补丁。
看看下面的掌舵代码:
if force {
var err error
obj, err = helper.Replace(target.Namespace, target.Name, true, target.Object)
...
} else {
patch, patchType, err := createPatch(target, currentObj)
...
// send patch to server
obj, err = helper.Patch(target.Namespace, target.Name, patchType, patch, nil)
}
Run Code Online (Sandbox Code Playgroud)
替换策略导致您看到的错误。如果您想知道为什么会发生这种情况,请查看此 kubectl 问题。
归档时间: |
|
查看次数: |
6668 次 |
最近记录: |