рдЪрд╛рд░реНрдЯ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд/рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:
./рд╣реЗрд▓реНрдо рдЕрдкрдЧреНрд░реЗрдб --рдЗрдВрд╕реНрдЯреЙрд▓
--рд╕реЗрдЯ 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
рдпрд╣ рд╕рдВрднрд╡рдд: рд╣реЗрд▓реНрдо 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
ред
рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ:
clusterIP
рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИclusterIP
рдСрдЯреЛ-рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ред рд╣рдо рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 172.17.0.1
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ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: ""
рдЕрдиреНрдпрдерд╛, рд╣реЗрд▓реНрдо рд╕реЗрд╡рд╛ рдХреЗ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рдХреЛ рдСрдЯреЛ-рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдЖрдИрдкреА рдкрддреЗ рд╕реЗ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ред
рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛!
рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЕрдЧрд░ рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд┐рдпрд╛ рддреЛ рдореИрдВ рдПрдХ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛:
kubectl get svc | grep ingress
controller:
service:
clusterIP: <cluster-ip-address-for-controller>
defaultBackend:
service:
clusterIP: <cluster-ip-address-for-default-backend>
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдП рдЬрд╛ рд░рд╣реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдордиреЛрд░рдВрдЬрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╡рд╣ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЧреБрдб рдХреЙрд▓ @рдЯреНрд░реЗрдЪрд░ред --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
редрдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ:
- рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдкрд░, рдЪрд╛рд░реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣
clusterIP
рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ- Kubernetes рдиреЗ рд╕реЗрд╡рд╛ рдХреЛ рдПрдХ
clusterIP
рдСрдЯреЛ-рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ред рд╣рдо рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП172.17.0.1
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ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
)ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╣реЗрд▓реНрдо v3.0.0-rc.2 рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА рд╕реЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рднреА рдЕрдЧрд░ рдореИрдВ --force рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЗрд▓реНрдо рдЕрдкрдбреЗрдЯ --рдЗрдВрд╕реНрдЯреЙрд▓ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реВрдВред --force рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ