Helm: рд╣реЗрд▓реНрдо 3 - nginx рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ - spec.clusterIP: рдЕрдорд╛рдиреНрдп рдорд╛рди: "": рдлрд╝реАрд▓реНрдб рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рд╕рд┐рддре░ 2019  ┬╖  67рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: helm/helm

рдЪрд╛рд░реНрдЯ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд/рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

./рд╣реЗрд▓реНрдо рдЕрдкрдЧреНрд░реЗрдб --рдЗрдВрд╕реНрдЯреЙрд▓
--рд╕реЗрдЯ rbac.create=false
--рд╕реЗрдЯ рдирд┐рдпрдВрддреНрд░рдХ.рдкреНрд░рддрд┐рдХреГрддрд┐рдЧрдгрдирд╛=2
--рд╕реЗрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░.service.loadBalancerIP=$ip
--рдкреНрд░рддреАрдХреНрд╖рд╛ рдореБрдЦреНрдп-рдкреНрд░рд╡реЗрд╢ рд╕реНрдерд┐рд░/nginx-рдкреНрд░рд╡реЗрд╢

(рдЬрд╣рд╛рдВ $ip рдПрдХ рдЖрдИрдкреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 10.0.0.1)

рдпрд╣ рдПрдХ CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдкрд╣рд▓реА рдмрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ, рдЕрдЧрд▓реА рдмрд╛рд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рд╣реИред

рдпрд╣ рдареАрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд░рди рдкрд░, рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ:

_client.go:339: рдкреИрдЪ рд╕реЗрд╡рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛: "рдореБрдЦреНрдп-рдкреНрд░рд╡реЗрд╢-nginx-рдкреНрд░рд╡реЗрд╢-рдирд┐рдпрдВрддреНрд░рдХ" (рд╕реЗрд╡рд╛ "рдореБрдЦреНрдп-рдкреНрд░рд╡реЗрд╢-nginx-рдкреНрд░рд╡реЗрд╢-рдирд┐рдпрдВрддреНрд░рдХ" рдЕрдорд╛рдиреНрдп рд╣реИ: spec.clusterIP: рдЕрдорд╛рдиреНрдп рдорд╛рди: "": рдлрд╝реАрд▓реНрдб рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИ )
client.go:358: рд╕рдВрд╕рд╛рдзрди рдХреЗ рдордиреЛрд░рдВрдЬрди рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --force рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
client.go:339: рд╕реЗрд╡рд╛ рдкреИрдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛: "рдореБрдЦреНрдп-рдкреНрд░рд╡реЗрд╢-nginx-рдкреНрд░рд╡реЗрд╢-рдбрд┐рдлрд╝реЙрд▓реНрдЯ-рдмреИрдХрдПрдВрдб" (рд╕реЗрд╡рд╛ "рдореБрдЦреНрдп-рдкреНрд░рд╡реЗрд╢-nginx-рдкреНрд░рд╡реЗрд╢-рдбрд┐рдлрд╝реЙрд▓реНрдЯ-рдмреИрдХрдПрдВрдб" рдЕрдорд╛рдиреНрдп рд╣реИ: spec.clusterIP: рдЕрдорд╛рдиреНрдп рдорд╛рди: "" : рдлрд╝реАрд▓реНрдб рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИ)
client.go:358: рд╕рдВрд╕рд╛рдзрди рдХреЗ рдордиреЛрд░рдВрдЬрди рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --force рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рддреНрд░реБрдЯрд┐: рдЕрдкрдЧреНрд░реЗрдб рд╡рд┐рдлрд▓: рд╕реЗрд╡рд╛ "рдореБрдЦреНрдп-рдкреНрд░рд╡реЗрд╢-nginx-рдкреНрд░рд╡реЗрд╢-рдирд┐рдпрдВрддреНрд░рдХ" рдЕрдорд╛рдиреНрдп рд╣реИ: spec.clusterIP: рдЕрдорд╛рдиреНрдп рдорд╛рди: "": рдлрд╝реАрд▓реНрдб рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИ && рд╕реЗрд╡рд╛ "рдореБрдЦреНрдп-рдкреНрд░рд╡реЗрд╢-nginx-рдкреНрд░рд╡реЗрд╢-рдбрд┐рдлрд╝реЙрд▓реНрдЯ-рдмреИрдХрдПрдВрдб" рдЕрдорд╛рдиреНрдп рд╣реИ : spec.clusterIP: рдЕрдорд╛рдиреНрдп рдорд╛рди: "": рдлрд╝реАрд▓реНрдб рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИ_

рдореБрдЭреЗ рдпрд╣ рд╣реЗрд▓рдо рд╕реВрдЪреА рдореЗрдВ рднреА рдорд┐рд▓рддрд╛ рд╣реИ:

рдирд╛рдо рдирд╛рдо рд╕реНрдерд╛рди рд╕рдВрд╢реЛрдзрди рдЕрджреНрдпрддрди рд╕реНрдерд┐рддрд┐ рдЪрд╛рд░реНрдЯ
рдореБрдЦреНрдп рдкреНрд░рд╡реЗрд╢ рдбрд┐рдлрд╝реЙрд▓реНрдЯ 1 2019-09-06 13:17:33.8463781 -0400 EDT рддреИрдирд╛рдд nginx-ingress-1.18.0
рдореБрдЦреНрдп-рдкреНрд░рд╡реЗрд╢ рдбрд┐рдлрд╝реЙрд▓реНрдЯ 2 2019-09-06 13:21:11.6428945 -0400 EDT рд╡рд┐рдлрд▓ nginx-ingress-1.18.0

рдЗрд╕рд▓рд┐рдП, рд░рд┐рд▓реАрдЬ рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдореБрдЭреЗ рд╣реЗрд▓реНрдо 2 рдХреЗ рд╕рд╛рде рд╡рд╣ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред рдХреНрдпрд╛ рдпрд╣ рд╣реЗрд▓рдо 3 рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдХрд╛рд░рдг рд╣реИ рдпрд╛ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ? рдпрджрд┐ рдпрд╣ рдкреВрд░реНрд╡ рд╣реИ, рддреЛ рдореИрдВ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢ рдХреИрд╕реЗ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реВрдВ?

helm version рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ: version.BuildInfo{Version:"v3.0.0-beta.2", GitCommit:"26c7338408f8db593f93cd7c963ad56f67f662d4", GitTreeState:"clean", GoVersion:"go1.12.9"}

kubectl version рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ: рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рдВрд╕реНрдХрд░рдг: рд╕рдВрд╕реНрдХрд░рдгред рдЬрд╛рдирдХрд╛рд░реА {рдореЗрдЬрд░: "1", рдорд╛рдЗрдирд░: "12", рдЧрд┐рдЯрд╡рд░реНрд╕рди: "v1.12.0", GitCommit: "0ed33881dc4355495f623c6f22e7dd0b7632b7c0", GitTreeState: "рдХреНрд▓реАрди", рдмрд┐рд▓реНрдбрдбреЗрдЯ: "2018-09-27T17:05:32Z", GoVersion:"go1.10.4", рдХрдВрдкрд╛рдЗрд▓рд░:"gc", рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо:"linux/amd64"}
рд╕рд░реНрд╡рд░ рд╕рдВрд╕реНрдХрд░рдг: version.Info {рдореЗрдЬрд░: "1", рдорд╛рдЗрдирд░: "13", GitVersion: "v1.13.10", GitCommit: "37d169313237cb4ceb2cc4bef300f2ae3053c1a2", GitTreeState: "рдХреНрд▓реАрди", рдмрд┐рд▓реНрдбрдбреЗрдЯ: "2019-08-19T10:44: 49Z", GoVersion: "go1.1.13", рдХрдВрдкрд╛рдЗрд▓рд░: "gc", рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо: "linux/amd64"}

рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛/рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо (AKS, GKE, Minikube рдЖрджрд┐): AKS

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╣реЗрд▓реНрдо v3.0.0-rc.2 рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рд╕реЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рднреА рдЕрдЧрд░ рдореИрдВ --force рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЗрд▓реНрдо рдЕрдкрдбреЗрдЯ --рдЗрдВрд╕реНрдЯреЙрд▓ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реВрдВред --force рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рд╕рднреА 67 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рд╕рдВрднрд╡рдд: рд╣реЗрд▓реНрдо 3 рдореЗрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╣реБрдП рдмрджрд▓рд╛рд╡ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдЬрд╣рд╛рдВ рдЕрдм рдпрд╣ рдХреБрдмреЗрдХреНрдЯрд▓ рдХреЗ рд╕рдорд╛рди рддреАрди-рддрд░рдлрд╝рд╛ рдорд░реНрдЬ рдкреИрдЪ рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рджреЗрдЦреЗрдВ #6124

рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдХрджрдо рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрджреНрднреБрдд рд╣реЛрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

рдЬрд╝рд░реВрд░!

рдореИрдВ рдПрдХ рдЕрдХреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдпрд╛ред

рдореИрдВ MC_* рд╕рдВрд╕рд╛рдзрди рд╕рдореВрд╣ рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ IP рдмрдирд╛рддрд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдЙрд╕ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдИрдкреА рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдХреЛ $ip рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рд╣реИред

рдлрд┐рд░ рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрд╕ рдЖрджреЗрд╢ рдХреЛ рджреЛ рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛:

./рд╣реЗрд▓реНрдо рдЕрдкрдЧреНрд░реЗрдб --рдЗрдВрд╕реНрдЯреЙрд▓
--рд╕реЗрдЯ rbac.create=false
--рд╕реЗрдЯ рдирд┐рдпрдВрддреНрд░рдХ.рдкреНрд░рддрд┐рдХреГрддрд┐рдЧрдгрдирд╛=2
--рд╕реЗрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░.service.loadBalancerIP=$ip
--рдкреНрд░рддреАрдХреНрд╖рд╛ рдореБрдЦреНрдп-рдкреНрд░рд╡реЗрд╢ рд╕реНрдерд┐рд░/nginx-рдкреНрд░рд╡реЗрд╢

рдпрд╣ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ https://docs.microsoft.com/en-us/azure/aks/ingress-static-ip рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рджреЛ рдмрд╛рд░ рд╣реЗрд▓рдо рдЕрдкрдЧреНрд░реЗрдб --рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдореЗрд░реЗ рд╕реАрдЖрдИ/рд╕реАрдбреА рдореЗрдВ рд╕рд┐рдВрдЧрд▓ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди (рдмрд┐рдирд╛ рд╢рд░реНрдд) рд░рдЦрдирд╛ рд╣реИред

рдЕрдЧрд░ рдЖрдкрдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд╡рд┐рд╡рд░рдг рдЪрд╛рд╣рд┐рдП рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛? рдЕрдЧрд░ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдПрдХ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд╕рдкреНрддрд╛рд╣ рдХреЗ рд▓рд┐рдП рд╣реЗрд▓реНрдо рд╕рдорд┐рдЯ рдИрдпреВ рдореЗрдВ рдмрдВрдж рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред

рдЖрд╣ ... рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВред рд╢рд┐рдЦрд░ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ!

рдореИрдВ рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ

$ helm version --short
v3.0.0-beta.3+g5cb923e

nginx-ingress рдЪрд╛рд░реНрдЯ рдкрд╣рд▓реЗ рд░рди рдкрд░ рдареАрдХ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдкрдЧреНрд░реЗрдб рдкрд░ ...

$ helm upgrade --install first-chart stable/nginx-ingress --namespace infra
client.go:357: Cannot patch Service: "first-chart-nginx-ingress-controller" (Service "first-chart-nginx-ingress-controller" is invalid: spec.clusterIP: Invalid value: "": field is immutable)
client.go:376: Use --force to force recreation of the resource
client.go:357: Cannot patch Service: "first-chart-nginx-ingress-default-backend" (Service "first-chart-nginx-ingress-default-backend" is invalid: spec.clusterIP: Invalid value: "": field is immutable)
client.go:376: Use --force to force recreation of the resource
Error: UPGRADE FAILED: Service "first-chart-nginx-ingress-controller" is invalid: spec.clusterIP: Invalid value: "": field is immutable && Service "first-chart-nginx-ingress-default-backend" is invalid: spec.clusterIP: Invalid value: "": field is immutable
$ helm ls -n infra
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART               
first-chart     infra           1               2019-09-17 16:15:25.513997106 -0500 CDT deployed        nginx-ingress-1.20.0
first-chart     infra           2               2019-09-17 16:15:30.845249671 -0500 CDT failed          nginx-ingress-1.20.0

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ nginx-ingress рдЪрд╛рд░реНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рд╣реИ, рд╣реЗрд▓реНрдо 3 рдирд╣реАрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЪрд╛рд░реНрдЯ рд╣рдореЗрд╢рд╛ controller.service.clusterIP = "" рдФрд░ defaultBackend.service.clusterIP = "" рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдЖрдк controller.service.omitClusterIP=true рдФрд░ defaultBackend.service.omitClusterIP=true ред

рд╕реВрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ:
https://github.com/helm/charts/blob/master/stable/nginx-ingress/values.yaml#L321
https://github.com/helm/charts/blob/master/stable/nginx-ingress/templates/controller-service.yaml#L22

рд╕рдорд╛рдзрд╛рди:

$ helm upgrade --install ingress-test stable/nginx-ingress --set controller.service.omitClusterIP=true --set defaultBackend.service.omitClusterIP=true

рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ

helm upgrade --install ingx stable/nginx-ingress -f ingx-values.yaml                                            юВ▓ 1 тЖ╡
client.go:357: Cannot patch Service: "ingx-nginx-ingress-controller" (Service "ingx-nginx-ingress-controller" is invalid: spec.clusterIP: Invalid value: "": field is immutable)
client.go:376: Use --force to force recreation of the resource
client.go:357: Cannot patch Service: "ingx-nginx-ingress-default-backend" (Service "ingx-nginx-ingress-default-backend" is invalid: spec.clusterIP: Invalid value: "": field is immutable)
client.go:376: Use --force to force recreation of the resource
Error: UPGRADE FAILED: Service "ingx-nginx-ingress-controller" is invalid: spec.clusterIP: Invalid value: "": field is immutable && Service "ingx-nginx-ingress-default-backend" is invalid: spec.clusterIP: Invalid value: "": field is immutable

ingx-values.yaml

rbac:
  create: true
controller:
  service:
    externalTrafficPolicy: Local
    omitClusterIP: true
  autoscaling:
    enabled: true
    minReplicas: 2
    maxReplicas: 100
    targetCPUUtilizationPercentage: "70"
    targetMemoryUtilizationPercentage: "70"
defaultBackend:
  service:
    omitClusterIP: true

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдиреАрдЪреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдирд╣реАрдВ рд╣реИ

рдкрддрд╡рд╛рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ INGx рд╕реНрдерд┐рд░/nginx-рдкреНрд░рд╡реЗрд╢ -f ingx-values.yaml

---
# Source: nginx-ingress/templates/controller-serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    app: nginx-ingress
    chart: nginx-ingress-1.20.0
    heritage: Helm
    release: ingx
  name: ingx-nginx-ingress
---
# Source: nginx-ingress/templates/default-backend-serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    app: nginx-ingress
    chart: nginx-ingress-1.20.0
    heritage: Helm
    release: ingx
  name: ingx-nginx-ingress-backend
---
# Source: nginx-ingress/templates/clusterrole.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  labels:
    app: nginx-ingress
    chart: nginx-ingress-1.20.0
    heritage: Helm
    release: ingx
  name: ingx-nginx-ingress
rules:
  - apiGroups:
      - ""
    resources:
      - configmaps
      - endpoints
      - nodes
      - pods
      - secrets
    verbs:
      - list
      - watch
  - apiGroups:
      - ""
    resources:
      - nodes
    verbs:
      - get
  - apiGroups:
      - ""
    resources:
      - services
    verbs:
      - get
      - list
      - update
      - watch
  - apiGroups:
      - extensions
      - "networking.k8s.io" # k8s 1.14+
    resources:
      - ingresses
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - ""
    resources:
      - events
    verbs:
      - create
      - patch
  - apiGroups:
      - extensions
      - "networking.k8s.io" # k8s 1.14+
    resources:
      - ingresses/status
    verbs:
      - update
---
# Source: nginx-ingress/templates/clusterrolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  labels:
    app: nginx-ingress
    chart: nginx-ingress-1.20.0
    heritage: Helm
    release: ingx
  name: ingx-nginx-ingress
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: ingx-nginx-ingress
subjects:
  - kind: ServiceAccount
    name: ingx-nginx-ingress
    namespace: default
---
# Source: nginx-ingress/templates/controller-role.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
  labels:
    app: nginx-ingress
    chart: nginx-ingress-1.20.0
    heritage: Helm
    release: ingx
  name: ingx-nginx-ingress
rules:
  - apiGroups:
      - ""
    resources:
      - namespaces
    verbs:
      - get
  - apiGroups:
      - ""
    resources:
      - configmaps
      - pods
      - secrets
      - endpoints
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - ""
    resources:
      - services
    verbs:
      - get
      - list
      - update
      - watch
  - apiGroups:
      - extensions
      - "networking.k8s.io" # k8s 1.14+
    resources:
      - ingresses
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - extensions
      - "networking.k8s.io" # k8s 1.14+
    resources:
      - ingresses/status
    verbs:
      - update
  - apiGroups:
      - ""
    resources:
      - configmaps
    resourceNames:
      - ingress-controller-leader-nginx
    verbs:
      - get
      - update
  - apiGroups:
      - ""
    resources:
      - configmaps
    verbs:
      - create
  - apiGroups:
      - ""
    resources:
      - endpoints
    verbs:
      - create
      - get
      - update
  - apiGroups:
      - ""
    resources:
      - events
    verbs:
      - create
      - patch
---
# Source: nginx-ingress/templates/controller-rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
  labels:
    app: nginx-ingress
    chart: nginx-ingress-1.20.0
    heritage: Helm
    release: ingx
  name: ingx-nginx-ingress
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: ingx-nginx-ingress
subjects:
  - kind: ServiceAccount
    name: ingx-nginx-ingress
    namespace: default
---
# Source: nginx-ingress/templates/controller-service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-ingress
    chart: nginx-ingress-1.20.0
    component: "controller"
    heritage: Helm
    release: ingx
  name: ingx-nginx-ingress-controller
spec:
  externalTrafficPolicy: "Local"
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: http
    - name: https
      port: 443
      protocol: TCP
      targetPort: https
  selector:
    app: nginx-ingress
    component: "controller"
    release: ingx
  type: "LoadBalancer"
---
# Source: nginx-ingress/templates/default-backend-service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-ingress
    chart: nginx-ingress-1.20.0
    component: "default-backend"
    heritage: Helm
    release: ingx
  name: ingx-nginx-ingress-default-backend
spec:
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: http
  selector:
    app: nginx-ingress
    component: "default-backend"
    release: ingx
  type: "ClusterIP"
---
# Source: nginx-ingress/templates/controller-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: nginx-ingress
    chart: nginx-ingress-1.20.0
    component: "controller"
    heritage: Helm
    release: ingx
  name: ingx-nginx-ingress-controller
spec:
  replicas: 1
  revisionHistoryLimit: 10
  strategy:
    {}
  minReadySeconds: 0
  template:
    metadata:
      labels:
        app: nginx-ingress
        component: "controller"
        release: ingx
    spec:
      dnsPolicy: ClusterFirst
      containers:
        - name: nginx-ingress-controller
          image: "quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.25.1"
          imagePullPolicy: "IfNotPresent"
          args:
            - /nginx-ingress-controller
            - --default-backend-service=default/ingx-nginx-ingress-default-backend
            - --election-id=ingress-controller-leader
            - --ingress-class=nginx
            - --configmap=default/ingx-nginx-ingress-controller
          securityContext:
            capabilities:
                drop:
                - ALL
                add:
                - NET_BIND_SERVICE
            runAsUser: 33
            allowPrivilegeEscalation: true
          env:
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
          livenessProbe:
            httpGet:
              path: /healthz
              port: 10254
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 10
            timeoutSeconds: 1
            successThreshold: 1
            failureThreshold: 3
          ports:
            - name: http
              containerPort: 80
              protocol: TCP
            - name: https
              containerPort: 443
              protocol: TCP
          readinessProbe:
            httpGet:
              path: /healthz
              port: 10254
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 10
            timeoutSeconds: 1
            successThreshold: 1
            failureThreshold: 3
          resources:
            {}
      hostNetwork: false
      serviceAccountName: ingx-nginx-ingress
      terminationGracePeriodSeconds: 60
---
# Source: nginx-ingress/templates/default-backend-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: nginx-ingress
    chart: nginx-ingress-1.20.0
    component: "default-backend"
    heritage: Helm
    release: ingx
  name: ingx-nginx-ingress-default-backend
spec:
  replicas: 1
  revisionHistoryLimit: 10
  template:
    metadata:
      labels:
        app: nginx-ingress
        component: "default-backend"
        release: ingx
    spec:
      containers:
        - name: nginx-ingress-default-backend
          image: "k8s.gcr.io/defaultbackend-amd64:1.5"
          imagePullPolicy: "IfNotPresent"
          args:
          securityContext:
            runAsUser: 65534
          livenessProbe:
            httpGet:
              path: /healthz
              port: 8080
              scheme: HTTP
            initialDelaySeconds: 30
            periodSeconds: 10
            timeoutSeconds: 5
            successThreshold: 1
            failureThreshold: 3
          readinessProbe:
            httpGet:
              path: /healthz
              port: 8080
              scheme: HTTP
            initialDelaySeconds: 0
            periodSeconds: 5
            timeoutSeconds: 5
            successThreshold: 1
            failureThreshold: 6
          ports:
            - name: http
              containerPort: 8080
              protocol: TCP
          resources:
            {}
      serviceAccountName: ingx-nginx-ingress-backend
      terminationGracePeriodSeconds: 60
---
# Source: nginx-ingress/templates/controller-hpa.yaml
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  labels:
    app: nginx-ingress
    chart: nginx-ingress-1.20.0
    component: "controller"
    heritage: Helm
    release: ingx
  name: ingx-nginx-ingress-controller
spec:
  scaleTargetRef:
    apiVersion: apps/v1beta1
    kind: Deployment
    name: ingx-nginx-ingress-controller
  minReplicas: 2
  maxReplicas: 100
  metrics:
    - type: Resource
      resource:
        name: cpu
        targetAverageUtilization: 70
    - type: Resource
      resource:
        name: memory
        targetAverageUtilization: 70

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реБрдЖ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдореВрд▓ рд░реВрдк рд╕реЗ omitClusterIP рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд┐рдирд╛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рд╣реЗрд▓рдо v3 рдореВрд▓ рдореИрдирд┐рдлреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде 3-рддрд░рдлрд╛ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдореЗрдВ clusterIP: "" рд╣реИ

helm get manifest ingx --revision 1 | grep "clusterIP"
  clusterIP: ""
  clusterIP: ""

рдореИрдВ рдкрд╣рд▓реЗ рдореМрдЬреВрджрд╛ рдЪрд╛рд░реНрдЯ рдХреЛ рд╣рдЯрд╛рдХрд░ рдФрд░ omitClusterIP рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдХрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдмреЙрдЯрдо рд▓рд╛рдЗрди, @bambash рд╕реЗ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рддрднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рдЖрдк рдЪрд╛рд░реНрдЯ рдХреЛ рдЙрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╢реБрд░реВ рд╕реЗ рд╣реА рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ

$ helm upgrade --install ingress-test stable/nginx-ingress --set controller.service.omitClusterIP=true --set defaultBackend.service.omitClusterIP=true

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣реЗрд▓рдо v3 рдореЗрдВ рдореМрдЬреВрджрд╛ рдореИрдирд┐рдлреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рд╡рд┐рд▓рдп рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдерд╛

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореБрдЭреЗ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рдХрд┐ рдЬрдм рд░рд┐рд▓реАрдЬрд╝ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рддреЛ рдЗрди рдорд╛рдиреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рд░рд┐рд▓реАрдЬрд╝ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╕рд╛рдмрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ...

рдореИрдВ рдореЗрдЯреНрд░рд┐рдХ-рд╕рд░реНрд╡рд░-2.8.8 рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рдХреЛрдИ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдЪрд╛рд░реНрдЯ, рд╣реЗрд▓рдо v3.0.0-rc.2 рдХреЗ рд╕рд╛рдеред рдХреЛрдИ рд╕рд▓рд╛рд╣? рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рд╣реИред

рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣реЗрд▓рдордлрд╛рдЗрд▓ v0.95.0 рдХреЗ рд╕рд╛рде рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред рдореИрдВ рд╡рд╣рд╛рдВ рдЗрд╕рдХрд╛ рдкреАрдЫрд╛ рдХрд░реВрдВрдЧрд╛ :)

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╣реЗрд▓реНрдо v3.0.0-rc.2 рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рд╕реЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рднреА рдЕрдЧрд░ рдореИрдВ --force рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЗрд▓реНрдо рдЕрдкрдбреЗрдЯ --рдЗрдВрд╕реНрдЯреЙрд▓ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реВрдВред --force рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

@johannges , рдореИрдВ рдмрд╕ рд╡рд╣реА рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ред :+1:

omitClusterIP: true рд╕реЗрдЯрд┐рдВрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмреИрдХрдПрдВрдб рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреА рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ рд▓реЗрдХрд┐рди рдореАрдЯреНрд░рд┐рдХ рдПрдХ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдиреНрдирдпрди рдХреЗ рджреМрд░рд╛рди --force рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдкрддрд╡рд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реИред
рд╣реЗрд▓реНрдо рд╕реЗрд╡рд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ spec.clusterIP рдХреЛ рднреА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдпрд╣ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рджреЗрддрд╛ рд╣реИред
рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╕реНрдЯрдо рдЪрд╛рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
Error: UPGRADE FAILED: failed to replace object: Service "litespeed" is invalid: spec.clusterIP: Invalid value: "": field is immutable

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдореЗрд░реА рдУрд░ рд╕реЗ рдПрдХ рдЧрд▓рддреА рдереА, рд╕реЗрд╡рд╛ (рдпрд╛ рдЪрд╛рд░реНрдЯ) рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдкрд░ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдореИрдВ рдореМрдЬреВрджрд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд _kafka_ рдФрд░ _redis_ рдЪрд╛рд░реНрдЯ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рднреА рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ред --force рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЧрдпрд╛ред

рдЕрдм рдореБрдЭреЗ _redis_ рд░рд┐рд▓реАрдЬрд╝ рд╕реЗ рдПрдХ рдирдИ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ:
Error: UPGRADE FAILED: release redis failed, and has been rolled back due to atomic being set: cannot patch "redis-master" with kind StatefulSet: StatefulSet.apps "redis-master" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'template', and 'updateStrategy' are forbidden

@bacongobbler рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдпрд╣ рд╣реЗрд▓реНрдо v3 рдереНрд░реА-рд╡реЗ рдорд░реНрдЬ рдкреИрдЪ рд░рдгрдиреАрддрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рджрд┐рдЦрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдкрд╣рд▓реА рд░рдЪрдирд╛ рдХреЗ рдмрд╛рдж рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп/рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЕрджреНрдпрддрди/рдкреИрдЪ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдкрд╣рд▓реЗ рдХреЗ рд╕рдорд╛рди рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде) рдореЗрдВ рдЧреБрдЬрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдпрджрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЗрд▓реНрдо v3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣рд╛рдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЗрд╕реЗ рд╕реАрдзреЗ --force рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ helm delete рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд╛рд░реНрдЯ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдиреЗ рдореЗрдВ рд╕рдлрд▓рддрд╛ рдорд┐рд▓реА рдФрд░ рдлрд┐рд░ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдирд╛ред рдпрд╣ рдмреЗрдХрд╛рд░ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдкреВрд░реА рддреНрд░реБрдЯрд┐: ("nginx-ingress-singleton-controller" рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░рд┐рд▓реАрдЬрд╝ рдирд╛рдо рд╣реИред рдЗрд╕рдХрд╛ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрд░реНрде рдирд╣реАрдВ рд╣реИ)

Error: cannot patch "nginx-ingress-singleton-controller" with kind Service: Service "nginx-ingress-singleton-controller" is invalid: spec.clusterIP: Invalid value:
"": field is immutable && cannot patch "nginx-ingress-singleton-default-backend" with kind Service: Service "nginx-ingress-singleton-default-backend" is invalid: sp
ec.clusterIP: Invalid value: "": field is immutable

  on .terraform/modules/app_dev/nginx-ingress.tf line 1, in resource "helm_release" "nginx_ingress":
   1: resource "helm_release" "nginx_ingress" {

@ zen4ever рдиреЗ https://github.com/helm/helm/issues/6378#issuecomment -532766512 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЙрдард╛рдпрд╛ред рдореИрдВ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ ....

рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреНрдп рдиреЗ рдмрддрд╛рдпрд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм рдПрдХ рдЪрд╛рд░реНрдЯ рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЬрдм рд╕реЗрд╡рд╛ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЙрд╕ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдХреЗ рд╕рд╛рде рднрд░ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЙрд╕рдиреЗ рд╕реЗрд╡рд╛ рдХреЛ рд╕реМрдВрдкрд╛ рдерд╛ред

рдЬрдм helm upgrade рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЪрд╛рд░реНрдЯ рдиреЗ clusterIP рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛, рдЗрд╕рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ spec.clusterIP: Invalid value: "": field is immutable ред

рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ:

  1. рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдкрд░, рдЪрд╛рд░реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ clusterIP рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ
  2. Kubernetes рдиреЗ рд╕реЗрд╡рд╛ рдХреЛ рдПрдХ clusterIP рдСрдЯреЛ-рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ред рд╣рдо рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 172.17.0.1 рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ
  3. helm upgrade , рдЪрд╛рд░реНрдЯ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ clusterIP рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛ (рдпрд╛ рдЙрдкрд░реЛрдХреНрдд @ zen4ever рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ , рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)

рдереНрд░реА-рд╡реЗ рдкреИрдЪ рдЬрдирд░реЗрдЯ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдкреБрд░рд╛рдиреА рд╕реНрдерд┐рддрд┐ "" , рд▓рд╛рдЗрд╡ рд╕реНрдерд┐рддрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ "172.17.0.1" , рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕реНрдерд┐рддрд┐ "" ред рд╣реЗрд▓реНрдо рдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ clusterIP рдХреЛ "172.17.0.1" рд╕реЗ "" рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдиреЗ рдПрдХ рдкреИрдЪ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреАред

рд╣реЗрд▓реНрдо 2 рдореЗрдВ, рдЗрд╕рдиреЗ рд▓рд╛рдЗрд╡ рд╕реНрдерд┐рддрд┐ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рджреЗрдЦрд╛ рдЧрдпрд╛ (рдкреБрд░рд╛рдирд╛ рд░рд╛рдЬреНрдп: clusterIP: "" рдирдП рд░рд╛рдЬреНрдп рдореЗрдВ: clusterIP: "" ), рдФрд░ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдХреЛрдИ рдкреИрдЪ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реБрдЖред

рдореЗрд░реА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рд╣реЛрдЧреАред рдпрджрд┐ рдХреЛрдИ clusterIP рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдорд╛рди рдХреЛ рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░ рд╕реЗрдЯ рди рдХрд░реЗрдВ... рдлрд╝реАрд▓реНрдб рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП stable/nginx-ingress рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ:

spec:
{{- if not .Values.controller.service.omitClusterIP }}
  clusterIP: "{{ .Values.controller.service.clusterIP }}"
{{- end }}

рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

spec:
{{- if not .Values.controller.service.omitClusterIP }}
  {{ with .Values.controller.service.clusterIP }}clusterIP: {{ quote . }}{{ end }}
{{- end }}

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ --set controller.service.omitClusterIP=true рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

TL; DR рдЕрдкрдиреЗ рд╕реЗрд╡рд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдРрд╕рд╛ рди рдХрд░реЗрдВ:

clusterIP: ""

рдЕрдиреНрдпрдерд╛, рд╣реЗрд▓реНрдо рд╕реЗрд╡рд╛ рдХреЗ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдХреЛ рдСрдЯреЛ-рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдЖрдИрдкреА рдкрддреЗ рд╕реЗ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ред

рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛!

рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЕрдЧрд░ рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд┐рдпрд╛ рддреЛ рдореИрдВ рдПрдХ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛:

  1. рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ-рдмреИрдХрдПрдВрдб рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
    kubectl get svc | grep ingress
  2. рдЕрдкрдиреА рдореМрдЬреВрджрд╛ рд╣реЗрд▓рдо рдорд╛рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдУрд╡рд░рд░рд╛рдЗрдЯ рдЬреЛрдбрд╝реЗрдВ:
    controller: service: clusterIP: <cluster-ip-address-for-controller> defaultBackend: service: clusterIP: <cluster-ip-address-for-default-backend>
  3. рдЕрджреНрдпрддрди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдП рдЬрд╛ рд░рд╣реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдордиреЛрд░рдВрдЬрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╡рд╣ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЧреБрдб рдХреЙрд▓ @рдЯреНрд░реЗрдЪрд░ред --set рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдорд╛рди рдорд╛рди рд╕реЗрдЯ рдХрд░рдирд╛ рдпрд╛ рдЖрдкрдХреА рдорд╛рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрдИ рдкреИрдЪ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдкрдЧреНрд░реЗрдб clusterIP рдХреЗ рдорд╛рди рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИред

рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рддреАрди-рддрд░рдлрд╛ рдорд░реНрдЬ рдкреИрдЪ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░рдирд╛ред рдЗрди рдЪрд╛рд░реНрдЯреЛрдВ рдХреЗ рд▓рд┐рдП https://github.com/helm/helm/issues/6378#issuecomment-557746499 рдореЗрдВ рдКрдкрд░ рджреА рдЧрдИ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЖрдЗрдЯрдо рд╣реИред рд╣реЗрд▓реНрдо рдХреА рдУрд░ рд╕реЗ рдпрд╣рд╛рдБ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред :)

https://github.com/helm/charts/pull/19146/files рдмрдирд╛рдИ рдЧрдИ! рдзрдиреНрдпрд╡рд╛рдж @bacongobbler

@ zen4ever рдиреЗ #6378 (рдЯрд┐рдкреНрдкрдгреА) рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЙрдард╛рдпрд╛ред рдореИрдВ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ ....

рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреНрдп рдиреЗ рдмрддрд╛рдпрд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм рдПрдХ рдЪрд╛рд░реНрдЯ рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЬрдм рд╕реЗрд╡рд╛ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЙрд╕ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдХреЗ рд╕рд╛рде рднрд░ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЙрд╕рдиреЗ рд╕реЗрд╡рд╛ рдХреЛ рд╕реМрдВрдкрд╛ рдерд╛ред

рдЬрдм helm upgrade рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЪрд╛рд░реНрдЯ рдиреЗ clusterIP рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛, рдЗрд╕рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ spec.clusterIP: Invalid value: "": field is immutable ред

рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ:

  1. рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдкрд░, рдЪрд╛рд░реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ clusterIP рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ
  2. Kubernetes рдиреЗ рд╕реЗрд╡рд╛ рдХреЛ рдПрдХ clusterIP рдСрдЯреЛ-рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ред рд╣рдо рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 172.17.0.1 рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ
  3. helm upgrade , рдЪрд╛рд░реНрдЯ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ clusterIP рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛ (рдпрд╛ рдЙрдкрд░реЛрдХреНрдд @ zen4ever рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ , рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)

рдереНрд░реА-рд╡реЗ рдкреИрдЪ рдЬрдирд░реЗрдЯ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдкреБрд░рд╛рдиреА рд╕реНрдерд┐рддрд┐ "" , рд▓рд╛рдЗрд╡ рд╕реНрдерд┐рддрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ "172.17.0.1" , рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕реНрдерд┐рддрд┐ "" ред рд╣реЗрд▓реНрдо рдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ clusterIP рдХреЛ "172.17.0.1" рд╕реЗ "" рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдиреЗ рдПрдХ рдкреИрдЪ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреАред

рд╣реЗрд▓реНрдо 2 рдореЗрдВ, рдЗрд╕рдиреЗ рд▓рд╛рдЗрд╡ рд╕реНрдерд┐рддрд┐ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рджреЗрдЦрд╛ рдЧрдпрд╛ (рдкреБрд░рд╛рдирд╛ рд░рд╛рдЬреНрдп: clusterIP: "" рдирдП рд░рд╛рдЬреНрдп рдореЗрдВ: clusterIP: "" ), рдФрд░ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдХреЛрдИ рдкреИрдЪ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реБрдЖред

рдореЗрд░реА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рд╣реЛрдЧреАред рдпрджрд┐ рдХреЛрдИ clusterIP рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдорд╛рди рдХреЛ рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░ рд╕реЗрдЯ рди рдХрд░реЗрдВ... рдлрд╝реАрд▓реНрдб рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП stable/nginx-ingress рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ:

spec:
{{- if not .Values.controller.service.omitClusterIP }}
  clusterIP: "{{ .Values.controller.service.clusterIP }}"
{{- end }}

рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

spec:
{{- if not .Values.controller.service.omitClusterIP }}
  {{ with .Values.controller.service.clusterIP }}clusterIP: {{ quote . }}{{ end }}
{{- end }}

рд╣рд╛рдп @bacongobbler , рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рдореВрд▓реНрдп рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╣рдо рдЕрднреА рднреА clusterIP: "" рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ ... рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХрд┐ рдореВрд▓реНрдп clusterIP: "" рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╣реЛред рдпрд╣ рд╕реЗрдЯ рд╣реЛрдиреЗ рдкрд░ рд░реЗрдВрдбрд░ рдХрд┐рдП рдЧрдП рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рд╕реЗ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рд░рджрд░реНрдж рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрджрд┐ рд╣реЗрд▓рдо3 рдФрд░ рд╡рд░реНрддрдорд╛рди рд╣реЗрд▓рдо рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ clusterIP: "" рд╕реЗрдЯ рд╣реИ, рддреЛ рдХрд┐рд╕реА рдХреЛ рдорд╛рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдкрддреЗ рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ --set controller.service.omitClusterIP=true рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

TL; DR рдЕрдкрдиреЗ рд╕реЗрд╡рд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдРрд╕рд╛ рди рдХрд░реЗрдВ:

clusterIP: ""

рдЕрдиреНрдпрдерд╛, рд╣реЗрд▓реНрдо рд╕реЗрд╡рд╛ рдХреЗ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдХреЛ рдСрдЯреЛ-рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдЖрдИрдкреА рдкрддреЗ рд╕реЗ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ред

рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛!

рдЕрд░реЗ @bacongobbler , рд╣рдордиреЗ рд╣реЗрд▓рдо v3 рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ред рд╣рдо рд╕реЗрд╡рд╛ рдореЗрдВ type: ClusterIP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди ClusterIP рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:

Error: UPGRADE FAILED: failed to replace object: Service "dummy" is invalid: spec.clusterIP: Invalid value: "": field is immutable

рд╣рдорд╛рд░реЗ рд╣реЗрд▓рдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ spec.clusterIP: рд╣реИ рд▓реЗрдХрд┐рди рд╣реЗрд▓реНрдо 2to3 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрдЯ рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рд╣реИ

рд╕реЗрд╡рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ:

apiVersion: v1
kind: Service
metadata:
  name: {{ .Release.Name }}
  labels:
    app: {{ .Values.image.name }}
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "-" }}
    cluster: {{ default "unknown" .Values.cluster }}
    region: {{ default "unknown" .Values.region }}
    datacenter: {{ default "unknown" .Values.datacenter }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  type: ClusterIP
  ports:
    - port: {{ .Values.service.port }}
      targetPort: {{ .Values.service.port }}
      protocol: TCP
      name: http
  selector:
    app: {{ .Values.image.name }}
    release: {{ .Release.Name }}

рдпрд╣рд╛рдВ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ред рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╕реЗрд╡рд╛ рдХреЛ рдЫреБрдЖ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЗрдирдЧреНрд░реЗрдб рд╣реИ рдЬрд┐рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рд╕реЗ рдкрд╣рд▓реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдпрд╣ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдлрд╝реАрд▓реНрдб рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓рддрд╛ рд╣реИ рдпрджрд┐ --force рдзреНрд╡рдЬ рдХреЛ helm upgrade --install рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдлрд╝реАрд▓реНрдб рдХреЛ рд╕реНрдкрд░реНрд╢ рди рдХрд░реЗрдВ рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд╣реНрд░рд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ ??? рдЖрдкрдХреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╣реЗрд▓рдо 3 рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ ....
@рдмреЗрдХреЛрдВрдЧреЛрдмреНрд▓рд░ ^^^

рд╣реЗрд▓рдо 3 рджреНрд╡рд╛рд░рд╛ рдирдП apiVersion рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрди рдПрдЪрдкреАрдП рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:
Error: UPGRADE FAILED: rendered manifests contain a new resource that already exists. Unable to continue with update: existing resource conflict: kind: HorizontalPodAutoscaler, namespace: stage, name: dummy-stage

@bacongobbler рдФрд░ @ kritcher722 рдердореНрд╕ рдбрд╛рдЙрди рдХрдореЗрдВрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЕрдВрдЧреВрдареЗ рдХреЛ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрджрд┐ рдЕрднреА рднреА рдЕрд╕рд╣рдорддрд┐ рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдПрдВ рдХрд┐ рд░реЗрдВрдбрд░ рдХрд┐рдП рдЧрдП рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ clusterIP: "" рд╣реЛрдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдХреНрдпреЛрдВ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Microsoft рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдореЗрдВрдЯрд░ рд╣реИред рдореИрдВ рд╢реИрд▓реА рджреЗрдЦрддрд╛ рд╣реВрдВред :)

рдХреГрдкрдпрд╛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВред рдореБрджреНрджрд╛ рддрдп рдирд╣реАрдВ рд╣реИред рдирд╕реАрдордХреБрд▓реНрд▓рд╛рд╣ рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рдпрд╣ "рд╣реИрдХ" рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рд┐рд░ рдкрд░ рдХреВрджрдиреЗ рдХреЗ рд▓рд┐рдП рдордд рдХрд╣реЛред рдмрд╕ рдЗрд╕реЗ рдареАрдХ рдХрд░реЛред рдмрд╣реБрдд рдЦрд░рд╛рдм рдкреНрд░рд╡рд╛рд╕ рдкрдеред рд╣реЗрд▓реНрдо рдмреЗрдХрд╛рд░ рд╣реИред

@antonakv рд╕рд╛рд▓ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ :)
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рд╣рдо рдЪрд╛рд░реНрдЯ рдореЗрдВ рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╕рдордп рдЖрдЧ рд╕реЗ рдЦреЗрд▓ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдЙрдкрдХрд░рдг/рд╡реНрдпрдХреНрддрд┐/рдкреАрдЖрд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреЛрд╖ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗред
рдпрджрд┐ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рд░реЗрдВрдбрд░ рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ https://github.com/helm/charts/blob/270172836fd8cf56d787cf7d04d938856de0c794/stable рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдорд╛рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред

рдпрд╣, рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдВ, рддреЛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рд┐рд░рджрд░реНрдж рдХреЛ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЪрд╛рд░реНрдЯ рдХреЛ рдЙрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдордореЗрдВ рд╕реЗ (рд╕реНрд╡рдпрдВ рд╢рд╛рдорд┐рд▓) рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рд╣реЗрд▓реНрдо 3 рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рдерд╛, рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдореМрдЬреВрджрд╛ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╣рд╛рд░реНрдбрдХреЙрд░реНрдбрд┐рдВрдЧ рдХрд░рдирд╛ рдпрд╛ рдЪрд╛рд░реНрдЯ рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ (рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ!) рдПрдХрдорд╛рддреНрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ I рджреЗрдЦреЛред

рд░рд╛рдп рдореЗрд░реЗ рдЕрдкрдиреЗ рд╣реИрдВ, рдореБрдЭреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╕ рдЖрдк рдЬреИрд╕реЗ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВред рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕ рдкреВрд░реЗ рд╕рдордп рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡реЗ рдЕрдзрд┐рдХ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдирдпрд╛ рд╕рд╛рд▓ рдореБрдмрд╛рд░рдХ рд╣реЛ рдФрд░ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ! рд╣рд┐рдореНрдордд рдордд рд╣рд╛рд░реЛ, рд╣рдо рд╕рдм рдорд┐рд▓рдХрд░ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрд░реЗ @bacongobbler , рд╣рдордиреЗ рд╣реЗрд▓рдо v3 рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ред рд╣рдо рд╕реЗрд╡рд╛ рдореЗрдВ type: ClusterIP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди ClusterIP рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:

Error: UPGRADE FAILED: failed to replace object: Service "dummy" is invalid: spec.clusterIP: Invalid value: "": field is immutable

рд╣рдорд╛рд░реЗ рд╣реЗрд▓рдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ spec.clusterIP: рд╣реИ рд▓реЗрдХрд┐рди рд╣реЗрд▓реНрдо 2to3 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрдЯ рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рд╣реИ

рд╕реЗрд╡рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ:

apiVersion: v1
kind: Service
metadata:
  name: {{ .Release.Name }}
  labels:
    app: {{ .Values.image.name }}
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "-" }}
    cluster: {{ default "unknown" .Values.cluster }}
    region: {{ default "unknown" .Values.region }}
    datacenter: {{ default "unknown" .Values.datacenter }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  type: ClusterIP
  ports:
    - port: {{ .Values.service.port }}
      targetPort: {{ .Values.service.port }}
      protocol: TCP
      name: http
  selector:
    app: {{ .Values.image.name }}
    release: {{ .Release.Name }}

рд╣рдореЗрдВ рднреА рд╡рд╣реА рддрдХрд▓реАрдлрд╝ рд╣реИред рд╣рдо рдЕрдкрдиреЗ рдЪрд╛рд░реНрдЯ рдореЗрдВ clusterIP рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЕрдВрддрд┐рдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдореЗрдВ рдЕрднреА рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдФрд░ рдХреЗрд╡рд▓ --force рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рдеред

рд╣рдо рдПрдХ рд╣реА рдореБрджреНрджреЗ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ:

apiVersion: v1
kind: Service
{{ include "mde.metadata" $ }}
spec:
  ports:
  - name: {{ include "mde.portName" $ | quote }}
    port: {{ include "mde.port" $ }}
    protocol: TCP
    targetPort: {{ include "mde.port" $ }}
  selector:
    app: {{ include "mde.name" $ }}
  sessionAffinity: None
  type: ClusterIP

spec.clusterIP рд╕реЗрд╡рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рдлрд┐рд░ рднреА рд╣реЗрд▓реНрдо 3.0.2 рдФрд░ helm upgrade ... --force --install рдХреЙрд▓ рдХреЗ рд╕рд╛рде, рд╣рдо рдпрд╣ рднреА рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ:

рддреНрд░реБрдЯрд┐: рдЕрдкрдЧреНрд░реЗрдб рд╡рд┐рдлрд▓: рд╡рд╕реНрддреБ рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓: рд╕реЗрд╡рд╛ "рдбрдореА" рдЕрдорд╛рдиреНрдп рд╣реИ: spec.clusterIP: рдЕрдорд╛рдиреНрдп рдорд╛рди: "": рдлрд╝реАрд▓реНрдб рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИ

рдХреГрдкрдпрд╛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВред

@tomcruise81 рдХреГрдкрдпрд╛ --force рдкрд░ рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП https://github.com/helm/helm/issues/7350 рджреЗрдЦреЗрдВред рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ kubectl replace рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╡рд░реНрдгрд┐рдд рд╕реНрдерд┐рддрд┐ рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИ, рдЬреЛ рд╕реЗрд╡рд╛ clusterIPs рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдФрд░ рддреАрди рддрд░рд╣ рд╕реЗ рдорд░реНрдЬ рдкреИрдЪ рд░рдгрдиреАрддрд┐ ( helm upgrade рдмрд┐рдирд╛ --force рдЭрдВрдбрд╛)ред

@bacongobbler - рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП:

https://github.com/helm/helm/blob/a963736f6675e972448bf7a5fd141628fd0ae4df/pkg/kube/client.go#L405 -L411

рдЬреЛ https://github.com/kubernetes/cli-runtime/blob/master/pkg/resource/helper.go#L155 -L181 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ helper.Replace рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ kubectl replace -f ... --force рдХреЗ рд╕рдорд╛рди рд╣реА (рдЕрдВрдд рдореЗрдВ --force рдиреЛрдЯ рдХрд░реЗрдВ)ред

рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рднреНрд░рдо рд╣реИред

рдореИрдВ helm upgrade ... --force рдХреА рдЕрдкрдиреА рдЕрдкреЗрдХреНрд╖рд╛ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпрд╣ рд╡рд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛ kubectl replace -f ... --force ред

рдЕрд░реЗ @bacongobbler , рд╣рдордиреЗ рд╣реЗрд▓рдо v3 рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ред рд╣рдо рд╕реЗрд╡рд╛ рдореЗрдВ type: ClusterIP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди ClusterIP рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:
Error: UPGRADE FAILED: failed to replace object: Service "dummy" is invalid: spec.clusterIP: Invalid value: "": field is immutable
рд╣рдорд╛рд░реЗ рд╣реЗрд▓рдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ spec.clusterIP: рд╣реИ рд▓реЗрдХрд┐рди рд╣реЗрд▓реНрдо 2to3 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрдЯ рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рд╣реИ
рд╕реЗрд╡рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ:

apiVersion: v1
kind: Service
metadata:
  name: {{ .Release.Name }}
  labels:
    app: {{ .Values.image.name }}
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "-" }}
    cluster: {{ default "unknown" .Values.cluster }}
    region: {{ default "unknown" .Values.region }}
    datacenter: {{ default "unknown" .Values.datacenter }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  type: ClusterIP
  ports:
    - port: {{ .Values.service.port }}
      targetPort: {{ .Values.service.port }}
      protocol: TCP
      name: http
  selector:
    app: {{ .Values.image.name }}
    release: {{ .Release.Name }}

рд╣рдореЗрдВ рднреА рд╡рд╣реА рддрдХрд▓реАрдлрд╝ рд╣реИред рд╣рдо рдЕрдкрдиреЗ рдЪрд╛рд░реНрдЯ рдореЗрдВ clusterIP рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЕрдВрддрд┐рдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдореЗрдВ рдЕрднреА рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдФрд░ рдХреЗрд╡рд▓ --force рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рдеред

рдореИрдВрдиреЗ рдпрд╣ рднреА рдЬрд╛рдВрдЪрд╛ рдХрд┐ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдореЗрдВ рдХреЛрдИ clusterIP рд╣реИ:

$ helm get manifest paywall-api-ee | grep clusterIP
$

рдпрд╣рд╛рдВ рд╡рд╣реА- рд╣рдо рдХрд╣реАрдВ рднреА ClusterIP рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рддреНрд░реБрдЯрд┐ рджреЗрдЦрддреЗ рд╣реИрдВ

рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдФрд░ рдЦрд┐рд▓рд╡рд╛рдбрд╝ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐:

  • helm upgrade ... --force --install - _рд╕реЗрд╡рд╛ "рдбрдореА" рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╣реИ_
  • helm template ... | kubectl apply -f - - рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
  • helm template ... | kubectl replace -f - - _рд╕реЗрд╡рд╛ "рдбрдореА" рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╣реИ_
  • helm template ... | kubectl replace --force -f - - рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдХреБрдмреЗрдХреНрдЯрд▓ рд╕рдВрд╕реНрдХрд░рдг - 1.14.6
рдкрддрд╡рд╛рд░ рд╕рдВрд╕реНрдХрд░рдг - 3.0.2

@ tomcruise81 рдЖрдк рд╣реЗрд▓реНрдо рдкреНрд▓рдЧрдЗрди 2to3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣реЗрд▓реНрдо 2 рд╕реЗ рд╣реЗрд▓реНрдо 3 рд░рд┐рд▓реАрдЬ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ --force рд╣рдЯрд╛ рджреЗрдВред
рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд╛рдо рд╣реИред
рдореЗрд░реЗ рд▓рд┐рдП рдФрд░ рджреВрд╕рд░реЗ рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ --force рдореЗрдВ рдЧрд▓рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП

@alexandrsemak - рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ рдЗрд╕реЗ рдПрдХ рдЪрд╛рд░реНрдЯ рдкрд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ рд╣реЗрд▓реНрдо 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдпрд╛ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореЗрд░реЗ рд▓рд┐рдП рд╡рд╣реА рдореБрджреНрджрд╛! рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП

$ helm install my-release xxxxx
$ helm upgrade --install --force my-release xxxxx

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЕрдкрдиреЗ рдЪрд╛рд░реНрдЯ рдкрд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рд╕реЗрд╡рд╛ рдкрд░ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ (рдиреАрдЪреЗ рдЪрд╢реНрдорд╛ рджреЗрдЦреЗрдВ):

spec:
  type: {{ .Values.service.type }}
  {{- if and (eq .Values.service.type "LoadBalancer") (not (empty .Values.service.loadBalancerIP)) }}
  loadBalancerIP: {{ .Values.service.loadBalancerIP }}
  {{- end }}
  ports:
    - name: htttp-XXX
      port: {{ .Values.service.port }}
      targetPort: XXX
      {{- if and (or (eq .Values.service.type "NodePort") (eq .Values.service.type "LoadBalancer")) (not (empty .Values.service.nodePort)) }}
      nodePort: {{ .Values.service.nodePort }}
      {{- else if eq .Values.service.type "ClusterIP" }}
      nodePort: null
      {{- end }}
  selector:
    app.kubernetes.io/name: XXX
    app.kubernetes.io/instance: {{ .Release.Name }}

рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛, рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдкрд╣рд▓реА рдмрд╛рд░ рд╕реЗрд╡рд╛ рдХреЛ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА (рдЬреИрд╕реЗ . clusterIP: 10.96.26.65 ) рдСрдЯреЛ-рдЕрд╕рд╛рдЗрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрдм рдЖрдк рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ clusterIP: "" рд╕рд╛рде рд╡рд┐рд░реЛрдз рдХрд░рддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкрд░ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ: clusterIP: ""

рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ @bacongobbler

рдореЗрд░реЗ рд╕рд╛рде рднреА рд╡рд╣реА рджрд┐рдХреНрдХрдд рд╣реИред

@ рдЬреБрдЖрди 131 @ рд░реЛрдирд╕реЗрд╡реЗрдЯ : рд╣рдЯрд╛рдПрдВ --force рдЕрд░реНрде рдмрджрд▓ рдЧрдпрд╛ред

рдХрд╕реНрдЯрдо рдЪрд╛рд░реНрдЯ рдкрд░ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред
рд╣рдо рдХреНрд▓рд╕реНрдЯрд░рд┐рдк рдХреЛ рдХрд╣реАрдВ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдкрддрд╡рд╛рд░ v3.0.2
рдХреБрдмреЗрдХреНрдЯреНрд▓ 1.14.8

рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрднреА-рдХрднреА рдПрдХ рдЪрд╛рд░реНрдЯ рд╡рд┐рдлрд▓ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдкреЙрдбреНрд╕ рдмрдирд╛рдП рдФрд░ рдЪрд▓ рд░рд╣реЗ рд╣реЛрдВред рдЕрдЧрд░ рд╣рдо рдЙрд╕реА рд░рд┐рд▓реАрдЬ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдмрд┐рдирд╛ рдмрд▓ рдХреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рдкреЙрдб рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд░рд┐рд▓реАрдЬ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
"рдмрд▓" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ

рдореЗрд░реЗ рд▓рд┐рдП рднреА - рдореИрдВрдиреЗ рдЕрднреА рд╕реЗрд╡рд╛ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реЗрдмрд▓ рдЬреЛрдбрд╝рд╛ рд╣реИ рдФрд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдХреЛ рдХрд╣реАрдВ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ - рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ

@bacongobbler рд╣рдо рдЕрдкрдиреЗ рдЪрд╛рд░реНрдЯ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ StorageClasses рдХреЛ рддреИрдирд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ StorageClass рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВред рддреЛ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ рдореЗрдВ, рдЬрдм рд╣рдо рдХреБрдЫ StorageClass рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдорд╛рди рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рднреА helm upgrade --force рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ StorageClasses рдЕрдкрдбреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рд╣реИрдВрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдХреЛрдИ рд╕реБрдЭрд╛рд╡?

Error: UPGRADE FAILED: failed to replace object: StorageClass.storage.k8s.io "ibmc-s3fs-standard-cross-region" is invalid: parameters: Forbidden: updates to parameters are forbidden.

рдпрд╣ рд╣реЗрд▓реНрдо v2 рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ helm upgrade --force рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ StorageClass рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ ред

рдпрджрд┐ рдХреЛрдИ рдРрд╕реЗ рд▓рдХреНрд╖рдгреЛрдВ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ https://github.com/helm/helm/issues/6378#issuecomment -557746499 рдореЗрдВ рджрд┐рдП рдЧрдП рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдХреИрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣ рд╣рдорд╛рд░реЗ рдЕрдВрдд рдореЗрдВ?

рдУрдкреА рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рдореБрджреНрджрд╛ рдКрдкрд░ рджрд┐рдП рдЧрдП рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдХрд╛рд░рдг рдерд╛, рдЬрд╣рд╛рдВ рдПрдХ рдЪрд╛рд░реНрдЯ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдкрд░ рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдРрд╕реЗ рдЕрдиреНрдп рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╕рд╛рдордиреЗ рдЖ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЕрдиреНрдп рдиреЗ --force рдзреНрд╡рдЬ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред рдЙрди рдорд╛рдорд▓реЛрдВ рдкрд░ рдЕрд▓рдЧ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рджрд╛рди рдФрд░ рд╕рдорд╛рдзрд╛рди рдкрд╣рд▓реЗ рджреА рдЧрдИ рд╕рд▓рд╛рд╣ рд╕реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

@mssachan рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ # 7082 рдФрд░ # 7431 рдореЗрдВ рдорд╕реМрджрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрдЦреЗрдВред рдЙрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп kubectl replace тАФforce рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рд╣реЗрд▓реНрдо 2 рдХреЗ helm install тАФforce рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред

@mssachan рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ # 7082 рдФрд░ # 7431 рдореЗрдВ рдорд╕реМрджрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрдЦреЗрдВред рдЙрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп kubectl replace тАФforce рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рд╣реЗрд▓реНрдо 2 рдХреЗ helm install тАФforce рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред --force рдзреНрд╡рдЬ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рднреА, рдЪрд╛рд░реНрдЯ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдЕрднреА рднреА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, cert-manager :

2020-03-05 12:15:19 CRITICAL: Command returned [ 1 ] exit code and error message [ Error: UPGRADE FAILED: cannot patch "cert-manager-cainjector" with kind Deployment: Deployment.apps "cert-manager-cainjector" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"cainjector", "app.kubernetes.io/instance":"cert-manager", "app.kubernetes.io/managed-by":"Helm", "app.kubernetes.io/name":"cainjector"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable && cannot patch "cert-manager" with kind Deployment: Deployment.apps "cert-manager" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"cert-manager", "app.kubernetes.io/instance":"cert-manager", "app.kubernetes.io/managed-by":"Helm", "app.kubernetes.io/name":"cert-manager"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable && cannot patch "cert-manager-webhook" with kind Deployment: Deployment.apps "cert-manager-webhook" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"webhook", "app.kubernetes.io/instance":"cert-manager", "app.kubernetes.io/managed-by":"Helm", "app.kubernetes.io/name":"webhook"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable

@mssachan рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ # 7082 рдФрд░ # 7431 рдореЗрдВ рдорд╕реМрджрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрдЦреЗрдВред рдЙрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп kubectl replace тАФforce рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рд╣реЗрд▓реНрдо 2 рдХреЗ helm install тАФforce рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред --force рдзреНрд╡рдЬ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рднреА, рдЪрд╛рд░реНрдЯ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдЕрднреА рднреА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, cert-manager :

2020-03-05 12:15:19 CRITICAL: Command returned [ 1 ] exit code and error message [ Error: UPGRADE FAILED: cannot patch "cert-manager-cainjector" with kind Deployment: Deployment.apps "cert-manager-cainjector" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"cainjector", "app.kubernetes.io/instance":"cert-manager", "app.kubernetes.io/managed-by":"Helm", "app.kubernetes.io/name":"cainjector"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable && cannot patch "cert-manager" with kind Deployment: Deployment.apps "cert-manager" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"cert-manager", "app.kubernetes.io/instance":"cert-manager", "app.kubernetes.io/managed-by":"Helm", "app.kubernetes.io/name":"cert-manager"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable && cannot patch "cert-manager-webhook" with kind Deployment: Deployment.apps "cert-manager-webhook" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"webhook", "app.kubernetes.io/instance":"cert-manager", "app.kubernetes.io/managed-by":"Helm", "app.kubernetes.io/name":"webhook"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable

@ sc250024 рдореЗрд░реЗ рдкрд╛рд╕ рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рдореБрджреНрджрд╛ рд╣реИ рдЬрдм рдореИрдВрдиреЗ

# helm upgrade cert-manager jetstack/cert-manager --namespace cert-manager --atomic --cleanup-on-fail

# helm version
version.BuildInfo{Version:"v3.1.1", GitCommit:"afe70585407b420d0097d07b21c47dc511525ac8", GitTreeState:"clean", GoVersion:"go1.13.8"}

рдЬрдм --force рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ clusterIP рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рднреА рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рдиред рдпрд╣ рдореЗрд░реА рд╕реЗрд╡рд╛ рдореИрдирд┐рдлреЗрд╕реНрдЯ рд╣реИ:

apiVersion: v1
kind: Service
metadata:
  name: "{{ .Values.deploymentBaseName }}-{{ .Values.skaffoldUser }}"
  labels:
    name: "{{ .Values.deploymentBaseName }}-{{ .Values.skaffoldUser }}"
spec:
  ports:
    - port: {{ .Values.servicePort }}
      targetPort: {{ .Values.containerPort }}
      protocol: TCP
      name: http
    - name: debugger-http
      port: {{ .Values.debuggerPort }}
      targetPort: {{ .Values.debuggerPort }}
      protocol: TCP
  selector:
    app: "{{ .Values.deploymentBaseName }}-{{ .Values.skaffoldUser }}"
  type: ClusterIP

@davidfernandezm рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрд╛? рдореИрдВ рдЕрдкрдиреЗ рдЕрдВрдд рдореЗрдВ рд╡рд╣реА рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореЗрд░реА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрдк рд╣реИрдВред clusterIP рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рднреА рд╣реЗрд▓рдо рдЕрднреА рднреА рдЕрдкрдЧреНрд░реЗрдб рдкрд░ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред

рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИ

рдЗрд╕реЗ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдкреБрди: рдЙрдкрд░реЛрдХреНрдд рджреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВред

рдХреГрдкрдпрд╛ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░реЗрдВред рдХрд╛рд░рдг рдХреЛ рд╕рдордЭреЗ рдмрд┐рдирд╛ рдпрд╛ рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреИрд╕реЗ рд╕рд╛рдордиреЗ рдЖрддреА рд╣реИ, рд╣рдо рдЖрдкрдХреА рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдзрдиреНрдпрд╡рд╛рджред

@antonakv рдпрд╣ рдЕрдВрдХ 7956 рдХрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИ
@bacongobbler рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╣реЗрд▓реНрдо v3.0.0-rc.2 рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рд╕реЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рднреА рдЕрдЧрд░ рдореИрдВ --force рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЗрд▓реНрдо рдЕрдкрдбреЗрдЯ --рдЗрдВрд╕реНрдЯреЙрд▓ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реВрдВред --force рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдардВрдбрд╛! рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдЙрддреНрддрд░ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛, рдХрд┐ рдореБрдЭреЗ force: .. рд▓рд╛рдЗрди рдкрд░ рд╣реЗрд▓реНрдордлрд╛рдЗрд▓ yaml рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреА рд╣реИ:

helmDefaults:
  tillerless: true
  verify: false
  wait: true
  timeout: 600
  # force: true <---- THI ONE IS COMMENTED

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдХрд┐рд╕реА рдиреЗ рднреА рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдЕрдкрдиреЗ рдЪрд╛рд░реНрдЯ рд╕реЗ nginx-ingress рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдерд╛, рдПрдХ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдерд╛, рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдерд╛ред рдЗрд╕рд╕реЗ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдИрдкреА рдкрддреЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реБрдЖред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╣реЗрд▓реНрдо v3.0.0-rc.2 рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рд╕реЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рднреА рдЕрдЧрд░ рдореИрдВ --force рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЗрд▓реНрдо рдЕрдкрдбреЗрдЯ --рдЗрдВрд╕реНрдЯреЙрд▓ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реВрдВред --force рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж!

рд╣рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рдХрд╛рдо рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред
рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ

helm install in stable/inbucket 
helm upgrade in stable/inbucket 
Error: UPGRADE FAILED: cannot patch "in-inbucket" with kind Service: Service "in-inbucket" is invalid: spec.clusterIP: Invalid value: "": field is immutable

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ --force рдпрд╣рд╛рдВ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ force resource updates through a replacement strategy рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд░рдгрдиреАрддрд┐ рд╣реИ рддреЛ рд╕реЗрд╡рд╛ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдлрд┐рд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

@bacongobbler рдореИрдВ https://github.com/helm/helm/issues/7956 рдХреА рдЬрд╛рдБрдЪ рдХреЗ рдмрд╛рдж рдЗрд╕ рд╕реВрддреНрд░ рдкрд░ рдкрд╣реБрдБрдЪ рдЧрдпрд╛ рд╣реВрдБ

рдкрд┐рдЫрд▓реЗ рд╕рднреА рдЯрд┐рдкреНрдкрдгреАрдХрд╛рд░реЛрдВ рдХреА рддрд░рд╣: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ "рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА" рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдирд╡реАрдирддрдо рд╣реЗрд▓реНрдо рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИ рдпрджрд┐ --force рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкрддрд╡рд╛рд░ рд╕рдВрд╕реНрдХрд░рдг: 3.4.1

"рд╣реЗрд▓реНрдо-рдПрди рдХреНрдпреВрдм-рд╕рд┐рд╕реНрдЯрдо рдореЗрдирд┐рдлреЗрд╕реНрдЯ CHART_NAME | grep рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА" рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рддреНрд░реБрдЯрд┐:
field is immutable && failed to replace object: Service "SERVICE_NAME" is invalid: spec.clusterIP: Invalid value: "": field is immutable

https://github.com/helm/helm/issues/6378#issuecomment -557746499 рдореЗрдВ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╡рд╣реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ @nick4fake рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИред рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ --force , рдЖрдк рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЛ рдЕрдкрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдореИрдирд┐рдлреЗрд╕реНрдЯ рд▓реЗрдиреЗ рдФрд░ рд╡рд░реНрддрдорд╛рди рд▓рд╛рдЗрд╡ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЬрдмрд░рджрд╕реНрддреА рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣реЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдЖрдкрдХреЗ рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдореЗрдВ clusterIP рдлрд╝реАрд▓реНрдб рдирд╣реАрдВ рд╣реИ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЗрд╕реЗ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдк clusterIP рдлрд╝реАрд▓реНрдб рдХреЛ рд▓рд╛рдЗрд╡ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рддреНрд░реБрдЯрд┐ Invalid value: "": field is immutable ред

@bacongobbler рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦреЗрдж рд╣реИ рдЕрдЧрд░ рдореБрдЭреЗ рдпрд╣рд╛рдВ рдХреБрдЫ рдпрд╛рдж рдЖрддреА рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдореБрдЭреЗ

"рдореЗрд░реА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рд╣реЛрдЧреАред рдпрджрд┐ рдХреЛрдИ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдорд╛рди рдХреЛ рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░ рд╕реЗрдЯ рди рдХрд░реЗрдВ ... рдлрд╝реАрд▓реНрдб рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВред"

рддреЛ рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ "--force" рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдлрд╝реАрд▓реНрдб рдХреБрдЫ рд╕реНрдерд┐рд░ рдорд╛рди рдкрд░ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ?

рдЬрд╣рд╛рдБ рддрдХ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИ: рд╣рд╛рдБред

рдореЗрд░реА рд╕рдордЭ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ "рдмрд▓рдкреВрд░реНрд╡рдХ рдУрд╡рд░рд░рд╛рдЗрдЯрд┐рдВрдЧ" рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ "рд╣рдЯрд╛рдирд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛"ред рдХреНрдпрд╛ рдХреЛрдИ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдмрдЧ рд╣реИ?

рджреВрд╕рд░реА рдУрд░, рд╣реЗрд▓реНрдо рднреА рднреНрд░рд╛рдордХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ --force рдХреЛ "рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд░рдгрдиреАрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд▓ рд╕рдВрд╕рд╛рдзрди рдЕрджреНрдпрддрди" рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдмрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдХреЛрдИ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬрдмрд░рджрд╕реНрддреА рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ (рдзреНрд╡рдЬ рдХреЛ рдирд╛рдо рджреЗрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ --force-overwrite )ред рдЬрд╝рдмрд░рджрд╕реНрддреА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдлрд┐рд░ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдФрд░ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдЬреИрд╕рд╛ рд▓рдЧреЗрдЧрд╛ (рдПрдХ рдзреНрд╡рдЬ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ --force-recreate )ред рдмреЗрд╢рдХ, --force-recreate рдХреБрдЫ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЦрддрд░рдирд╛рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдлрд▓ рд╣реЛрдЧрд╛ред

рд╡реИрд╕реЗ рднреА, рд╣реЗрд▓реНрдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝реЙрд▓рдмреИрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ (рдЬрд┐рд╕реЗ --force-overwrite рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдлрд╝реАрд▓реНрдб рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рд╕рдВрд╕рд╛рдзрди рдХреЛ рд╣рдЯрд╛рдирд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬреИрд╕рд╛ рдХрд┐ --force-recreate )ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

macknight picture macknight  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bq1756 picture bq1756  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

antoniaklja picture antoniaklja  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

PhilippeDupont picture PhilippeDupont  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tjquinno picture tjquinno  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ