ãã«ã ã¢ããã°ã¬ãŒããçºè¡ãããšã次ã®ãããªãšã©ãŒã衚瀺ãããŸãïŒãmy-serviceãããclusterIPïŒNoneããããtypeïŒLoadBalancerãã«ãã£ãŒã«ãclusterIPãªãã§å€æŽãããŸãïŒ
Error: UPGRADE FAILED: Service "my-service" is invalid: spec.clusterIP: Invalid value: "": field is immutable
ãã ãããmy-serviceãã¿ã€ããæ°ããã¿ã€ããLoadBalancerãã«å€æŽãããªãããšãé€ããŠãæ°ããããŒãžã§ã³ã®ä»ã®ãã¹ãŠã®ãããã¯åŒãç¶ãåèµ·åãããŸãã
ãã«ã ãç¹å®ã®ãã£ãŒã«ãã§ã®å€æŽããµããŒãããŠããªãããã«ã¢ããã°ã¬ãŒãã倱æããçç±ãç解ããŠããŸãã ãããããªããã«ã ã¯ãããåèµ·åããããšã«ãã£ãŠä»ã®ãµãŒãã¹/ããããã¢ããã°ã¬ãŒãããŸãã ã¢ããã°ã¬ãŒãäžã«ãšã©ãŒãçºçããå Žåãhelmã¯äœãããŸãããïŒ ç§ã¯ããµãŒãã¹ã®ã»ããå šäœãããã±ãŒãžãšããŠæ±ãããã¹ãŠãã¢ããã°ã¬ãŒããããããŸã£ããã¢ããã°ã¬ãŒãããªããã®ãããããè¡ãããã«helmãé€å€ããŸããããç§ã®æåŸ ã¯ééã£ãŠããããã§ãã
ãããŠãããç§ãã¡ããã®ãããªç¶æ³ã«é¥ã£ãå Žåãç§ãã¡ã¯ãã®ç¶æ³ããæãåºãããã«äœããã¹ãã§ããããïŒ ãmy-serviceããæ°ããã¿ã€ãã«ã¢ããã°ã¬ãŒãããæ¹æ³ã®ããã«ïŒ
ãŸãã-dry-runãªãã·ã§ã³ã䜿çšãããšãhelmã«ãšã©ãŒã衚瀺ãããŸããã
ããã¯ãã°ãšèŠãªãããŸããããããšãäºæ³ãããŸãããã€ãŸããã¢ããã°ã¬ãŒãã«ãã£ãŠãšã©ãŒãã¹ããŒãããŸãããäžéšã®ãµãŒãã¹ã¯ã¢ããã°ã¬ãŒããããŸãã
helm version
åºåïŒ
Client: &version.Version{SemVer:"v2.12.3", GitCommit:"eecf22f77df5f65c823aacd2dbd30ae6c65f186e", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
kubectl version
åºåïŒ
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"2bd9643cee5b3b3a5ecbd3af49d09018f0773c77", GitTreeState:"clean", BuildDate:"2019-09-18T14:36:53Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"14+", GitVersion:"v1.14.10-gke.27", GitCommit:"145f9e21a4515947d6fb10819e5a336aff1b6959", GitTreeState:"clean", BuildDate:"2020-02-21T18:01:40Z", GoVersion:"go1.12.12b4", Compiler:"gc", Platform:"linux/amd64"}
ã¯ã©ãŠããããã€ããŒ/ãã©ãããã©ãŒã ïŒAKSãGKEãMinikubeãªã©ïŒïŒ
GKEãšãã³ã¯ã
åçŸããã®ã«ååãªæ å ±ãæäŸãããŠããŸããã åçŸå¯èœãªãã£ãŒãã®äœææ¹æ³ãšã䜿çšããHelmã³ãã³ããæããŠãã ããã
ããã«ã¡ã¯ãããã«åçŸæé ããããŸã
以äžã®ããã«2ã€ã®ãµãŒãã¹yamlãã¡ã€ã«ããããŸãã
nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
prometheus.yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: prometheus
spec:
template:
metadata:
labels:
app: prometheus
spec:
containers:
- image: prom/prometheus
name: prometheus
ports:
- containerPort: 9090
imagePullPolicy: Always
hostname: prometheus
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: prometheus
spec:
selector:
app: prometheus
clusterIP: None
ports:
- name: headless
port: 9090
targetPort: 0
次ã«ãhelm1 / templates /ã«2ã€ã®ãã¡ã€ã«ãé 眮ããŠã€ã³ã¹ããŒã«ããŸãã ããã¯ãprometheusãµãŒãã¹ãclusterIPã䜿çšããnginxããŒãžã§ã³ã1.14.2ã§ããããšã瀺ããŠããŸã
# helm upgrade --install test helm1
Release "test" does not exist. Installing it now.
NAME: test
LAST DEPLOYED: Tue Apr 21 20:42:55 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 35d
prometheus ClusterIP None <none> 9090/TCP 7s
# kubectl describe deployment nginx |grep Image
Image: nginx:1.14.2
次ã«ãnginx.yamlã®ã»ã¯ã·ã§ã³ãæ°ããããŒãžã§ã³1.16ã«æŽæ°ããŸã
image: nginx:1.16
ãããŠprometheus.yamlãLoadBalancerã«å€æŽããŸãã
spec:
selector:
app: prometheus
ports:
- name: "9090"
port: 9090
protocol: TCP
targetPort: 9090
type: LoadBalancer
次ã«ãããããhelm2ãšããŠé 眮ããã¢ããã°ã¬ãŒããå®è¡ããŸãã 次ã«ãã¢ããã°ã¬ãŒãã§ããã€ãã®ãšã©ãŒãã¹ããŒãããããšãããããŸãããnginxãµãŒãã¹ã¯æ°ããããŒãžã§ã³ã«ã¢ããã°ã¬ãŒãããããšã§ééããŸãããããã¡ããŠã¹ã¯ãŸã ã¯ã©ã¹ã¿ãŒIPã䜿çšããŠãããããã¢ããã°ã¬ãŒããããŸããã
# helm upgrade --install test helm2
Error: UPGRADE FAILED: cannot patch "prometheus" with kind Service: Service "prometheus" is invalid: spec.clusterIP: Invalid value: "": field is immutable
# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 35d
prometheus ClusterIP None <none> 9090/TCP 5m34s
# kubectl describe deployment nginx |grep Image
Image: nginx:1.16
ãã«ã ãªã¹ãã¯
# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
test default 2 2020-04-21 20:48:20.133644429 -0700 PDT failed
ãã«ã ã®æŽå²
# helm history test
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Tue Apr 21 20:42:55 2020 deployed helm-helm 1.0.0.6 Install complete
2 Tue Apr 21 20:48:20 2020 failed helm-helm 1.0.0.6 Upgrade "test" failed: cannot patch "prometheus" with kind Service: Service "prometheus" is invalid: spec.clusterIP: Invalid value: "": field is immutable
v3.2.0ã§ãåãåäœããããv3.1.3ãžã®ããŠã³ã°ã¬ãŒãã¯äžæçãªä¿®æ£ã§ã
Helm 2-> 3ã®ç§»è¡ã§ãããããããããããŸãã å€æããããªãªãŒã¹ãåããŠã¢ããã°ã¬ãŒãããããšãããšããããããããçºçããŸãã ããã¯ããããŸã§ã®Nginx IngressãPrometheus OperatorãGraylogãããã³Jaegerãã£ãŒãçšã§ãã ãããã®ã»ãšãã©ã¯ããµãŒãã¹ãåé€ããŠHelmã«åäœæãããã ãã§æºè¶³ããŠããŸãããNginxIngressã®å Žåããã¯ãªãã·ã§ã³ã§ã¯ãããŸãã...
ç§ã®å Žåã®åé¡ã説æããŠãããã®https://github.com/helm/helm/issues/6378#issuecomment-557746499ãèŠã€ããŸããã
ïŒ6378ã®è€è£œãšããŠç· ãããããŸãã @cablespaghettiã¯ããã®åäœã®ããæ·±ã説æãèŠã€ããŸãããããã¯éåžžã«è©³çŽ°ã«èª¬æãããŠããŸãã
ãããããŸããããªãå Žåã¯ãç¥ãããã ããã
@GaramNickãªãããŠã³ã°ã¬ãŒãã§ãããä¿®æ£ãããã®ã§ããïŒ ããŠã³ã°ã¬ãŒãã«ãã£ãŠä¿®æ£ããããäœãã«ã€ããŠè©³ãã説æããŠããã ããŸããïŒ
@bacongobblerããªããããã«ããéã ãªãªãŒã¹ãåé€ããŠåãããã€ããã«ãã®ç¶æ³ãä¿®æ£ããæ¹æ³ã¯ãããŸããïŒ ãã«ã 2ãŸãã¯3ã§ãããè¡ãæ¹æ³ã¯ãªãããã§ããæ¢åã®ãªãªãŒã¹ããŒã¿ãããã¯ãããã®ã§ããã«ã ã¯clusterIPãåžžã«çç¥ãããŠãããšèãããããã¯å¿ èŠãããŸããã
kubectl edit
ãè©ŠããŸãããïŒ
åãåé¡ãããã 3.1.3
ããŠã³ã°ã¬ãŒããããšãåé¡ãä¿®æ£ãããŸããã ç§ã®æšæž¬ã§ã¯ãããã¯Create
ã§ãããæŽæ°ã§ã¯ãªãã空ã«èšå®ããããšããŠããããšãèæ
®ããŠã httpsïŒ//github.com/helm/helm/pull/7649/commits/d829343c1514db17bee7a90624d06cdfbffde963ã®æ°ããããžãã¯ã«é¢ä¿ããŠãããšæããŸãã IPãšå
¥åããããã®ãåå©çšããªã
èå³æ·±ãçºèŠã 調æ»ããŠããã ãããããšãããããŸãã
@jlegroneããã調ã¹ãæéããããããããŸãããïŒ
@bacongobbler CI / CDãã€ãã©ã€ã³ã¯ãHelmã䜿çšããŠãClusterIPã¿ã€ãã®ãµãŒãã¹ãå«ãã¢ããªã±ãŒã·ã§ã³ãæŽæ°ããŸãã ã³ãã³ãïŒ
helm upgrade --install --force \
--wait \
--set image.repository="$CI_REGISTRY_IMAGE" \
--set image.tag="$CI_COMMIT_REF_NAME-$CI_COMMIT_SHA" \
--set image.pullPolicy=IfNotPresent \
--namespace="$KUBE_NAMESPACE" \
"$APP_NAME" \
./path/to/charts/
v3.2.0ã§ã¯ããã®ã³ãã³ãã¯Service "service-name" is invalid: spec.clusterIP: Invalid value: "": field is immutable
倱æããŸã
v3.1.3ã§ã¯ãããã¯æ£åžžã«æ©èœããŸãã
ããã«è©³ããæ å ±ãå¿ èŠãªå Žåã¯ãç¥ãããã ããã
ãã£ã¡ãäžç·ã 次ã®service.yamlãhelm2ã§äœã¶æãæ£åžžã«åäœããŠããŸããã
移è¡åŸãhelm 3.2 helm upgrade
ã³ãã³ããäžèšã®ä¿åãšã©ãŒã§å€±æããŸããã 3.1.3ã«ããŠã³ã°ã¬ãŒããããšè§£æ±ºããŸããã
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.global.name }}
namespace: {{ index .Values.global.namespace .Values.global.env }}
labels:
microservice: {{ .Values.global.name }}
spec:
type: ClusterIP
ports:
- port: 8080
selector:
microservice: {{ .Values.global.name }}
åãåé¡ãããã3.1.3ã«ããŠã³ã°ã¬ãŒããããšä¿®æ£ãããŸããã ç§ã®æšæž¬ã§ã¯ãããã¯æŽæ°ã§ã¯ãªãäœæã§ããã空ã®IPãèšå®ããããšããå ¥åãããIPãåå©çšããªãããšãèæ ®ããŠãd829343ã®æ°ããããžãã¯ã«é¢ä¿ããŠãããšæããŸãã
@ n1kooãããåé¡ã®åå ã§ãããšæãçç±ã説æã§ããŸããïŒ ããã¯ã€ã³ã¹ããŒã«ã³ãŒãã§ãããã¢ããã°ã¬ãŒãã³ãŒãã§ã¯ãªãããã3.1ã®create
ãããæ©èœããŸãã
@adamreeseã§åé¡ã確èªããŠããŸããã @ n1kooãç¹å®ãããããã§ãããš_ ã Createã¡ãœããã¯ããµãŒãã¹ã®éåžžã®3æ¹åå·®åããã€ãã¹ããŸããããã«ããããµãŒãã¹ã®clusterIPãKubernetesã«ãã£ãŠå ¥åãããå€ã§ã¯ãªãããã«èšå®ãããŸãã ãã®çµæãAPIãµãŒããŒã«éä¿¡ããããããã§ã¹ãã¯ã¯ã©ã¹ã¿ãŒIPããªã»ããããŠããããã«èŠããŸãããããã¯ãµãŒãã¹ã§ã¯éæ³ã§ãïŒãŠãŒã¶ãŒãæå³ãããã®ã§ã¯ãããŸããïŒã
ããã«ã€ããŠã¯ãŸã 調æ»äžã§ãã詳现ãããã次第ãæŽæ°ããŸãã
ãããã£ãŠã httpsïŒ //github.com/helm/helm/issues/6378#issuecomment-557746499ã¯æ£ããã§ãã ãã®åé¡ãç¶è¡ããåã«ãããããèªã¿ãã ããã clusterIP: ""
ãèšå®ãããŠããå ŽåãKubernetesã¯IPãå²ãåœãŠãŸãã 次ã®Helmã¢ããã°ã¬ãŒãã§ã clusterIP:""
å床å®è¡ãããšãIPããªã»ããããããšããŠããããã«èŠãããããäžèšã®ãšã©ãŒãçºçããŸãã ïŒã¯ããKubernetesã¯ãµãŒãã¹ã®spec:
ã»ã¯ã·ã§ã³ãå€æŽããŸãïŒïŒ
Create
ã¡ãœããã3æ¹åã®å·®åããã€ãã¹ããå ŽåãKubernetesã«ãã£ãŠå²ãåœãŠãããIPã¢ãã¬ã¹ã«èšå®ãã代ããã«ã clusterIP: ""
ãèšå®ããŸãã
åçŸããã«ã¯ïŒ
$ helm create issue7956
$ # edit issue7956/templates/service.yaml and add `clusterIP: ""` under `spec:`
$ helm upgrade --install issue7956 issue7956
...
$ helm upgrade issue7956 issue7956
Error: UPGRADE FAILED: cannot patch "issue-issue7956" with kind Service: Service "issue-issue7956" is invalid: spec.clusterIP: Invalid value: "": field is immutable
2åç®ã«ã¢ããã°ã¬ãŒããå®è¡ãããšã倱æããŸãã
@IdanAdarã®ã±ãŒã¹ãmaster
åçŸã§ããŸããã
@GaramNickã¯ããšã©ãŒãåçŸããããã«äœ¿çšããŠãããµãŒãã¹ã«é¢ããååãªæ å ±ããããŸããã
ç§ã®ç¶æ³ïŒ
version.BuildInfo{Version:"v3.2.0", GitCommit:"e11b7ce3b12db2941e90399e874513fbd24bcb71", GitTreeState:"clean", GoVersion:"go1.13.10"}
ãŸããw /ã§ãã¹ãæžã¿version.BuildInfo{Version:"v3.2.1", GitCommit:"fe51cd1e31e6a202cba7dead9552a6d418ded79a", GitTreeState:"clean", GoVersion:"go1.13.10"}
次ã®ãµãŒãã¹ãã³ãã¬ãŒããäžããããŸãã
apiVersion: v1
kind: Service
metadata:
name: {{ include "app.fullname" . }}
labels:
{{- include "app.labels" . | nindent 4 }}
annotations:
getambassador.io/config: |
---
apiVersion: ambassador/v1
kind: Mapping
name: {{ include "app.fullname" . }}_mapping
prefix: /{{ include "app.fullname" . }}
host: "^{{ include "app.fullname" . }}.*"
host_regex: true
service: {{ include "app.fullname" . }}.{{ .Release.Namespace }}
rewrite: ""
timeout_ms: 60000
bypass_auth: true
cors:
origins: "*"
methods: POST, GET, OPTIONS
headers:
- Content-Type
- Authorization
- x-client-id
- x-client-secret
- x-client-trace-id
- x-flow-proto
---
apiVersion: ambassador/v1
kind: Mapping
name: {{ include "app.fullname" . }}_swagger_mapping
ambassador_id: corp
prefix: /swagger
host: "^{{ include "app.fullname" . }}.corp.*"
host_regex: true
service: {{ include "app.fullname" . }}.{{ .Release.Namespace }}
rewrite: ""
bypass_auth: true
cors:
origins: "*"
methods: POST, GET, OPTIONS
headers:
- Content-Type
- x-client-id
- x-client-secret
- Authorization
- x-flow-proto
namespace: {{ .Release.Namespace }}
spec:
type: {{ .Values.service.type }}
selector:
{{- include "app.selectorLabels" . | nindent 4 }}
ports:
- port: {{ .Values.service.port }}
name: http-rest-hub
targetPort: http-rest
- port: {{ .Values.service.healthPort }}
name: http-health
targetPort : http-health
ããã«ããã upgrade --install
åŸã«æ¬¡ã®ããã«ãªããŸãã
apiVersion: v1
kind: Service
metadata:
annotations:
getambassador.io/config: |
---
apiVersion: ambassador/v1
kind: Mapping
name: hub-alt-bor_mapping
prefix: /hub-alt-bor
host: "^hub-alt-bor.*"
host_regex: true
service: hub-alt-bor.brett
rewrite: ""
timeout_ms: 60000
bypass_auth: true
cors:
origins: "*"
methods: POST, GET, OPTIONS
headers:
- Content-Type
- Authorization
- x-client-id
- x-client-secret
- x-client-trace-id
- x-flow-proto
---
apiVersion: ambassador/v1
kind: Mapping
name: hub-alt-bor_swagger_mapping
ambassador_id: corp
prefix: /swagger
host: "^hub-alt-bor.corp.*"
host_regex: true
service: hub-alt-bor.brett
rewrite: ""
bypass_auth: true
cors:
origins: "*"
methods: POST, GET, OPTIONS
headers:
- Content-Type
- x-client-id
- x-client-secret
- Authorization
- x-flow-proto
meta.helm.sh/release-name: alt-bor
meta.helm.sh/release-namespace: brett
creationTimestamp: ...
labels:
app: hub
app.kubernetes.io/instance: alt-bor
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: hub
app.kubernetes.io/version: v1.6.0-rc.26
deploy.xevo.com/stackname: bor-v0.1-test
helm.sh/chart: hub-0.0.4
owner: gateway
ownerSlack: TODOunknown
name: hub-alt-bor
namespace: brett
resourceVersion: ...
selfLink: ...
uid: ...
spec:
clusterIP: 172.20.147.13
ports:
- name: http-rest-hub
port: 80
protocol: TCP
targetPort: http-rest
- name: http-health
port: 90
protocol: TCP
targetPort: http-health
selector:
app.kubernetes.io/instance: alt-bor
app.kubernetes.io/name: hub
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
次ã«ãããŒãžã§ã³0.0.5ããã³upgrade --install
ãšãŸã£ããåããã£ãŒããå床ã¢ããããŒããããšã次ã®ããã«ãªããŸãã
Error: UPGRADE FAILED: failed to replace object: Service "hub-alt-bor" is invalid: spec.clusterIP: Invalid value: "": field is immutable
å¯äžã®éãã¯ã helm.sh/chart
ã©ãã«ã®å€ã§ãããçŸåšã¯hub-0.0.5
å€ã«ãªã£ãŠããŸãã
ããã¯å·šå€§ãªãããã«ãŒã§ãã
@GaramNickã¯ããšã©ãŒãåçŸããããã«äœ¿çšããŠãããµãŒãã¹ã«é¢ããååãªæ å ±ããããŸããã
@technosophosäœãå¿ èŠã§ããïŒ è©³çŽ°ããç¥ããããŸãã
æŽæ°ïŒ helm upgrade --install
w / --force
ã䜿çšããŠããå Žåã«ã®ã¿ãæŽæ°ã¯å€±æããŸãã ãããã«ãŒãæžããŸããã
ããïŒ ããã¯é¢çœããã ããã«ããããšã©ãŒã®è¿œè·¡ã容æã«ãªããŸãã
ããã«ã¡ã¯@ technosophos @ bacongobbleråã2ã€ã®åé¡ããããŸãïŒ
version.BuildInfo{Version:"v3.2.1", GitCommit:"fe51cd1e31e6a202cba7dead9552a6d418ded79a", GitTreeState:"clean", GoVersion:"go1.13.10"}
clusterIP
ãªãService
ãã³ãã¬ãŒãããããŸãããkubernetesã¯clusterIP
èªåçã«å²ãåœãŠãŸããapiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}
labels:
app: {{ .Values.image.name }}
release: {{ .Release.Name }}
spec:
type: ClusterIP
ports:
- port: {{ .Values.service.port }}
targetPort: {{ .Values.service.port }}
protocol: TCP
name: http
selector:
app: {{ .Values.image.name }}
release: {{ .Release.Name }}
helm 2to3 convert
ã䜿çšããŠhelm 3ã«ç§»è¡ããåŸãåããªãªãŒã¹helm3 upgrade --install --force
ã¢ããã°ã¬ãŒãããŠã¿ãŠãã ããã
failed to replace object: Service "dummy-stage" is invalid: spec.clusterIP: Invalid value: "": field is immutable
--force
ãªãã§åãããšãããå Žå-> helm3 upgrade --install
ãšã©ãŒãªãã§æ£åžžã«åäœããŸãã
--force
ãªãäžå€ãã£ãŒã«ãã§ããDeploymentã®spec.selector.matchLabels
ãå€æŽãããå Žåããšã©ãŒãçºçããŸããcannot patch "dummy-stage" with kind Deployment: Deployment.apps "dummy-stage" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app.kubernetes.io/name":"web-nerf-dummy-app"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
--force
åãããšããããšããšã©ãŒãçºçããŸãã
failed to replace object: Deployment.apps "dummy-stage" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app.kubernetes.io/name":"web-nerf-dummy-app"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
--force
ã«å¯ŸããŠhelm 2
ãšåãåäœãå®è£
ããããšã¯å¯èœã§ããïŒãšã©ãŒãªãã§äžå€ã®ãã¡ã€ã«ãã¢ããã°ã¬ãŒãã§ããããã§ããïŒ
apiVersion: v1
kind: Service
metadata:
name: zipkin-proxy
namespace: monitoring
spec:
ports:
- port: 9411
targetPort: 9411
selector:
app: zipkin-proxy
type: ClusterIP
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: zipkin-proxy
namespace: monitoring
spec:
replicas: {{ .Values.zipkinProxy.replicaCount }}
template:
metadata:
labels:
app: zipkin-proxy
annotations:
prometheus.io/scrape: 'true'
spec:
containers:
- image: {{ .Values.image.repository }}/zipkin-proxy
name: zipkin-proxy
env:
- name: STORAGE_TYPE
value: stackdriver
helm upgrade -i --debug --force --namespace monitoring zipkin-proxy --values ./values.yaml.tmp .
forceãªãã·ã§ã³ãåé€ããŠã¿ãŸããã v3.1.3ãv3.2.0ãv3.2.1ã§ãåãåé¡ãè©ŠããŸããã
ã¹ã¿ãã¯ãã¬ãŒã¹
history.go:52: [debug] getting history for release zipkin-proxy
upgrade.go:84: [debug] preparing upgrade for zipkin-proxy
upgrade.go:92: [debug] performing update for zipkin-proxy
upgrade.go:234: [debug] creating upgraded release for zipkin-proxy
client.go:163: [debug] checking 2 resources for changes
client.go:195: [debug] error updating the resource "zipkin-proxy":
cannot patch "zipkin-proxy" with kind Service: Service "zipkin-proxy" is invalid: spec.clusterIP: Invalid value: "": field is immutable
client.go:403: [debug] Looks like there are no changes for Deployment "zipkin-proxy"
upgrade.go:293: [debug] warning: Upgrade "zipkin-proxy" failed: cannot patch "zipkin-proxy" with kind Service: Service "zipkin-proxy" is invalid: spec.clusterIP: Invalid value: "": field is immutable
Error: UPGRADE FAILED: cannot patch "zipkin-proxy" with kind Service: Service "zipkin-proxy" is invalid: spec.clusterIP: Invalid value: "": field is immutable
helm.go:75: [debug] cannot patch "zipkin-proxy" with kind Service: Service "zipkin-proxy" is invalid: spec.clusterIP: Invalid value: "": field is immutable
helm.sh/helm/v3/pkg/kube.(*Client).Update
/home/circleci/helm.sh/helm/pkg/kube/client.go:208
helm.sh/helm/v3/pkg/action.(*Upgrade).performUpgrade
/home/circleci/helm.sh/helm/pkg/action/upgrade.go:248
helm.sh/helm/v3/pkg/action.(*Upgrade).Run
/home/circleci/helm.sh/helm/pkg/action/upgrade.go:93
main.newUpgradeCmd.func1
/home/circleci/helm.sh/helm/cmd/helm/upgrade.go:137
github.com/spf13/cobra.(*Command).execute
/go/pkg/mod/github.com/spf13/[email protected]/command.go:826
github.com/spf13/cobra.(*Command).ExecuteC
/go/pkg/mod/github.com/spf13/[email protected]/command.go:914
github.com/spf13/cobra.(*Command).Execute
/go/pkg/mod/github.com/spf13/[email protected]/command.go:864
main.main
/home/circleci/helm.sh/helm/cmd/helm/helm.go:74
runtime.main
/usr/local/go/src/runtime/proc.go:203
runtime.goexit
/usr/local/go/src/runtime/asm_amd64.s:1357
UPGRADE FAILED
main.newUpgradeCmd.func1
/home/circleci/helm.sh/helm/cmd/helm/upgrade.go:139
github.com/spf13/cobra.(*Command).execute
/go/pkg/mod/github.com/spf13/[email protected]/command.go:826
github.com/spf13/cobra.(*Command).ExecuteC
/go/pkg/mod/github.com/spf13/[email protected]/command.go:914
github.com/spf13/cobra.(*Command).Execute
/go/pkg/mod/github.com/spf13/[email protected]/command.go:864
main.main
/home/circleci/helm.sh/helm/cmd/helm/helm.go:74
runtime.main
/usr/local/go/src/runtime/proc.go:203
runtime.goexit
/usr/local/go/src/runtime/asm_amd64.s:1357
Helm Chartã®ããŒãžã§ã³ãå€æŽãããæ¢åã®å±éãããå Žåããã®åé¡ãçºçããŸãã
HelmV3.2.0ã®äœ¿çš
3.1.2ãžã®ããŠã³ã°ã¬ãŒããæ©èœããããšã確èªã§ããŸãã
@ gor181ã©ãããã°ãããåçŸã§ããŸããïŒ 3.2ã§å£ãããã3.1ã§åäœãããã®ã¯äœã§ããïŒ ãã£ãŒãïŒãŸãã¯å°ãªããšãsvcãã³ãã¬ãŒãïŒãšã³ãã³ãã¯ãäœãå€æŽãããããææ¡ã§ããããã«ããããã«å¿ èŠãªãã®ã§ãã
@azarudeena @ alexandrsemak-äž¡æ¹ã«ãšã£ãŠã --force
ãã©ã°ããããåŒãèµ·ãããŠããåå ã§ãã --force
ãåé€ããå Žåãã¢ããã°ã¬ãŒãã¯æ©èœããŸããïŒ
@technosophosã¯åãªãã§è©ŠããŸãããæ©èœããŸããã§ããã 3.1.2ã§è©Šãããšãèšç»ããŠãã
@azarudeenaåé¡ãåçŸããããã®äžé£ã®æé ãæäŸããŠããã ããŸããïŒ ãµãŒãã¹ãšãããã€ã¡ã³ããã³ãã¬ãŒãã®åºåãããã€ã瀺ããŸããããåºåãããããªãvalues.yaml.tmp
ãChart.yamlãåç
§ããŸããã
åé¡ãåçŸããããã«äœ¿çšã§ãããµã³ãã«ãã£ãŒããæäŸããŠããã ããŸããïŒ
@bacongobbleræ§é ãå ±æããŠããŸãã
Chart.yaml
apiVersion: v1
description: Deploys Stackdriver Trace Zipkin Proxy
name: zipkin-proxy
version: 1.0.0
ãã³ãã¬ãŒãyamlãäžã«é 眮ããŸããã
ç§ã®å€yaml.tmpã¯ä»¥äžã®éãã§ã
zipkinProxy:
replicaCount: 1
image:
repository: openzipkin/zipkin
ãã«ã ããã±ãŒãžãšããŠããã±ãŒãžåããŸã--version
3.1.2ããã³3.1.1ã«ããŠã³ã°ã¬ãŒãããŠã¿ãŸããã ãŸã ããã«ããããåœãŠãããšã¯ã§ããŸããã
ç§ã¯åãåé¡ã«çŽé¢ããŸãããããã©ãã©ãŒã ãã«ã ãããã€ããŒãä»ããŠãã«ã ãã£ãŒããã¢ããã°ã¬ãŒãããŸããã
force_update = true
ãforce_update = false
åŸããšã©ãŒã¯ãªããªããŸããã
Helm Chartã®ããŒãžã§ã³ãå€æŽãããæ¢åã®å±éãããå Žåããã®åé¡ãçºçããŸãã
HelmV3.2.0ã®äœ¿çš
--forceãã©ã°ãç¡å¹ã«ãããšæ©èœããŸãã
@technosophos --force
ãhelm3ã«ç§»è¡ãããšãã«ClusterIPã®åé¡ã解決ããŸããhelm2ã¯helm3ãã¢ããã°ã¬ãŒããããšãã«ClusterIPãã¢ããã°ã¬ãŒãããããšããªãããã§ãã
Helm 3ã¯ã matchLabels
ãšããŠæåºãããäžå€ã®åé¡ã解決ã§ããŸãã
Kubernetesã¯ãµãŒãã¹ã®
spec:
ã»ã¯ã·ã§ã³ãå€æŽããŸã
ããã¯ãæ ¹æ¬çãªKubernetesã®èšèšäžã®æ¬ é¥ãšèŠãªãå¿
èŠããããŸããïŒ https://kubernetes.io/docs/concepts/services-networking/service/#choosing -your-own-ip-addressã¯ããã®åäœã«ã€ããŠèšåããŠããŸããã å²ãåœãŠãããå€ãstatus
ã»ã¯ã·ã§ã³ã«é
眮ãããããšãæåŸ
ããŠããŸããã
ïŒ Pod
ã®.spec.nodeName
ã«ãåæ§ã®åäœããããŸãããHelmãŠãŒã¶ãŒã«åœ±é¿ãäžããå¯èœæ§ã¯ã»ãšãã©ãããŸãããïŒ
v3.2.3ïŒ-forceã§å€±æãã-forceãªãã§æž¡ãããŸãã ãã£ãŒããã³ãã¬ãŒãã«ClusterIP:
ããããŸããã https://github.com/helm/helm/pull/8000/filesã§ä¿®æ£ãããã¯ãã ã£ããšæã
upgrade.go:121: [debug] preparing upgrade for eos-eve-srv-d1
upgrade.go:129: [debug] performing update for eos-eve-srv-d1
upgrade.go:308: [debug] creating upgraded release for eos-eve-srv-d1
client.go:173: [debug] checking 6 resources for changes
client.go:432: [debug] Replaced "eos-eve-srv-d1-fsnode" with kind ServiceAccount for kind ServiceAccount
client.go:432: [debug] Replaced "eos-eve-srv-d1-fsnode-imagepullsecret" with kind Secret for kind Secret
client.go:432: [debug] Replaced "eos-eve-srv-d1-fsnode-config" with kind ConfigMap for kind ConfigMap
client.go:205: [debug] error updating the resource "eos-eve-srv-d1-fsnode":
failed to replace object: Service "eos-eve-srv-d1-fsnode" is invalid: spec.clusterIP: Invalid value: "": field is immutable
client.go:432: [debug] Replaced "eos-eve-srv-d1-fsnode" with kind Deployment for kind Deployment
client.go:432: [debug] Replaced "eos-eve-srv-d1-fsnode" with kind Ingress for kind Ingress
upgrade.go:367: [debug] warning: Upgrade "eos-eve-srv-d1" failed: failed to replace object: Service "eos-eve-srv-d1-fsnode" is invalid: spec.clusterIP: Invalid value: "": field is immutable
Error: UPGRADE FAILED: failed to replace object: Service "eos-eve-srv-d1-fsnode" is invalid: spec.clusterIP: Invalid value: "": field is immutable
helm.go:84: [debug] failed to replace object: Service "eos-eve-srv-d1-fsnode" is invalid: spec.clusterIP: Invalid value: "": field is immutable
helm.sh/helm/v3/pkg/kube.(*Client).Update
/private/tmp/helm-20200608-50972-gq0j1j/src/helm.sh/helm/pkg/kube/client.go:218
helm.sh/helm/v3/pkg/action.(*Upgrade).performUpgrade
/private/tmp/helm-20200608-50972-gq0j1j/src/helm.sh/helm/pkg/action/upgrade.go:322
helm.sh/helm/v3/pkg/action.(*Upgrade).Run
/private/tmp/helm-20200608-50972-gq0j1j/src/helm.sh/helm/pkg/action/upgrade.go:130
main.newUpgradeCmd.func1
/private/tmp/helm-20200608-50972-gq0j1j/src/helm.sh/helm/cmd/helm/upgrade.go:144
github.com/spf13/cobra.(*Command).execute
/private/tmp/helm-20200608-50972-gq0j1j/pkg/mod/github.com/spf13/[email protected]/command.go:842
github.com/spf13/cobra.(*Command).ExecuteC
/private/tmp/helm-20200608-50972-gq0j1j/pkg/mod/github.com/spf13/[email protected]/command.go:950
github.com/spf13/cobra.(*Command).Execute
/private/tmp/helm-20200608-50972-gq0j1j/pkg/mod/github.com/spf13/[email protected]/command.go:887
main.main
/private/tmp/helm-20200608-50972-gq0j1j/src/helm.sh/helm/cmd/helm/helm.go:83
runtime.main
/usr/local/Cellar/[email protected]/1.13.12/libexec/src/runtime/proc.go:203
runtime.goexit
/usr/local/Cellar/[email protected]/1.13.12/libexec/src/runtime/asm_amd64.s:1357
UPGRADE FAILED
main.newUpgradeCmd.func1
/private/tmp/helm-20200608-50972-gq0j1j/src/helm.sh/helm/cmd/helm/upgrade.go:146
github.com/spf13/cobra.(*Command).execute
/private/tmp/helm-20200608-50972-gq0j1j/pkg/mod/github.com/spf13/[email protected]/command.go:842
github.com/spf13/cobra.(*Command).ExecuteC
/private/tmp/helm-20200608-50972-gq0j1j/pkg/mod/github.com/spf13/[email protected]/command.go:950
github.com/spf13/cobra.(*Command).Execute
/private/tmp/helm-20200608-50972-gq0j1j/pkg/mod/github.com/spf13/[email protected]/command.go:887
main.main
/private/tmp/helm-20200608-50972-gq0j1j/src/helm.sh/helm/cmd/helm/helm.go:83
runtime.main
/usr/local/Cellar/[email protected]/1.13.12/libexec/src/runtime/proc.go:203
runtime.goexit
/usr/local/Cellar/[email protected]/1.13.12/libexec/src/runtime/asm_amd64.s:1357
ç§ã¯ãã®åé¡ã3.2.3
芳å¯ããŠããŸããã 3.2.0
芳å¯ããŠããŸããã åãç¡å¹ã«ããããšãã䜿çšå¯èœãªåé¿çã§ããã
åèãŸã§ã«ãOPã«ãã£ãŠæèµ·ãããåé¡ãšãããã§æèµ·ããã--force
ã«é¢ããã³ã¡ã³ãã¯ãåå¥ã®åå¥ã®åé¡ã§ãã ããã§OPã®åé¡ã«çŠç¹ãåœãŠãŠã¿ãŸãããã
æ確ã«ããããã«ãOPã説æããŠããåé¡ã¯ã httpsïŒ //github.com/helm/helm/issues/7956#issuecomment-620749552ã§ç¹å®ãããæœåšçãªãªã°ã¬ãã·ã§ã³@ n1kooã§ãã ããã¯æ£åœãªãã°ã®ããã§ãã
圌ãã®ããã«åããŠãã--force
ã®åé€ã«èšåããŠããä»ã®ã³ã¡ã³ãã¯ãKubernetesã®èŠ³ç¹ããæå³çã§äºæ³ãããåäœã§ãã --force
ã䜿çšãããšãHelmã«Kubernetesã«å¯ŸããŠPUTãªã¯ãšã¹ããè¡ãããã«èŠæ±ããŸãã äºå®äžãKubernetesã«ã¿ãŒã²ãããããã§ã¹ãïŒãã£ãŒãã§helm upgrade
ããã¬ã³ããªã³ã°ããããã³ãã¬ãŒãïŒãççã®ãœãŒã¹ãšããŠååŸããã¯ã©ã¹ã¿ãŒå
ã®ãªãœãŒã¹ãã¬ã³ããªã³ã°ããããããã§ã¹ãã§äžæžãããããã«èŠæ±ããŠããŸãã ããã¯kubectl apply --overwrite
ãšåãã§ãã
ã»ãšãã©ã®å Žåããã³ãã¬ãŒãã¯ã¯ã©ã¹ã¿ãŒIPãæå®ããŠããŸãããã€ãŸãã helm upgrade --force
ã¯ãµãŒãã¹ã®ã¯ã©ã¹ã¿ãŒIPãåé€ïŒãŸãã¯å€æŽïŒããããã«èŠæ±ããŠããŸãã ããã¯ãKubernetesã®èŠ³ç¹ããã¯éæ³ãªæäœã§ãã
ããã¯ïŒ7082ã«ãèšèŒãããŠããŸãã
ããã--force
åé€ãæ©èœããçç±ã§ããããŸããHelmã¯PATCHæäœãè¡ããã©ã€ãç¶æ
ãšã¯ç°ãªããã¯ã©ã¹ã¿ãŒIPããããé©çšããããããã§ã¹ãã«ããŒãžããã¢ããã°ã¬ãŒãåŸãã¯ã©ã¹ã¿ãŒIPãä¿æããŸãã
Helm 2ã§è¡ãããããã«ããªããžã§ã¯ãã匷å¶çã«åé€ããŠåäœæããå Žåã¯ãïŒ7431ãåç §ããŠãã ããã
ãããç©äºãæããã«ããããšãé¡ã£ãŠããŸãã
ä»åŸã¯ãããã§OPã®åé¡ã«çŠç¹ãåœãŠãŠã¿ãŸãããã
æ¢ç¥ã®åé¿çã¯ãããŸããïŒ https://github.com/helm/charts/tree/master/stable/rabbitmq-haã1.34.1ãã1.46.4ã«ã¢ããã°ã¬ãŒãããããšãããšãã«ãåãåé¡ã«çŽé¢ããŸããã æããã«ã --force
ãŸãã¯ãã«ã ã®3.1.3
ãžã®ããŠã³ã°ã¬ãŒãã¯åœ¹ã«ç«ã¡ãŸããã§ãããåé¡ã®ãµãŒãã¹ãåé€ãããšã helm upgrade
ã圹ã«ç«ã¡ãŸããã
@EvgeniGordeevããã¯ãããããªããŠã³ã¿ã€ã ã§ããŸããã£ã
ãããnginxincã®ã€ã³ã°ã¬ã¹ãã£ãŒãã§ãããããŸããã éåžžã¯--force
ã䜿çšããŸãã
ãã®åé¡ã¯ãŸã éããŠããã®ã§ãããã«å¯ŸåŠããããã®äœããã®ä¿®æ£ã®èšç»ã¯ãããŸããããããšãããã¯èšèšã©ããã«æ©èœããŠãããšèŠãªãããŸããïŒãããšåãåäœã§éãããä»ã®åé¡ãšåºå¥ããã®ã¯é£ããã§ãïŒïŒ ããã¯ãã£ãŒãèªäœã®åé¡ã§ããã clusterIP: ""
ã¯äœ¿çšããã代ããã«å€ãå®å
šã«çç¥ããå¿
èŠããããšãã説æã1ã€èªã¿ãŸããã
ããã¯ããã£ãŒãéçºè ãšäžç·ã«è¿œããããã¹ããã®ã§ããïŒ
@ cdunford-ææ¡ãããhttps://github.com/helm/helm/issues/7956#issuecomment-643432099ã®ããã«ã --force
䜿çšãåæ¢ããããã«ä¿®æ£ããããšãææ¡ããŸããã
ãã®PRã¯ããã®åé¡ã«ã察åŠã§ããŸãïŒïŒ7431ïŒãã®ã³ã¡ã³ãã§ãææ¡ãããŠããŸãïŒ...
ãã®åé¡ã¯Nåçºçãããã€ãã©ã€ã³ã§ã--force
ãã©ã°ã䜿çšããŠããŸãã
å ã®åé¡ã¯helm2ã«ä»éããŠããã®ã§ãhelm2ã§ãä¿®æ£ãããŸããïŒ @bacongobbler
@bacongobbler ãåããæäŸããããšã¯ããããåãé€ããããŠã³ã°ã¬ãŒãããããšã圹ç«ã€å Žåããªãåé¡ãšã¯ç°ãªããšèšãã®ã§ããïŒ
ã€ãŸããHelm 3.3.4ã httpsïŒ//artifacthub.io/packages/helm/bitnami/nginxãã£ãŒãã§åé¡ãçºçããã°ããã§ãå€ã¯å€æŽãããŠããŸããã GCP / GKEãAzure / AKSãAWS / EKSã®3ã€ã®ç°ãªãã¯ã©ãŠãã§ãã¹ããããŸãããã3ã€ãã¹ãŠã§å€±æããŸããã
Helmã3.1.3ã«ããŠã³ã°ã¬ãŒãããçŽåŸã«åäœããã-forceããã©ã°ãªãã§3.3.4ã«ãåäœããŸããã
以åã®ã³ã¡ã³ãã§ããŠãŒã¶ãŒã«ãã®ãšã©ãŒã衚瀺ãããå¯èœæ§ã®ãã2ã€ã®å¥åã®åºæã®ã±ãŒã¹ãããããšãããªãæ確ã«ãããšæããŸããã 1ã€ã¯OPã®å Žåã§ãã ãã1ã€ã¯ã-forceã®äœ¿çšã«ãããã®ã§ãã ããã§ã¯OPã®åé¡ã«çŠç¹ãåœãŠãŠããŸãã
OPãšåãåé¡ãçºçããŠãã人ã ãå°éããããããã®ã¹ã¬ããã®ãã€ãžã£ãã¯ããããŠ--forceã«ã€ããŠè©±ããŠãã ããã OPã®åé¡ã解決ããæ¹æ³ã«ã€ããŠè©±ãåã£ãŠããŸãã OPã説æããåé¡ãšã¯é¢ä¿ã®ãªããããã¯ã«ã€ããŠè©±ãããå Žåã¯ãæ°ãããã±ãããéããã以åã«è¡ã£ãææ¡ã確èªããŠãã ããã
ãã«ã 2ã®ãããä¿®æ£ããããšã«é¢ããŠ@tibetsam ïŒãããã Helm 2ã®ãã°ä¿®æ£ã¯æäŸãããªããªããŸããã詳现ã«ã€ããŠã¯ã httpsïŒ//helm.sh/blog/helm-v2-deprecation-timeline/ãåç §ããŠãã ããã
ãžã¥ããµãŒãããã«ã ãã£ãŒãã§OPã®åé¡ãåçŸã§ãããšæããŸãã
ããŸãããã°ã以äžã®æé ã§ãåé¡ãåçŸããããšãã§ããŸãã
éèŠ
Jupyterhubãã«ã ãã£ãŒãã®ãµãŒãã¹ä»æ§ã«ã¯spec.clusterIP
ãã£ãŒã«ããå«ãŸããŠããŸãããããã¯ãããšãã°ã https ïŒ ãŸãã /jupyterhub/templates/hub/service.yaml#L17 -L29
ç§ã¯åé¡ãåçŸããããã«èµãšçš®é¡ã䜿çšããŠããŸãïŒ
â helm version
version.BuildInfo{Version:"v3.4.0", GitCommit:"7090a89efc8a18f3d8178bf47d2462450349a004", GitTreeState:"clean", GoVersion:"go1.14.10"}
â kind version
kind v0.9.0 go1.15.2 linux/amd64
â kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.2", GitCommit:"52c56ce7a8272c798dbc29846288d7cd9fbae032", GitTreeState:"clean", BuildDate:"2020-04-16T11:56:40Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.1", GitCommit:"206bcadf021e76c27513500ca24182692aabd17e", GitTreeState:"clean", BuildDate:"2020-09-14T07:30:52Z", GoVersion:"go1.15", Compiler:"gc", Platform:"linux/amd64"}
åçŸããæ¹æ³
kind create cluster
proxy:
secretToken: "3a4bbf7405dfe1096ea2eb9736c0df299299f94651fe0605cfb1c6c5700a6786"
åèãŸã§ã«ããã«ã ãã¡ã€ã«ã®ã€ã³ã¹ããŒã«æé ã«åŸã£ãŠããŸãïŒãªã³ã¯ïŒ
helm repo add jupyterhub https://jupyterhub.github.io/helm-chart/
helm repo update
--force
ãªãã·ã§ã³ä»ãïŒRELEASE=jhub
NAMESPACE=jhub
helm upgrade --cleanup-on-fail --force \
--install $RELEASE jupyterhub/jupyterhub \
--namespace $NAMESPACE \
--create-namespace \
--version=0.9.0 \
--values config.yaml
ãšã©ãŒïŒ
Error: UPGRADE FAILED: failed to replace object: PersistentVolumeClaim "hub-db-dir" is invalid: spec: Forbidden: spec is immutable after creation except resources.requests for bound claims
  core.PersistentVolumeClaimSpec{
  AccessModes: []core.PersistentVolumeAccessMode{"ReadWriteOnce"},
  Selector: nil,
  Resources: core.ResourceRequirements{Requests: core.ResourceList{s"storage": {i: resource.int64Amount{value: 1073741824}, s: "1Gi", Format: "BinarySI"}}},
-Â VolumeName: "",
+Â VolumeName: "pvc-c614de5c-4749-4755-bd3a-6e603605c44e",
-Â StorageClassName: nil,
+Â StorageClassName: &"standard",
  VolumeMode: &"Filesystem",
  DataSource: nil,
  }
&& failed to replace object: Service "hub" is invalid: spec.clusterIP: Invalid value: "": field is immutable && failed to replace object: Service "proxy-api" is invalid: spec.clusterIP: Invalid value: "": field is immutable && failed to replace object: Service "proxy-public" is invalid: spec.clusterIP: Invalid value: "": field is immutable
ç§ã¯èµåã3.3.4ã«ããŸãããããã¯ãŸã åé¡ã§ã
Helm 2.14.1ã®åé¡ã¯ã --force
ãªãã®ããããã§çºçããŸã
åé¿çïŒ type.spec: NodePort
åãæ¿ãããšããã«ã ãã£ãŒãã®ã¢ããã°ã¬ãŒããä¿®æ£ãããŸããã
--forceãã©ã°ã䜿çšããv3.4.1ã§ãåãåé¡ãçºçããŸãã
@bacongobbler OPã®åé¡ïŒïŒ6378ãšã¯å¥ïŒããã€ãžã£ãã¯ãããªãããã«
ãšã©ãŒã¡ãã»ãŒãžããšã©ãŒïŒã¢ããã°ã¬ãŒãã«å€±æããŸããïŒ _replace_ ...ã«å€±æã_-- forceã
ãšã©ãŒã¡ãã»ãŒãžããšã©ãŒïŒã¢ããã°ã¬ãŒãã«å€±æããŸããïŒ _patch_ã§ããŸã䜿çšããŠããŸãããïŒ åçŸæ¹æ³ããã®å·ã«æçš¿ããŠãã ããã
@zpittmansf
helm3 upgrade concourse concourse/concourse -f temp.yaml --force
Error: UPGRADE FAILED: failed to replace object: Service "concourse-web" is invalid: spec.clusterIP: Invalid value: "None": field is immutable && failed to replace object: Service "concourse-web-prometheus" is invalid: spec.clusterIP: Invalid value: "": field is immutable && failed to replace object: Service "concourse-web-worker-gateway" is invalid: spec.clusterIP: Invalid value: "": field is immutable
helm3 upgrade concourse concourse/concourse -f temp.yaml
Error: UPGRADE FAILED: cannot patch "concourse-web" with kind Service: Service "concourse-web" is invalid: spec.clusterIP: Invalid value: "None": field is immutable
Helm3.4.2ã§ãåãåé¡ãçºçããŠããŸãã ãããã€ã¡ã³ãããµãŒãã¹ã¢ã«ãŠã³ããããã³ãµãŒãã¹ãäœæãããã«ã ãã£ãŒããå®è¡ããŸãã å±éæã«ãã£ãŒãã®æ¢åã®ã©ãã«ã»ããã«ã©ãã«ãè¿œå ããŸããããã¢ããã°ã¬ãŒããæåŠããŸããã
helm upgrade test-whale charts/app-template/ --install --values values.yaml --namespace whale --force
Error: UPGRADE FAILED: failed to replace object: Service "test-whale" is invalid: spec.clusterIP: Invalid value: "": field is immutable && failed to replace object: Deployment.apps "test-whale-canary" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"test-whale", "app-id":"302040", "environment":"test", "version":"latest"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable && failed to replace object: Deployment.apps "test-whale" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"test-whale", "app-id":"302040", "environment":"test", "version":"latest"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
åºæ¬çã«ãæåã®ãã«ã å±éãè¶ ããŠã©ãã«ãè¿œå ããããšã¯ã§ããªãããã§ãã
ã²ã©ãããã«èãããŸãããHelmã¯ç¹å¥ãªæ±ããåãããäžå€ãã£ãŒã«ããã®ãªã¹ããå®è£ ã§ããŸããïŒ
ãã®å Žåããäžå€ãã£ãŒã«ããã¯ãµãŒãã¹ãªããžã§ã¯ãã®spec.clusterIP
-Helmã¯ãããäžå€ãšèŠãªããaïŒçœ®ãæããè©Šã¿ãªããbïŒåé€ãè©Šã¿ãªããããªAPIãªã¯ãšã¹ããçæããŸãã ãcïŒæŽæ°ããããšããªãã§ãã ããã
å®éã«ã¯ãHelmã¯äžå€ãã£ãŒã«ãã®çŸåšã®å€ãæ¢ãããã®å€ãAPIãªã¯ãšã¹ãã®ãã€ããŒãã«å«ããŸãã ãã®çµæãk8s APIãµãŒããŒã¯ãHelmã®ãªã¯ãšã¹ãããOKããã®ãã£ãŒã«ããå€æŽããããšã¯ããŠããŸããããšèŠãªããŸãã
çŸåšã®ç¶æ³ã§ã¯ãHelmã¯ç¹å®ã®ãªãœãŒã¹ã®çå®ãä¿æããŠãããšæ³å®ããŠãããããHelmã¯ç¹ã«ãµãŒãã¹ãªãœãŒã¹ã«å¯ŸããŠéåžžã«ä¿¡é Œæ§ãäœããªã£ãŠããŸãã ããã¯ãHelmãèªèããŠããªããµãŒããŒåŽã®æ°ããããããã£ããªãœãŒã¹ãåãåã£ãå¯èœæ§ãããããããã®åé¡ã®åé¡ã«ã€ãªãã誀ã£ãä»®å®ã§ãã ãããã£ãŠãHelmã¯ãk8sã«æºæ ããåžæ°ã«ãªãããã«ãã©ã®ãã£ãŒã«ãã«ç¹å¥ãªåŠçãå¿ èŠããç¥ãå¿ èŠããããŸãã
PSã ãŸãã kubectl
ã¯ãã¯ã©ã€ã¢ã³ãåŽã§å€ãã®ããžãã¯ãå®è£
ããŠããããã kubectl
ã¯ãããã®æé»çãªèŠä»¶ã§å®è¡ã§ããŸãã
@ jbilliau-rcd
--forceã䜿çšããªãã§ãã ãã
@pre
äžè ããŒãžã§äœãããããªããšãèµ·ãã£ãŠãããšæããŸãã ãããããæåŸã«é©çšããã泚éãäœããã®çç±ã§äžé©åã«èšé²ãããŠããŸãã
ç§ã¯ãããç解ããããšã«ãªã£ãã ã©ãããDeployment
ãšãããã¹ããã¯ã§ã©ãã«ãå€æŽã§ããŸããããããã»ã¬ã¯ã¿ãŒã§ã¯å€æŽã§ããŸãã...... Kubernetesã¯ããã奜ã¿ãŸããã ããã¯ç§ã«ã¯å¥åŠã§ãã ããšãã°ãã«ããªã¢å±éäžã«version
"v2"ã®ãããã®ã¿ãéžæããããã«å±éãå€æŽããã«ã¯ãä»ã«ã©ã®ãããªæ¹æ³ããããŸããïŒ çŸåšãç§ã«ã¯ãããè¡ãæ¹æ³ããªãã®ã§ããã®éšåã§æ··ä¹±ããŠããŸãã
ãã«ã ããŒãžã§ã³3.5.0ã«ã¢ããã°ã¬ãŒããããšãåé¡ã解決ããŸããã
ãã«ã ããŒãžã§ã³3.5.0ã«ã¢ããã°ã¬ãŒããããšãåé¡ã解決ããŸããã
ã©ã®ãããæ£ç¢ºã«ïŒ
ãã«ã ããŒãžã§ã³3.5.0ã«ã¢ããã°ã¬ãŒããããšãåé¡ã解決ããŸããã
HelmããŒãžã§ã³3.5.0ã¯ãŸã æ©èœããŸããã
ãããã --force
ãªãã§åäœããŸãã
ãã«ã 3.5.2ã§ãããæã€
--force
ãåé€ããããšããŸããããããã§ãåãåé¡ãçºçããŸãã
Upgrade "gateway" failed: failed to replace object: Service "ingress"
is invalid: spec.clusterIPs[0]: Invalid value: []string(nil): primary clusterIP
can not be unset
ãããŸã§ã®ãšããã劥åœãªåé¿çãèŠã€ãããŸãã- --reuse-values
ãã©ã°ã ç§ã®å Žåã¯ããŸããããŸãã
3.5.2ã§ããã®åé¡ãçºçãã-reuse-valuesã®æç¡ã«ããããã
3.5.3ã«ãããããããŸãïŒ/
æãåèã«ãªãã³ã¡ã³ã
åèãŸã§ã«ãOPã«ãã£ãŠæèµ·ãããåé¡ãšãããã§æèµ·ããã
--force
ã«é¢ããã³ã¡ã³ãã¯ãåå¥ã®åå¥ã®åé¡ã§ãã ããã§OPã®åé¡ã«çŠç¹ãåœãŠãŠã¿ãŸããããæ確ã«ããããã«ãOPã説æããŠããåé¡ã¯ã httpsïŒ //github.com/helm/helm/issues/7956#issuecomment-620749552ã§ç¹å®ãããæœåšçãªãªã°ã¬ãã·ã§ã³@ n1kooã§ãã ããã¯æ£åœãªãã°ã®ããã§ãã
圌ãã®ããã«åããŠãã
--force
ã®åé€ã«èšåããŠããä»ã®ã³ã¡ã³ãã¯ãKubernetesã®èŠ³ç¹ããæå³çã§äºæ³ãããåäœã§ãã--force
ã䜿çšãããšãHelmã«Kubernetesã«å¯ŸããŠPUTãªã¯ãšã¹ããè¡ãããã«èŠæ±ããŸãã äºå®äžãKubernetesã«ã¿ãŒã²ãããããã§ã¹ãïŒãã£ãŒãã§helm upgrade
ããã¬ã³ããªã³ã°ããããã³ãã¬ãŒãïŒãççã®ãœãŒã¹ãšããŠååŸããã¯ã©ã¹ã¿ãŒå ã®ãªãœãŒã¹ãã¬ã³ããªã³ã°ããããããã§ã¹ãã§äžæžãããããã«èŠæ±ããŠããŸãã ããã¯kubectl apply --overwrite
ãšåãã§ããã»ãšãã©ã®å Žåããã³ãã¬ãŒãã¯ã¯ã©ã¹ã¿ãŒIPãæå®ããŠããŸãããã€ãŸãã
helm upgrade --force
ã¯ãµãŒãã¹ã®ã¯ã©ã¹ã¿ãŒIPãåé€ïŒãŸãã¯å€æŽïŒããããã«èŠæ±ããŠããŸãã ããã¯ãKubernetesã®èŠ³ç¹ããã¯éæ³ãªæäœã§ããããã¯ïŒ7082ã«ãèšèŒãããŠããŸãã
ããã
--force
åé€ãæ©èœããçç±ã§ããããŸããHelmã¯PATCHæäœãè¡ããã©ã€ãç¶æ ãšã¯ç°ãªããã¯ã©ã¹ã¿ãŒIPããããé©çšããããããã§ã¹ãã«ããŒãžããã¢ããã°ã¬ãŒãåŸãã¯ã©ã¹ã¿ãŒIPãä¿æããŸããHelm 2ã§è¡ãããããã«ããªããžã§ã¯ãã匷å¶çã«åé€ããŠåäœæããå Žåã¯ãïŒ7431ãåç §ããŠãã ããã
ãããç©äºãæããã«ããããšãé¡ã£ãŠããŸãã
ä»åŸã¯ãããã§OPã®åé¡ã«çŠç¹ãåœãŠãŠã¿ãŸãããã