helm version
åºåïŒv2.14.3
kubectl version
åºåïŒã¯ã©ã€ã¢ã³ãïŒv1.15.3ããµãŒããŒïŒv1.16.0-rc.1
ã¯ã©ãŠããããã€ããŒ/ãã©ãããã©ãŒã ïŒAKSãGKEãMinikubeãªã©ïŒïŒIBM Cloud Kubernetes Service
$ helm init --service-account tiller
$HELM_HOME has been configured at /Users/xxxx/.helm.
Error: error installing: the server could not find the requested resource
$ helm init --debug --service-account tiller
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: helm
name: tiller
name: tiller-deploy
namespace: kube-system
spec:
.
.
.
ãã«ã ãtiller
ãããã€ã¡ã³ããäœæããããšããŠããããã§ãïŒ apiVersion: extensions/v1beta1
ã«ãããšïŒ https ïŒ
ããã¯ãããµããŒããããŠããŸããã
helm init --upgrade
extensions/v1beta1
ãšapps/v1
äž¡æ¹ã®èããæ©ã®å±éã調æŽããè€éãã®ãããéå»ã«èããæ©ãapps / v1ã«æŽæ°ããããšãé¿ããŠããŸããã Kubernetes 1.16.0ã®ãµããŒããéå§ããããä»åŸãã®ã±ãŒã¹ãåŠçããŠãæ°ããapiVersionã«ç§»è¡ããå¿
èŠãããããã§ãã
çæçãªåé¿çã¯æ¬¡ã®ãšããã§ãã
helm init --output yaml | sed 's<strong i="6">@apiVersion</strong>: extensions/v1beta1<strong i="7">@apiVersion</strong>: apps/v1@' | kubectl apply -f -
å®éãããã¯ååã§ã¯ãããŸããã ããã§ããšã©ãŒãçºçããŸãïŒ
error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec
ããã«ã¯æ¬¡ã®ããããé©çšã§ããŸãã
/usr/local/bin/kubectl patch --local -oyaml -f - -p '{"spec":{"selector": {"app":"helm","name":"tiller"}}}'
ãããïŒ --override
ãã©ã°ã䜿çšãããšãã¯ã¬ã€ãžãŒãªsedããã¯ãšåãå¹æãåŸãããå¯èœæ§ããããŸã:)
ãããïŒ
--override
ãã©ã°ã䜿çšãããšãã¯ã¬ã€ãžãŒãªsedããã¯ãšåãå¹æãåŸãããå¯èœæ§ããããŸã:)
ã¯ããã§ã圌ã®ã¯ã¬ã€ãžãŒãªsedããã¯ã¯ã³ããŒïŒããŒã¹ãã§ããŸããããã®helm init --override "apiVersion"="apps/v1"
ã¯æ©èœããŸããã ããããŸãããsedããã¯ãæ©èœããŸããã
çŸåšã®åé¿çã¯æ¬¡ã®ããã«ãªããŸãã
helm init --output yaml> tiller.yaml
ãããŠtiller.yamlãæŽæ°ããŸãïŒ
---
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: helm
name: tiller
name: tiller-deploy
namespace: kube-system
spec:
replicas: 1
strategy: {}
selector:
matchLabels:
app: helm
name: tiller
....
次ã®sedã¯ç§ã®ããã«åããŸãïŒ
helm init --service-account tiller --output yaml | sed 's<strong i="6">@apiVersion</strong>: extensions/v1beta1<strong i="7">@apiVersion</strong>: apps/v1@' | sed 's@ replicas: 1@ replicas: 1\n selector: {"matchLabels": {"app": "helm", "name": "tiller"}}@' | kubectl apply -f -
@mattymoãœãªã¥ãŒã·ã§ã³ïŒkubectl patch --localã䜿çšïŒã®åé¡ã¯ãå ¥åã«è€æ°ã®ãªãœãŒã¹ïŒããã§ã¯ãããã€ã¡ã³ããšãµãŒãã¹ïŒãå«ãŸããŠããå Žåã¯æ©èœããªãããã«èŠããããšã§ãã
Kubernetes 1.16.0ã¯æšæ¥ãªãªãŒã¹ãããŸããïŒ2018幎9æ18æ¥ã
äžèšã®åé¿çã䜿çšããªãéãããã®ææ°ã®KubernetesãªãªãŒã¹ã§ã¯Helmãå£ããŠããŸãã
ãã®åé¡ã¯ãã€ä¿®æ£ããã Helm 2.15.0
ã¯ãã€ãªãªãŒã¹ãããŸããïŒ
1ã€å°ãªãsedã䜿çšãããå Žå:)
helm init --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's<strong i="6">@apiVersion</strong>: extensions/v1beta1<strong i="7">@apiVersion</strong>: apps/v1@' | kubectl apply -f -
ããããšãïŒ
ä»æ¥ãç§ã¯åãåé¡ã«ééããŸãããç§ã¯èªåã§ã©ãã«ãå€æŽããŸããã ã©ãã«ãapps/v1
ã«å€æŽãã selector
éšåãè¿œå ããŸããä»ã®ãšãããããã©ãŒãã³ã¹ã¯åªããŠããŸãã以äžã¯ç§ã®yamlãã¡ã€ã«ã§ãã
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: helm
name: tiller
name: tiller-deploy
namespace: kube-system
spec:
replicas: 1
strategy: {}
selector:
matchLabels:
app: helm
name: tiller
template:
metadata:
creationTimestamp: null
labels:
app: helm
name: tiller
spec:
automountServiceAccountToken: true
containers:
- env:
- name: TILLER_NAMESPACE
value: kube-system
- name: TILLER_HISTORY_MAX
value: "0"
image: gcr.io/kubernetes-helm/tiller:v2.14.3
imagePullPolicy: IfNotPresent
livenessProbe:
httpGet:
path: /liveness
port: 44135
initialDelaySeconds: 1
timeoutSeconds: 1
name: tiller
ports:
- containerPort: 44134
name: tiller
- containerPort: 44135
name: http
readinessProbe:
httpGet:
path: /readiness
port: 44135
initialDelaySeconds: 1
timeoutSeconds: 1
resources: {}
serviceAccountName: tiller
status: {}
@jbretteããªãã¯ç§ã®ããŒããŒã§ãïŒ ç§ã¯selector
ã¹ã¿ã³ã¶ã«èŠåŽããŠããŸããã
ä»æ¥ãç§ã¯åãåé¡ã«ééããŸãããç§ã¯èªåã§ã©ãã«ãå€æŽããŸããã ã©ãã«ã
apps/v1
ã«å€æŽããselector
éšåãè¿œå ããŸããä»ã®ãšãããããã©ãŒãã³ã¹ã¯åªããŠããŸãã以äžã¯ç§ã®yamlãã¡ã€ã«ã§ããapiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: helm name: tiller name: tiller-deploy namespace: kube-system spec: replicas: 1 strategy: {} selector: matchLabels: app: helm name: tiller template: metadata: creationTimestamp: null labels: app: helm name: tiller spec: automountServiceAccountToken: true containers: - env: - name: TILLER_NAMESPACE value: kube-system - name: TILLER_HISTORY_MAX value: "0" image: gcr.io/kubernetes-helm/tiller:v2.14.3 imagePullPolicy: IfNotPresent livenessProbe: httpGet: path: /liveness port: 44135 initialDelaySeconds: 1 timeoutSeconds: 1 name: tiller ports: - containerPort: 44134 name: tiller - containerPort: 44135 name: http readinessProbe: httpGet: path: /readiness port: 44135 initialDelaySeconds: 1 timeoutSeconds: 1 resources: {} serviceAccountName: tiller status: {}
å€æŽããæ¹æ³ ïŒ è©³çŽ°ãæããŠãã ããã
ä»æ¥ãç§ã¯åãåé¡ã«ééããŸãããç§ã¯èªåã§ã©ãã«ãå€æŽããŸããã ã©ãã«ã
apps/v1
ã«å€æŽããselector
éšåãè¿œå ããŸããä»ã®ãšãããããã©ãŒãã³ã¹ã¯åªããŠããŸãã以äžã¯ç§ã®yamlãã¡ã€ã«ã§ããapiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: helm name: tiller name: tiller-deploy namespace: kube-system spec: replicas: 1 strategy: {} selector: matchLabels: app: helm name: tiller template: metadata: creationTimestamp: null labels: app: helm name: tiller spec: automountServiceAccountToken: true containers: - env: - name: TILLER_NAMESPACE value: kube-system - name: TILLER_HISTORY_MAX value: "0" image: gcr.io/kubernetes-helm/tiller:v2.14.3 imagePullPolicy: IfNotPresent livenessProbe: httpGet: path: /liveness port: 44135 initialDelaySeconds: 1 timeoutSeconds: 1 name: tiller ports: - containerPort: 44134 name: tiller - containerPort: 44135 name: http readinessProbe: httpGet: path: /readiness port: 44135 initialDelaySeconds: 1 timeoutSeconds: 1 resources: {} serviceAccountName: tiller status: {}
@ gm12367å€æŽæ¹æ³ãšè©³çŽ°ãæããŠããã ããŸããïŒ
ä»æ¥ãç§ã¯åãåé¡ã«ééããŸãããç§ã¯èªåã§ã©ãã«ãå€æŽããŸããã ã©ãã«ã
apps/v1
ã«å€æŽããselector
éšåãè¿œå ããŸããä»ã®ãšãããããã©ãŒãã³ã¹ã¯åªããŠããŸãã以äžã¯ç§ã®yamlãã¡ã€ã«ã§ããapiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: helm name: tiller name: tiller-deploy namespace: kube-system spec: replicas: 1 strategy: {} selector: matchLabels: app: helm name: tiller template: metadata: creationTimestamp: null labels: app: helm name: tiller spec: automountServiceAccountToken: true containers: - env: - name: TILLER_NAMESPACE value: kube-system - name: TILLER_HISTORY_MAX value: "0" image: gcr.io/kubernetes-helm/tiller:v2.14.3 imagePullPolicy: IfNotPresent livenessProbe: httpGet: path: /liveness port: 44135 initialDelaySeconds: 1 timeoutSeconds: 1 name: tiller ports: - containerPort: 44134 name: tiller - containerPort: 44135 name: http readinessProbe: httpGet: path: /readiness port: 44135 initialDelaySeconds: 1 timeoutSeconds: 1 resources: {} serviceAccountName: tiller status: {}
@ gm12367å€æŽæ¹æ³ãšè©³çŽ°ãæããŠããã ããŸããïŒ
ããšãã°ã helm init --service-account tiller --tiller-namespace kube-system --debug
ã䜿çšããŠYAML圢åŒã®ãããã§ã¹ããå°å·ã§ããŸãã --debug
ãªãã·ã§ã³ã¯ãããè¡ããŸã
@ gm12367ã¯ããå°å·ç©ã¯è¡šç€ºãããŸãããåºåãããŸãã ã§ã¯ãã©ã®ã³ãã³ãã§åºåãå€æŽã§ããŸããïŒ
@ gm12367 apps / v1ãå€æŽããã»ã¬ã¯ã¿ãŒéšåãè¿œå ããã
@ puww1010åºåããã¡ã€ã«ã«ãªãã€ã¬ã¯ãããVIMã䜿çšããŠå€æŽããŸããã 以äžã®ã³ãã³ããåèã«ããŠãã ããã
# helm init --service-account tiller --tiller-namespace kube-system --debug >> helm-init.yaml
# vim helm-init.yaml
# kubectl apply -f helm-init.yaml
goç°å¢ãã»ããã¢ãããããŠããŠããã®åé¡ãä¿®æ£ãã次ã®PR [Kubernetes1.16ãšäºææ§ã®ããHelminit]ïŒ6462ãããŒãžããããŸã§åŸ ãŠãªãå Žåã¯ããã€ã§ã次ã®ããšãã§ããŸãã
ãã«ã
mkdir p ${GOPATH}/src/k8s.io
cd ${GOPATH}/src/k8s.io
git clone -b kube16 https://github.com/keleustes/helm.git
cd helm
make bootstrap build
ãã¹ãïŒ
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:"16", GitVersion:"v1.16.0", GitCommit:"2bd9643cee5b3b3a5ecbd3af49d09018f0773c77", GitTreeState:"clean", BuildDate:"2019-09-18T14:27:17Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
/bin/helm init --wait --tiller-image gcr.io/kubernetes-helm/tiller:v2.14.3
Creating /home/xxx/.helm
Creating /home/xxx/.helm/repository
Creating /home/xxx/.helm/repository/cache
Creating /home/xxx/.helm/repository/local
Creating /home/xxx/.helm/plugins
Creating /home/xxx/.helm/starters
Creating /home/xxx/.helm/cache/archive
Creating /home/xxx/.helm/repository/repositories.yaml
Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com
Adding local repo with URL: http://127.0.0.1:8879/charts
$HELM_HOME has been configured at /home/xxx/.helm.
Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.
Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
To prevent this, run `helm init` with the --tiller-tls-verify flag.
For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation
`` `bash
kubectl getdeployment.apps / tiller-deploy -n kube-system -o yaml
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
creationTimestamp: "2019-09-22T01:01:11Z"
generation: 1
labels:
app: helm
name: tiller
name: tiller-deploy
namespace: kube-system
resourceVersion: "553"
selfLink: /apis/apps/v1/namespaces/kube-system/deployments/tiller-deploy
uid: 124001ca-6f31-417e-950b-2452ce70f522
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: helm
name: tiller
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: helm
name: tiller
spec:
automountServiceAccountToken: true
containers:
- env:
- name: TILLER_NAMESPACE
value: kube-system
- name: TILLER_HISTORY_MAX
value: "0"
image: gcr.io/kubernetes-helm/tiller:v2.14.3
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
httpGet:
path: /liveness
port: 44135
scheme: HTTP
initialDelaySeconds: 1
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
name: tiller
ports:
- containerPort: 44134
name: tiller
protocol: TCP
- containerPort: 44135
name: http
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /readiness
port: 44135
scheme: HTTP
initialDelaySeconds: 1
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
status:
availableReplicas: 1
conditions:
- lastTransitionTime: "2019-09-22T01:01:23Z"
lastUpdateTime: "2019-09-22T01:01:23Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: "2019-09-22T01:01:11Z"
lastUpdateTime: "2019-09-22T01:01:23Z"
message: ReplicaSet "tiller-deploy-568db6b69f" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
observedGeneration: 1
readyReplicas: 1
replicas: 1
updatedReplicas: 1
@jbretteæ瀺ã«åŸã£ãåŸããåãåé¡ãçºçããŸã
@jbretteæ瀺ã«åŸã£ãåŸããåãåé¡ãçºçããŸã
ã./bin/helmãã§ã¯ãªããhelmããšå ¥åããããã§ããå€ãããŒãžã§ã³ã®ãã€ããªã䜿çšããŠããŸãã
åæåãæåãããšãextensions / v1beta1ã眮ãæãããŸã§ããªããžããªãããã£ãŒãããã±ãŒãžãã€ã³ã¹ããŒã«ã§ããªããªããŸãã
k8sv1.16.0ã®ãªããžããªãããã£ãŒããé©å¿ãããæ¹æ³ã¯æ¬¡ã®ãšããã§ã
ãã®äŸã¯ãããã¡ããŠã¹ãã£ãŒãã«åºã¥ããŠããŸãã
git clone https://github.com/helm/charts
cd charts/stable
extension / v1beta1ãpolicy / v1beta1PodSecurityPolicyã«çœ®ãæããŸãã
sed -i 's<strong i="11">@apiVersion</strong>: extensions/v1beta1<strong i="12">@apiVersion</strong>: policy/v1beta1@' `find . -iregex ".*yaml\|.*yml" -exec awk '/kind:\s+PodSecurityPolicy/ {print FILENAME}' {} +`
NetworkPolicy apiVersionã¯ãããã䜿çšããããã£ãŒãã®_helpers.tplã«ãã£ãŠé©åã«åŠçãããŸãã
DeploymentãStatefulSetãReplicaSetãDaemonSetã§extensions / v1beta1ãapps / v1ã«çœ®ãæããŸã
sed -i 's<strong i="17">@apiVersion</strong>: extensions/v1beta1<strong i="18">@apiVersion</strong>: apps/v1@' `find . -iregex ".*yaml\|.*yml" -exec awk '/kind:\s+(Deployment|StatefulSet|ReplicaSet|DaemonSet)/ {print FILENAME}' {} +`
sed -i 's<strong i="19">@apiVersion</strong>: apps/v1beta2<strong i="20">@apiVersion</strong>: apps/v1@' `find . -iregex ".*yaml\|.*yml" -exec awk '/kind:\s+(Deployment|StatefulSet|ReplicaSet|DaemonSet)/ {print FILENAME}' {} +`
æ°ããããã±ãŒãžãäœæããŸãã
helm package ./prometheus
Successfully packaged chart and saved it to: /home/vagrant/charts/stable/prometheus-9.1.1.tgz
ãããã€ã³ã¹ããŒã«ããŸãïŒ
helm install /home/vagrant/charts/stable/prometheus-9.1.1.tgz
https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/ã«åºã¥ã
PSäŸåé¢ä¿ã®ããäžéšã®ã°ã©ãã§ã¯ã helm dependency update
ã䜿çšãã該åœããå Žåã¯äŸåé¢ä¿ã®tgzãããããé©çšãããã®ã«çœ®ãæããå¿
èŠããããŸãã
helm init --history-max 200
å®è¡æã«åããšã©ãŒãçºçãã
åºå
$HELM_HOME has been configured at /Users/neil/.helm.
Error: error installing: the server could not find the requested resource
$ helm version
Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
Error: could not find tiller
ãã®ãã©ã³ãã¯https://github.com/keleustes/helm/tree/kube16ã§æ©èœãhttps://s3-us-west-2.amazonaws.com/bin.cryptexlabs.com/github.com/keleustes/helm/kube16/darwin/helmã 泚æç¹ã®1ã€ã¯ããã«ãããªãªãŒã¹ãããŠããªããããã«ããªã¢ã€ã¡ãŒãžãã©ã°helm init --canary-image
ã䜿çšããå¿
èŠãããããšã§ãã
ãããæ©èœãããããã«ã«ããªã¢ç»åã¯å¿
èŠãããŸããã ïŒ6462ãè©ŠããŠã¿ããå Žåã¯ãåè¿°ã®@jbretteãšããŠhelm init --tiller-image gcr.io/kubernetes-helm/tiller:v2.14.3
ã䜿çšããããšããå§ãããŸãã
ãšã«ããPRãè©Šãåã«ãæåã«æäŸãããåé¿çã®1ã€ãè©ŠãããšããŠãŒã¶ãŒã«å§ããŸãã ããããã°ããŸã æ€èšäžã®ã«ã¹ã¿ã éçºãã©ã³ãã®ä»£ããã«ãHelm2.14.3ãåŒãç¶ã䜿çšã§ããŸãã
ã³ãã³ããå®è¡ãããšãããã€ãããŸããããã®åŸãããã§è¡šç€ºããããµãŒããŒããã®ãšã©ãŒïŒNotFoundïŒãšè¡šç€ºãããŸãïŒããããtiller-deployããèŠã€ãããŸãã
helm init --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's<strong i="7">@apiVersion</strong>: extensions/v1beta1<strong i="8">@apiVersion</strong>: apps/v1@' | kubectl apply -f -
deploy.apps / tiller-deployãäœæãããŸãã
service / tiller-deployãäœæãããŸãã
ããããkubectl get podsãå®è¡ãããšãall-namespacesã¯ãããã衚瀺ã§ããŸãã
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-5644d7b6d9-559hw1 / 1å®è¡äž023h
kube-system coredns-5644d7b6d9-xcmjd1 / 1å®è¡äž023h
kube-system etcd-fmp1 / 1å®è¡äž024æé
kube-system kube-apiserver-fmp1 / 1å®è¡äž024æé
kube-system kube-controller-manager-fmp1 / 1å®è¡äž124æé
kube-system kube-flannel-ds-amd64-ffx2g1 / 1å®è¡äž023h
kube-system kube-proxy-lfvrz1 / 1å®è¡äž024æé
kube-system kube-scheduler-fmp1 / 1å®è¡äž024æé
kubectl get all --all-namespaces | grepèããæ©
kube-system service / tiller-deploy ClusterIP xxx
kube-systemdeployment.apps / tiller-deploy 0/1 0 0 2m54s
kube-system Replicaset.apps / tiller-deploy-77855d9dcf 1 0 0 2m54s
@DanielIvaylovããªãã¯èããæ©ãµãŒãã¹ã¢ã«ãŠã³ããæã£ãŠããªããšæããŸãã äœæããŠãã ããããããããšããããã€ã«ãã£ãŠãã£ã©ãŒããããäœæãããŸãã
ããããšãïŒ
@DanielIvaylovããªãã¯èããæ©ãµãŒãã¹ã¢ã«ãŠã³ããæã£ãŠããªããšæããŸãã äœæããŠãã ããããããããšããããã€ã«ãã£ãŠãã£ã©ãŒããããäœæãããŸãã
ããããšãïŒ
ç³ãèš³ãããŸããããç§ã¯ããããããéå§ããã€ããã ãšæã£ãæ°ããã§ãã èããæ©ãµãŒãã¹ã¢ã«ãŠã³ããéå§ããã«ã¯ã©ãããã°ããã§ããïŒ
@DanielIvaylov
kubectl --namespace kube-system create sa tiller
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
ãããã®éæšå¥šã®APIãäžæçã«å床æå¹ã«ããAPIãµãŒããŒïŒ/etc/kubernetes/manifests/kube-apiserver.yamlïŒã«ä»¥äžã®ãã©ã°ãè¿œå ããŸããã
--runtime-config = apps / v1beta1 = trueãapps / v1beta2 = trueãextensions / v1beta1 / daemonsets = trueãextensions / v1beta1 / deployments = trueãextensions / v1beta1 / Replicasets = trueãextensions / v1beta1 / networkpolicies = trueãæ¡åŒµæ©èœ/ v1beta1 / podsecuritypolicies = true
ããã«ããããã«ã v2ãä¿®æ£ãããŸãã
Windowsã䜿çšããŠããå Žåã¯ã次ã®ããã«PowerShellãä»ããŠãã£ã©ãŒãã€ã³ã¹ããŒã«/ã¢ããã°ã¬ãŒãã§ããŸããã
$(helm init --output yaml) -replace "extensions/v1beta1","apps/v1"
çæçãªåé¿çã¯æ¬¡ã®ãšããã§ãã
helm init --output yaml | sed 's<strong i="7">@apiVersion</strong>: extensions/v1beta1<strong i="8">@apiVersion</strong>: apps/v1@' | kubectl apply -f -
å®éãããã¯ååã§ã¯ãããŸããã ããã§ããšã©ãŒãçºçããŸãïŒ
error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec
ããã«ã¯æ¬¡ã®ããããé©çšã§ããŸãã
/usr/local/bin/kubectl patch --local -oyaml -f - -p '{"spec":{"selector": {"app":"helm","name":"tiller"}}}'
ç§ã«ãšã£ãŠã¯kubectlããããã¶ãäžãã£ãŠããŸã
/ var / log / syslogãã¡ã€ã«ã«ã¡ãã»ãŒãžããããŸãã
ãµãŒãã¹ã¢ã«ãŠã³ãã¯ãã§ã«ååšããŸã
kubeflow @ masternode ïŒã$ kubectl --namespace kube-system create satiller
ãµãŒããŒããã®ãšã©ãŒïŒAlreadyExistsïŒïŒserviceaccounts "tiller"ã¯ãã§ã«ååšããŸã
kubeflow @ masternode ïŒã$ kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount = kube- systemïŒ tiller
ãµãŒããŒããã®ãšã©ãŒïŒAlreadyExistsïŒïŒclusterrolebindings.rbac.authorization.k8s.ioãtillerãã¯ãã§ã«ååšããŸã
ããªããã¢ããã€ã¹ããŠããã ããŸãã
以äžãå®è¡ããŸã
PATH = $ PATHïŒ/ usr / local / binããšã¯ã¹ããŒãããŸã
ã©ã®ãã«ã
ã©ã®èããæ©
ãã«ã ã€ã³ã¹ããŒã«\
--name nfs-client-provisioner \
--set nfs.server = 10.0.0.4 \
--set nfs.path = / nfsroot \
--set storageClass.name = nfs \
--set storageClass.defaultClass = true \
å®å®ãã/ nfs-client-provisioner
ã§æ»ã£ãŠããŸã
/ usr / local / bin / helm
/ usr / local / bin / tiller
ãšã©ãŒïŒåãã€ãèŠã€ãããŸããã§ãã
ããã¯ã·ã§ãŒã¹ããããŒã«ãªã£ãŠããã®ã§ãå©ããŠãããŠããããšã
@cyrilthankèããæ©ã®ãšã©ãŒã¯ãèããæ©ã®å±éãå®è¡ãããŠããªããããšæãããŸãã次ã®ã³ãã³ããå®è¡ããŠèããæ©ãã€ã³ã¹ããŒã«ããŠã¿ãŠãã ããã
helm init --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's<strong i="7">@apiVersion</strong>: extensions/v1beta1<strong i="8">@apiVersion</strong>: apps/v1@' | kubectl apply -f -
helm version -s
ã¯ããµãŒããŒïŒãã£ã©ãŒïŒã®ããŒãžã§ã³ãæ£åžžã«çšŒåããŠããå ŽåããµãŒããŒïŒãã£ã©ãŒïŒã®ããŒãžã§ã³ãè¿ãå¿
èŠããããŸã
ããããšãããããŸãã
ããªãã¯ç§ãã¡ãkubeflowã次ã®ã¹ãããã«é²ããããšãå¯èœã«ããã®ã«åœ¹ç«ã¡ãŸãã
ããããŸããä»ç§ã¯ãã®åé¡ãæ±ããŠãããšæããŸã
https://github.com/kubeflow/kubeflow/issues/4184
ãããã«ãŒãšããŠæ»ã
https://github.com/kubeflow/kubeflow/issues/4184ã§ãã«ããååŸããæ¹æ³ã«ã€ããŠã¢ããã€ã¹ãããã ããã°å¹žãã§ã
@cyrilthankäžèšã®æé ãè©ŠããŠãã ããïŒ //github.com/helm/helm/issues/6374#issuecomment -533853888
éæšå¥šã®APIããŒãžã§ã³ãæ°ããããŒãžã§ã³ã«çœ®ãæããå¿
èŠããããŸã
kubeflow_workaround_and_error_traces.txt
ç¹ã«ãã®åé¡ãéãããŸãŸã«ããŠããããšã§ããªãã®æ£è ã®è¿äºãããããšããµãŒ
ããã«ã€ããŠã¯ç³ãèš³ãããŸããããåé¿çã®æé ã§äœãåé¡ãçºçããŠããããã§ã
æ·»ä»ã®ãã¬ãŒã¹ã®æé ã確èªããŠãç§ãééã£ãŠããããšã«ã€ããŠã¢ããã€ã¹ããŠããã ããã°å¹žãã§ãã
@cyrilthank kubeflowyamlã«å¯ŸããŠsed
ã³ãã³ããå®è¡ããã ãã§ãå€ãapiæ¡åŒµæ©èœãæ°ããæ¡åŒµæ©èœã«çœ®ãæããããšãã§ããŸãïŒprometheusããããã€ããå¿
èŠã¯ãŸã£ãããããŸããðïŒã èªåãååã«è¡šçŸã§ããªãã£ããããããªããã
ä¿®æ£ã¯åºæ¬çã«ãkubeflow dpl yamlsã§extensions/v1beta1
ãapps/v1
ã«çœ®ãæããããšã§ãã
ãããç§ã¯ã°ãããã³ããŒãããŸãã:(
ç§ã®KFAPP = / nfsroot / kf-poc
ç§ã¯ãŸã ããã€ãã®ã¡ãã»ãŒãžãšæçµçãªãšã©ãŒãåãåã£ãŠããããã§ã
kubeflowã®æ¬¡ã®ã¹ãããã«é²ãããã«ä»ããªãã«äŸåããŠããã®ã§ãå©ããŠãããŸããã
@cyrilthank kubeflowyamlã«å¯ŸããŠ
sed
ã³ãã³ããå®è¡ããã ãã§ãå€ãapiæ¡åŒµæ©èœãæ°ããæ¡åŒµæ©èœã«çœ®ãæããããšãã§ããŸãïŒããã¡ããŠã¹ããããã€ããå¿ èŠã¯ãŸã£ãããããŸããïŒã èªåãååã«è¡šçŸã§ããªãã£ããããããªããã
ä¿®æ£ã¯åºæ¬çã«ãkubeflow dpl yamlsã§extensions/v1beta1
ãapps/v1
ã«çœ®ãæããããšã§ãã
apps/v1beta2
ãapps/v1
https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/
å©ããŠãããŠããããšã@uniuuu
https://github.com/helm/helm/files/3662328/kubeflow_workaround_sed_and_error_traces.txtã§åç
§ãããŠããyamlãã¡ã€ã«ãååŸããå Žæ/æ¹æ³ãæããŠ
https://github.com/helm/helm/issues/6374#issuecomment -533840097
https://github.com/helm/helm/issues/6374#issuecomment -533185074
sedã®å€æŽãè¡ã£ãåŸããã§åç §ãããŠãããšã©ãŒãçºçããŠããããããªã¯ãšã¹ãããŠããŸã
ã¹ããããããã°ã¢ããã€ã¹ã§ããŸãã
kubectl convert -f
ããšã«å®è¡ããå¿
èŠããããŸã
helm init
䜿çšãããšãã«äžèšã®åé¿çãé©çšããŠãã helm version
ãããªãã®ãè©Šãããšãã«æ¬¡ã®ãšã©ãŒãçºçããå Žåã¯ã helm
deployment
åå ã§ããèŠã€ãããªãã
Error: could not find tiller
æºåãã§ããŠããªãçç±ãç¥ãã«ã¯ã kubectl get events --all-namespaces | grep -i tiller
ãå®è¡ããå¿
èŠããããŸãã
ããšãã°ã microk8s
serviceaccount "tiller"
ã¯å¿
èŠãªããããç§ã®åé¡ã¯æ¬¡ã®ããã«ãªããŸãã
microk8s.kubectl get events --all-namespaces | grep -i tiller
kube-system 23m Warning FailedCreate replicaset/tiller-deploy-77855d9dcf Error creating: pods "tiller-deploy-77855d9dcf-" is forbidden: error looking up service account kube-system/tiller: serviceaccount "tiller" not found
ã ããç§ã¯ãµãŒãã¹ã¢ã«ãŠã³ããªãã§ä»äºãããŸãã
- helm init --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's<strong i="20">@apiVersion</strong>: extensions/v1beta1<strong i="21">@apiVersion</strong>: apps/v1@' | kubectl apply -f -
+ helm init spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's<strong i="22">@apiVersion</strong>: extensions/v1beta1<strong i="23">@apiVersion</strong>: apps/v1@' | kubectl apply -f -
@cyrilthankããã§ã®è°è«ãšã¯é¢ä¿ããªãã®ã§ãã³ã¡ã³ããåé€ããŸããã åŒãç¶ãkubeflow / kubeflowïŒ4184ã§ãã©ããŒã¢ããããŠãã ããã ããããšãïŒ
helm init spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's<strong i="6">@apiVersion</strong>: extensions/v1beta1<strong i="7">@apiVersion</strong>: apps/v1@' | kubectl apply -f -
ããããªä¿®æ£
helm init --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's<strong i="11">@apiVersion</strong>: extensions/v1beta1<strong i="12">@apiVersion</strong>: apps/v1@' | kubectl apply -f -
+1
@ puww1010åºåããã¡ã€ã«ã«ãªãã€ã¬ã¯ãããVIMã䜿çšããŠå€æŽããŸããã 以äžã®ã³ãã³ããåèã«ããŠãã ããã
# helm init --service-account tiller --tiller-namespace kube-system --debug >> helm-init.yaml # vim helm-init.yaml # kubectl apply -f helm-init.yaml
ç§ã¯ããããã£ãŠã¿ãŸããã VIMã§ãã¡ã€ã«ãç·šéããåŸã kubectl apply
ã³ãã³ãã䜿çšããŸãããäœãå®è¡ãããªãããã§ãã helm init --service-account tiller --tiller-namespace kube-system --debug >> helm-init.yaml
å床å®è¡ãããã helm init --output yaml
ãå€æŽãé©çšãããŠããŸããã ä»ã®èª°ãããããçµéšããŸããïŒ
1ã€å°ãªãsedã䜿çšãããå Žå:)
helm init --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's<strong i="7">@apiVersion</strong>: extensions/v1beta1<strong i="8">@apiVersion</strong>: apps/v1@' | kubectl apply -f -
ããããšãïŒ
k8ãã¢ããã°ã¬ãŒããããšããããã®åé¡ã«çŽé¢ããäžèšã®ãœãªã¥ãŒã·ã§ã³ã䜿çšããŸããã ãããã€ã¡ã³ãã¯äœæãããŸãããã¬ããªã«ã»ããã¯å€±æããŸããããã¯ã kubectl describe -n kube-system replicasets.apps tiller-deploy-77855d9dcf
ããååŸãããã®ã§ãã
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedCreate 41s (x14 over 82s) replicaset-controller Error creating: pods "tiller-deploy-77855d9dcf-" is forbidden: error looking up service account kube-system/tiller: serviceaccount "tiller" not found
ãã®serviceaccountãäœæããããã®yamlãã¡ã€ã«ã¯ã©ãã«ãããŸããïŒ
@DanielIvaylov
kubectl --namespace kube-system create sa tiller kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
ããã§ç§ã®åé¡ã¯è§£æ±ºããŸããïŒ
ã¿ããªãããããšãïŒ
ã«ããªã¢ç»åã¯ããã®ããŒãžããŸã è¡ãããŠããªãéããåããšã©ãŒãçæããŸããã
@ puww1010åºåããã¡ã€ã«ã«ãªãã€ã¬ã¯ãããVIMã䜿çšããŠå€æŽããŸããã 以äžã®ã³ãã³ããåèã«ããŠãã ããã
# helm init --service-account tiller --tiller-namespace kube-system --debug >> helm-init.yaml # vim helm-init.yaml # kubectl apply -f helm-init.yaml
ç§ã¯ããããã£ãŠã¿ãŸããã VIMã§ãã¡ã€ã«ãç·šéããåŸã
kubectl apply
ã³ãã³ãã䜿çšããŸãããäœãå®è¡ãããªãããã§ããhelm init --service-account tiller --tiller-namespace kube-system --debug >> helm-init.yaml
å床å®è¡ããããhelm init --output yaml
ãå€æŽãé©çšãããŠããŸããã ä»ã®èª°ãããããçµéšããŸããïŒ
ãããç§ã«ãèµ·ãã£ãŠããŸãã
ç»åã®å Žæãgcr.azk8s.cn/kubernetes-helm/tiller:v2.14.3
ã«å€æŽããå¿
èŠããããããããŸããã gcr.io
å Žæã¯ãããã¯ãããŠããããã§ãã
ããªãã¯gcr.azk8s.cn/kubernetes-helm/ã«ç»åã®å Žæãå€æŽããå¿ èŠããããããããŸãããã£ã©ãŒïŒv2.14.3 gcr.ioã®å Žæã¯ãããã¯ãããŠããããã«èŠããŸãã
å®å
šã«æå¹ãªåé¡ã§ããããã®åé¡ã¯ãã®åé¡ã«ååšããåé¡ãšãããã«çŽäº€ããŠããŸãããæ®å¿µãªãããäžåœã§ã¯gcr.io
ããããã¯ãããŠããŸãã 詳现ã«ã€ããŠã¯ã httpsïŒ//github.com/helm/charts/issues/14607ãåç
§ããŠ
kubernetesããŒãžã§ã³ã1.15.4ã«ããŒã«ããã¯ããããšã§ããã®åé¡ãä¿®æ£ããããšãã§ããŸãã
ãããå ±æããŠããã@UmamaheshMaxwellã«æè¬ããŸãã
kubernetesããŒãžã§ã³ãããŒã«ããã¯ããããã«äœ¿çšããæé ãæããŠãã ããã
@cyrilthankããã¯ããªãminikube config set kubernetes-version v1.15.4
ãããå ±æããŠããã@UmamaheshMaxwellã«æè¬ããŸãã
kubernetesããŒãžã§ã³ãããŒã«ããã¯ããããã«äœ¿çšããæé ãæããŠãã ããã
@cyrilthankç¬èªã®VMïŒUbuntu 18以éïŒã䜿çšããŠããŸãã以äžã¯ãk8sããŒãžã§ã³1.15.4
ãã€ã³ã¹ããŒã«ããããã®èšå®ã§ã
--pod-network-cidr=10.244.10.0/16
-ãã©ã³ãã«
--apiserver-advertise-address=x.x.x.x
-VMã®ãã©ã€ããŒãIPïŒãã¹ã¿ãŒïŒ
--apiserver-cert-extra-sans=x.x.x.x
-VMã®ãããªãã¯IPïŒãã¹ã¿ãŒïŒïŒããã¯ãããŒã«ã«ãã·ã³ãããã¹ã¿ãŒã«ã¢ã¯ã»ã¹ããããšããŠããå Žåã«å¿
èŠã§ãã
泚ïŒä»¥äžã®ãªã³ã¯ã«åŸã£ãŠãã»ã«ããã¹ãåKubernetesã¯ã©ã¹ã¿ãŒã®kubeconfigãã¡ã€ã«ãèšå®ããŸãïŒhttp://docs.shippable.com/deploy/tutorial/create-kubeconfig-for-self-hosted-kubernetes-cluster/ïŒ
ããã§ããäžæãªç¹ãããããŸãããããæ°è»œã«ãåãåãããã ããã
@cyrilthank minikubeã®å Žåãminikube config set kubernetes-version v1.15.4
ããããšã@MrSimonEmmsç§ã®ãã®ã¯ããã§ã¯ãããŸããç§ã¯@UmamaheshMaxwellã®ã¹ãããã«è¡ããªããã°ãªããªããšæããŸã
ãããå ±æããŠããã@UmamaheshMaxwellã«æè¬ããŸãã
kubernetesããŒãžã§ã³ãããŒã«ããã¯ããããã«äœ¿çšããæé ãæããŠãã ããã@cyrilthankç¬èªã®VMïŒUbuntu 18以éïŒã䜿çšããŠããŸãã以äžã¯ãk8sããŒãžã§ã³1.15.4ãã€ã³ã¹ããŒã«ããããã®èšå®ã§ãã
kubeadmãªã»ãã
sudo apt-get install kubelet = 1.15.4-00 kubectl = 1.15.4-00 kubeadm = 1.15.4-00
sudo kubeadm init --pod-network-cidr = 10.244.10.0 / 16 --apiserver-advertise-address = xxxx --apiserver-cert-extra-sans = xxxx --kubernetes-version "1.15.4"--pod-network-cidr = 10.244.10.0 / 16-ãã©ã³ãã«
--apiserver-advertise-address = xxxx-VMã®ãã©ã€ããŒãIPïŒãã¹ã¿ãŒïŒ
--apiserver-cert-extra-sans = xxxx-VMã®ãããªãã¯IPïŒãã¹ã¿ãŒïŒïŒããã¯ãããŒã«ã«ãã·ã³ãããã¹ã¿ãŒã«ã¢ã¯ã»ã¹ããããšããŠããå Žåã«å¿ èŠã§ãã
泚ïŒä»¥äžã®ãªã³ã¯ã«åŸã£ãŠãã»ã«ããã¹ãåKubernetesã¯ã©ã¹ã¿ãŒã®kubeconfigãã¡ã€ã«ãèšå®ããŸãïŒhttp://docs.shippable.com/deploy/tutorial/create-kubeconfig-for-self-hosted-kubernetes-cluster/ïŒ
ããã§ããäžæãªç¹ãããããŸãããããæ°è»œã«ãåãåãããã ããã
æ£è ã®è¿ä¿¡ãããããšã@UmamaheshMaxwell
æ¢åã®kubernetes1.16ã»ããã¢ããã䜿çšããŠããŸããããããã®æé ãå®è¡ã§ãããã©ããã確èªã§ããŸããïŒ
ãããå ±æããŠããã@UmamaheshMaxwellã«æè¬ããŸãã
kubernetesããŒãžã§ã³ãããŒã«ããã¯ããããã«äœ¿çšããæé ãæããŠãã ããã
@cyrilthankç¬èªã®VMïŒUbuntu 18以éïŒã䜿çšããŠããŸãã以äžã¯ãk8sããŒãžã§ã³1.15.4ãã€ã³ã¹ããŒã«ããããã®èšå®ã§ãã
kubeadmãªã»ãã
sudo apt-get install kubelet = 1.15.4-00 kubectl = 1.15.4-00 kubeadm = 1.15.4-00
sudo kubeadm init --pod-network-cidr = 10.244.10.0 / 16 --apiserver-advertise-address = xxxx --apiserver-cert-extra-sans = xxxx --kubernetes-version "1.15.4"
--pod-network-cidr = 10.244.10.0 / 16-ãã©ã³ãã«
--apiserver-advertise-address = xxxx-VMã®ãã©ã€ããŒãIPïŒãã¹ã¿ãŒïŒ
--apiserver-cert-extra-sans = xxxx-VMã®ãããªãã¯IPïŒãã¹ã¿ãŒïŒïŒããã¯ãããŒã«ã«ãã·ã³ãããã¹ã¿ãŒã«ã¢ã¯ã»ã¹ããããšããŠããå Žåã«å¿ èŠã§ãã
泚ïŒä»¥äžã®ãªã³ã¯ã«åŸã£ãŠãã»ã«ããã¹ãåKubernetesã¯ã©ã¹ã¿ãŒã®kubeconfigãã¡ã€ã«ãèšå®ããŸãïŒhttp://docs.shippable.com/deploy/tutorial/create-kubeconfig-for-self-hosted-kubernetes-cluster/ïŒ
ããã§ããäžæãªç¹ãããããŸãããããæ°è»œã«ãåãåãããã ãããæ£è ã®è¿ä¿¡ãããããšã@UmamaheshMaxwell
æ¢åã®kubernetes1.16ã»ããã¢ããã䜿çšããŠããŸããããããã®æé ãå®è¡ã§ãããã©ããã確èªã§ããŸããïŒ
ãã@ cyrilthank ã ãŸãããã 1.15.4
ã«ããŒã«ããã¯ããå¿
èŠããããŸãããæåããèšå®ããå Žåã¯ã以äžã®ãªã³ã¯ãåç
§ããŠãã ããã
VMã®OSããŒãžã§ã³
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic
kuberenetesãã¯ãªãŒã³ã¢ããããŸã
kubeadm reset
sudo apt-get purge kubeadm kubectl kubelet kubernetes-cni kube*
sudo apt-get autoremove
sudo rm -rf ~/.kube
Kubernetesã®ã»ããã¢ããïŒ_ãã¹ã¿ãŒãšããŒãã®äž¡æ¹_ïŒ
https://www.howtoforge.com/tutorial/how-to-install-kubernetes-on-ubuntu/
ïŒæéãç¯çŽããããã«ãäžèšã®ãªã³ã¯ã§ææ¡ãããŠããæé ãã§ããéãèªååããããšããå§ãããŸãïŒ
ããã§ããµããŒããå¿ èŠãªå Žåã¯ãç¥ãããã ããã ããŒã«ããã¯ä»ãã®ããããŒãžã£ãŒããŒ:)ãã¹ã ãŒãºãªæ ãã楜ãã¿ãã ããã
ããªãã¯gcr.azk8s.cn/kubernetes-helm/ã«ç»åã®å Žæãå€æŽããå¿ èŠããããããããŸãããã£ã©ãŒïŒv2.14.3 gcr.ioã®å Žæã¯ãããã¯ãããŠããããã«èŠããŸãã
å®å šã«æå¹ãªåé¡ã§ããããã®åé¡ã¯ãã®åé¡ã«ååšããåé¡ãšãããã«çŽäº€ããŠããŸãããæ®å¿µãªãããäžåœã§ã¯
gcr.io
ããããã¯ãããŠããŸãã 詳现ã«ã€ããŠã¯ã helm / chartsïŒ14607ã
ç§ã¯äžåœã§ã¯ãªããç±³åœã«ããŸãã ããããç§ã®VPNã¯ãã®ãµã€ãããããã¯ãããšæããŸãã ãšã«ãããç§ã¯ãã®ã¹ã¬ããã§æŠèª¬ãããŠãããã¹ãŠã®æé ã«åŸããç»åãæåã§ååŸããããšããŠå¿çããªãããšã確èªãããŸã§ããããæ©èœãããããšãã§ããŸããã§ãã-ä»ã®èª°ããåãå Žæã§ç«ã¡åŸçããå Žåã«åããŠä»ã®äœããè©ŠããŠã¿ãŠãã ããç§ã
ãšã©ãŒãçºçããŸãïŒ
$ helm init
$HELM_HOME has been configured at C:\Users\user\.helm.
Error: error installing: the server could not find the requested resource
ç§ã¯ãã®å·ã§ææ¡ããã解決çãç¹ã«ãããè©ŠããŠããŸãã ãã ããããã«å¿ããŠtiller.yamlãã¡ã€ã«ãå€æŽããåŸãæ§æãæŽæ°ã§ããŸããã å€æŽãé©çšããããæ§æãæŽæ°ãããããããã«ã次ã®ã³ãã³ããè©ŠããŠããŸãã
$ kubectl apply -f tiller.yaml
deployment.apps/tiller-deploy configured
service/tiller-deploy configured
ããããç§ãå®è¡ããå ŽåïŒ
$ helm init --output yaml > tiller2.yaml
tiller2.yamlãã¡ã€ã«ã¯æ¬¡ã®ããšã瀺ããŠããŸãïŒ
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: helm
name: tiller
name: tiller-deploy
namespace: kube-system
spec:
replicas: 1
strategy: {}
template:
åºæ¬çã«ãå€æŽã¯åæ ãããŸããã ãããã£ãŠãæ§æãé©åã«æŽæ°ããŠããªããšæããŸãã ãããè¡ãæ£ããæ¹æ³ã¯äœã§ããããïŒ
ç·šéïŒç§ã¯ãããå®è¡ããããšãã§ããŸããã Minikubeã䜿çšããŠããŸããããããå®è¡ããããã«ãæåã«KubernetesããŒãžã§ã³ã1.15.4ã«ããŠã³ã°ã¬ãŒãããŸããã
minikube delete
minikube start --kubernetes-version=1.15.4
次ã«ããããã·ã䜿çšããŠããã®ã§ãMinikubeã®IPãNO_PROXYãªã¹ãã«è¿œå ããå¿
èŠããããŸãããç§ã®å Žåã¯192.168.99.101
ã§ãã åç
§ïŒ https ïŒ
泚ïŒããã«ãã¹ããè¡ã£ãåŸãããŠã³ã°ã¬ãŒãã¯å¿
èŠãªãå¯èœæ§ããããæ¬ èœããŠããã®ã¯NO_PROXYã¹ãããã ãã ã£ãå¯èœæ§ããããŸãã ãã¹ãŠã®192.168.99.0/24
ã 192.168.39.0/24
ãããã³10.96.0.0/12
ãNO_PROXYèšå®ã«è¿œå ããŸããããæ£åžžã«æ©èœããŠããããã§ãã
helm init --service-account tiller --override spec.selector.matchLabels.'name '=' tiller 'ãspec.selector.matchLabels.'app' = 'helm' --output yaml | sed's @ apiVersion ïŒextensions / v1beta1 @ apiVersion ïŒapps / v1 @ '| kubectl apply -f-
ããã¯ç§ã®ããã«åãããã©ããããããšã
Kubernetes APIãé²åããã«ã€ããŠãAPIã¯å®æçã«åç·šæãŸãã¯ã¢ããã°ã¬ãŒããããŸãã APIãé²åãããšãå€ãAPIã¯éæšå¥šã«ãªããæçµçã«ã¯åé€ãããŸãã
v1.16ãªãªãŒã¹ã§ã¯ã次ã®éæšå¥šã®APIããŒãžã§ã³ã®æäŸãåæ¢ãããããæ°ãããããå®å®ããAPIããŒãžã§ã³ãåªå ãããŸãã
NetworkPolicy (in the extensions/v1beta1 API group)
Migrate to use the networking.k8s.io/v1 API, available since v1.8. Existing persisted data can be retrieved/updated via the networking.k8s.io/v1 API.
PodSecurityPolicy (in the extensions/v1beta1 API group)
Migrate to use the policy/v1beta1 API, available since v1.10. Existing persisted data can be retrieved/updated via the policy/v1beta1 API.
DaemonSet, Deployment, StatefulSet, and ReplicaSet (in the extensions/v1beta1 and apps/v1beta2 API groups)
Migrate to use the apps/v1 API, available since v1.9. Existing persisted data can be retrieved/updated via the apps/v1 API.
v1.20ãªãªãŒã¹ã§ã¯ã次ã®éæšå¥šã®APIããŒãžã§ã³ã®æäŸãåæ¢ãããããæ°ãããããå®å®ããAPIããŒãžã§ã³ãåªå ãããŸãã
Ingress (in the extensions/v1beta1 API group)
Migrate to use the networking.k8s.io/v1beta1 API, serving Ingress since v1.14. Existing persisted data can be retrieved/updated via the networking.k8s.io/v1beta1 API.
åç §ãã ïŒ
minikubeã䜿çšããŠãããã«ã n00bãšããŠã次ã®ããã«kubernetesããŒãžã§ã³ãèšå®ããããšã§ãã®åé¡ãåé¿ããããšãã§ããŸããã
$ minikube delete
$ minikube start --kubernetes-version=1.15.4
ããã圹ã«ç«ãŠã°å¹žãïŒ
@PierreF k8sv1.16.1ãš
Readiness probe failed: Get http://10.238.128.95:44135/readiness: dial tcp 10.238.128.95:44135: connect: connection refused
@ joshprzybyszewski-wf次ã®ã³ãã³ãã䜿çšããŸãã
minikube start --memory=16384 --cpus=4 --kubernetes-version=1.15.4
kubectl create -f istio-1.3.3/install/kubernetes/helm/helm-service-account.yaml
helm init --service-account tiller
helm install istio-1.3.3/install/kubernetes/helm/istio-init --name istio-init --namespace istio-system
helm install istio-1.3.3/install/kubernetes/helm/istio --name istio --namespace istio-system
ãããŠä»ã
Error: validation failed: [unable to recognize "": no matches for kind "DestinationRule" in version "networking.istio.io/v1alpha3", unable to recognize "": no matches for kind "DestinationRule" in version "networking.istio.io/v1alpha3", unable to recognize "": no matches for kind "attributemanifest" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "attributemanifest" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "handler" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "handler" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "rule" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "rule" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "rule" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "rule" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "rule" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "rule" in version "config.istio.io/v1alpha2"]
çæçãªåé¿çã¯æ¬¡ã®ãšããã§ãã
helm init --output yaml | sed 's<strong i="7">@apiVersion</strong>: extensions/v1beta1<strong i="8">@apiVersion</strong>: apps/v1@' | kubectl apply -f -
å®éãããã¯ååã§ã¯ãããŸããã ããã§ããšã©ãŒãçºçããŸãïŒ
error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec
ããã«ã¯æ¬¡ã®ããããé©çšã§ããŸãã
/usr/local/bin/kubectl patch --local -oyaml -f - -p '{"spec":{"selector": {"app":"helm","name":"tiller"}}}'
macthLabels
ãã¹ãã»ã¬ã¯ã¿ãŒãè¿œå ã§ããŸãã
@jbretteã®ãœãªã¥ãŒã·ã§ã³ã«è»¢éãã
error: error parsing STDIN: error converting YAML to JSON: yaml: line 11: mapping values are not allowed in this context
ããã¯Helm2.16.0ã§ä¿®æ£ãããŠããŸãã
@jbretteã®ãœãªã¥ãŒã·ã§ã³ã«è»¢éãã
error: error parsing STDIN: error converting YAML to JSON: yaml: line 11: mapping values are not allowed in this context
yamlãã¡ã€ã«ã確èªããŸããã»ãšãã©ã®å Žåãåç §ãããè¡ã«ã¯{}ãŸãã¯[]ãããããã®äžã«ä»ã®ãã®ãå®çŸ©ãããŠããããããšã©ãŒãçºçããŸãã ã»ãšãã©ã®å Žåãåé¡ã¯values.yamlå ã«ãããŸãããã以å€ã®å Žåã¯ãã°ã©ãã®ãã³ãã¬ãŒãã»ã¯ã·ã§ã³ã確èªããŠãã ããã
@PierreFãš@mihivagyokã®ãœãªã¥ãŒã·ã§ã³ãžã®è£è¶³ã§ãã ç§ããã©ã€ããŒããã«ã ãªããžããªã䜿çšãããšãããããã¯ç§ã«ãšã£ãŠã¯ããŸããããŸããã§ããã
$ helm repo add companyrepo https://companyrepo
Error: Couldn't load repositories file (/home/username/.helm/repository/repositories.yaml).
ããã¯ãhelm initãå®è¡ããããyamlãã¡ã€ã«ãçæãããããã«çºçãããšæããŸãã è¿œå ã§helm init -c
ãå®è¡ããããšã§ããããä¿®æ£ããŸããã
k8s v1.16.6ã§ã¯ãhelm initotputã«ã¯spec.selectorfyiãå¿ èŠã§ãã
çŸåšã®åé¿çã¯æ¬¡ã®ããã«ãªããŸãã
helm init --output yaml> tiller.yaml
ãããŠtiller.yamlãæŽæ°ããŸãïŒ
- apps / v1ã«å€æŽ
- ã»ã¬ã¯ã¿ãŒãã£ãŒã«ããè¿œå ããŸã
--- apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: helm name: tiller name: tiller-deploy namespace: kube-system spec: replicas: 1 strategy: {} selector: matchLabels: app: helm name: tiller ....
kubernetesã¯apiVersionapps / v1ãDeploymentçšã«å€æŽãããããå€æŽããå¿ èŠãããããšã1ã€ãããŸããããã¯ãä»æ§ã®ã»ã¬ã¯ã¿ãŒmatchLabelsãè¿œå ããå¿ èŠãããããšã§ãã
å¥ã®åé¿çã¯ãèããæ©ã䜿çšããªããã«ã 3ã䜿çšããããšã§ãã
helm init --output yaml | sed's @ apiVersion ïŒextensions / v1beta1 @ apiVersion ïŒapps / v1 @ '| kubectl apply -f-
ããã«ã¡ã¯ããããè©ŠããŠããéããããååŸããŠããŸãïŒ
jenkins @ jenkin ïŒã/ãkube$ helm init --output yaml | sed's @ apiVersion ïŒextensions / v1beta1 @ apiVersion ïŒapps / v1 @ '| kubectl apply -f-
ã³ãã³ã 'kubectl'ãèŠã€ãããŸãããã次ã®ã³ãã³ãã§ã€ã³ã¹ããŒã«ã§ããŸãã
ã¹ãããã€ã³ã¹ããŒã«kubectl
管çè
ã«åãåãããŠãã ããã
jenkins @ jenkin ïŒã/ãkube$
helm version
åºåïŒv2.14.3
kubectl version
åºåïŒã¯ã©ã€ã¢ã³ãïŒv1.15.3ããµãŒããŒïŒv1.16.0-rc.1
ã¯ã©ãŠããããã€ããŒ/ãã©ãããã©ãŒã ïŒAKSãGKEãMinikubeãªã©ïŒïŒIBM Cloud Kubernetes Service$ helm init --service-account tiller $HELM_HOME has been configured at /Users/xxxx/.helm. Error: error installing: the server could not find the requested resource $ helm init --debug --service-account tiller --- apiVersion: extensions/v1beta1 kind: Deployment metadata: creationTimestamp: null labels: app: helm name: tiller name: tiller-deploy namespace: kube-system spec: . . .
ãã«ã ã
tiller
ãããã€ã¡ã³ããäœæããããšããŠããããã§ãïŒapiVersion: extensions/v1beta1
ã«ãããšïŒ https ïŒ
ããã¯ãããµããŒããããŠããŸããã
ãã®ãšã©ãŒãçºçããŠããŸãïŒã©ãããã°è§£æ±ºã§ããŸããïŒ
root @ jenkin ïŒãïŒhelm init --service-accounttiler
$ HELM_HOMEã¯/root/.helmã§æ§æãããŠããŸãã
ãšã©ãŒïŒã€ã³ã¹ããŒã«ãšã©ãŒïŒäžæïŒãããã€ã¡ã³ãåŸ.extensionsïŒ
root @ jenkin ïŒãïŒ
çæçãªåé¿çã¯æ¬¡ã®ãšããã§ãã
helm init --output yaml | sed 's<strong i="7">@apiVersion</strong>: extensions/v1beta1<strong i="8">@apiVersion</strong>: apps/v1@' | kubectl apply -f -
å®éãããã¯ååã§ã¯ãããŸããã ããã§ããšã©ãŒãçºçããŸãïŒ
error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec
ããã«ã¯æ¬¡ã®ããããé©çšã§ããŸãã
/usr/local/bin/kubectl patch --local -oyaml -f - -p '{"spec":{"selector": {"app":"helm","name":"tiller"}}}'
ãã®ãšã©ãŒãçºçããŸãïŒ
jenkins @ jenkin ïŒã/ .helm $ helm init --output yaml | sed's @ apiVersion ïŒextensions / v1beta1 @ apiVersion ïŒapps / v1 @ '| kubectl apply -f-
ã³ãã³ã 'kubectl'ãèŠã€ãããŸãããã次ã®ã³ãã³ãã§ã€ã³ã¹ããŒã«ã§ããŸãã
ã¹ãããã€ã³ã¹ããŒã«kubectl
管çè
ã«åãåãããŠãã ããã
jenkins @ jenkin ïŒã/ .helm $
jq
ã䜿çšããåé¿çïŒ
helm init -o json | jq '(select(.apiVersion == "extensions/v1beta1") .apiVersion = "apps/v1")' | jq '(select(.kind == "Deployment") .spec.selector.matchLabels.app = "helm")' | jq '(select(.kind == "Deployment") .spec.selector.matchLabels.name = "tiller")' | kubectl create -f -
jq
ã䜿çšããåé¿çïŒ
helm init -o json | jq '(select(.apiVersion == "extensions/v1beta1") .apiVersion = "apps/v1")' | jq '(select(.kind == "Deployment") .spec.selector.matchLabels.app = "helm")' | jq '(select(.kind == "Deployment") .spec.selector.matchLabels.name = "tiller")' | kubectl create -f -
kubectl create
ãªãœãŒã¹ãæŽæ°ããããšã¯ã§ããŸãã
@ikarlashovã¯ããäœæãããé©çšãã«çœ®ãæããã®ã«ååç°¡åã§ãã äžèšã®ã¯ã³ã©ã€ããŒã¯ããŸã ãªãœãŒã¹ã®äœæãè©Šã¿ãŠããªãããšãåæãšããŠããŸãã
æãåèã«ãªãã³ã¡ã³ã
次ã®sedã¯ç§ã®ããã«åããŸãïŒ
@mattymoãœãªã¥ãŒã·ã§ã³ïŒkubectl patch --localã䜿çšïŒã®åé¡ã¯ãå ¥åã«è€æ°ã®ãªãœãŒã¹ïŒããã§ã¯ãããã€ã¡ã³ããšãµãŒãã¹ïŒãå«ãŸããŠããå Žåã¯æ©èœããªãããã«èŠããããšã§ãã