Helm: Helm init νŒŒμΌμ€ Kubernetes 1.16.0에 μžˆμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2019λ…„ 09μ›” 06일  Β·  83μ½”λ©˜νŠΈ  Β·  좜처: helm/helm

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:
. 
.
.

helm이 tiller 배포λ₯Ό μƒμ„±ν•˜λ €κ³  μ‹œλ„ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. apiVersion: extensions/v1beta1
에 λ”°λ₯΄λ©΄ : https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16
더 이상 μ§€μ›λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ‹€μŒ 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 μ‚¬μš©)의 λ¬Έμ œλŠ” μž…λ ₯에 μ—¬λŸ¬ λ¦¬μ†ŒμŠ€ (μ—¬κΈ°μ„œλŠ” 배포 및 μ„œλΉ„μŠ€)κ°€ 포함 된 경우 μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

λͺ¨λ“  83 λŒ“κΈ€

κ³Όκ±°μ—λŠ” helm init --upgrade extensions/v1beta1 및 apps/v1 tiller 배포λ₯Ό μ‘°μ •ν•˜λŠ” λ³΅μž‘μ„±μœΌλ‘œ 인해 tillerλ₯Ό 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 ν”Œλž˜κ·Έλ‘œ crazy sed hacks보닀 λ™μΌν•œ 효과λ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. :)

쒋은! --override ν”Œλž˜κ·Έλ‘œ crazy sed hacks보닀 λ™μΌν•œ 효과λ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. :)

예, κ·ΈλŸ¬λ‚˜ 그의 미친 sed 해킹은 λ³΅μ‚¬ν•˜μ—¬ λΆ™μ—¬ 넣을 수 μžˆμ§€λ§Œ helm init --override "apiVersion"="apps/v1" λŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ’‹μ•„, sed 해킹도 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

ν˜„μž¬ ν•΄κ²° 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

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
....

λ‹€μŒ 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 μ–Έμ œ μΆœμ‹œλ©λ‹ˆκΉŒ?

덜 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 μ•± / 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 [Kubernetes 1.16κ³Ό ν˜Έν™˜λ˜λŠ” Helm init] # 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 get deployment.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을 ꡐ체 ν•  λ•ŒκΉŒμ§€ μ €μž₯μ†Œμ—μ„œ 차트 νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
λ‹€μŒμ€ k8s v1.16.0 용 μ €μž₯μ†Œμ˜ 차트λ₯Ό μ‘°μ •ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.
μ˜ˆμ œλŠ” prometheus 차트λ₯Ό κΈ°λ°˜μœΌλ‘œν•©λ‹ˆλ‹€.

git clone https://github.com/helm/charts
cd charts/stable

extensions / v1beta1을 policy / v1beta1 PodSecurityPolicy둜 λ°”κΏ‰λ‹ˆλ‹€.

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 ν•œ κ°€μ§€μ£Όμ˜ ν•  점은 λΉŒλ“œκ°€ λ¦΄λ¦¬μŠ€λ˜μ§€ μ•Šμ•˜μœΌλ―€λ‘œ μΉ΄λ‚˜λ¦¬μ•„ 이미지 ν”Œλž˜κ·Έ helm init --canary-image λ₯Ό μ‚¬μš©ν•΄μ•Όν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

이 μž‘μ—…μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ μΉ΄λ‚˜λ¦¬μ•„ 이미지가 ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. # 6462λ₯Ό μ‹œλ„ν•˜κ³  μ‹Άλ‹€λ©΄ μ•žμ„œ μ–ΈκΈ‰ ν•œ @jbrette 둜 helm init --tiller-image gcr.io/kubernetes-helm/tiller:v2.14.3 λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

μ–΄μ¨Œλ“  PR을 μ‹œλ„ν•˜κΈ° 전에 λ¨Όμ € 이전에 제곡된 ν•΄κ²° 방법 쀑 ν•˜λ‚˜ λ₯Ό μ‹œλ„ν•΄ λ³΄λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œν•˜λ©΄ 아직 검토쀑인 μ»€μŠ€ν…€ 개발 브랜치 λŒ€μ‹  Helm 2.14.3을 계속 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚΄κ°€ λͺ…령을 μˆ˜ν–‰ν•˜λ©΄ λ°°ν¬ν•˜μ§€λ§Œ κ·Έ ν›„μ—λŠ” podμ—μ„œ λ³Ό 수 있으며 Error from server (NotFound) : pods "tiller-deploy"not found

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 -

deployment.apps / tiller-deployκ°€ 생성됨
service / tiller-deploy 생성됨

ν•˜μ§€λ§Œ λ‚΄κ°€ kubectl을 ν•  λ•Œ pods --all-namespacesλŠ” podλ₯Ό λ³Ό 수 μ—†μŠ΅λ‹ˆλ‹€.
λ„€μž„ 슀페이슀 이름 μ€€λΉ„ μƒνƒœ λ‹€μ‹œ μ‹œμž‘ λ‚˜μ΄
kube-system coredns-5644d7b6d9-559hw 1/1 Running 0 23h
kube-system coredns-5644d7b6d9-xcmjd 1/1 Running 0 23h
kube-system etcd-fmp 1/1 Running 0 24h
kube-system kube-apiserver-fmp 1/1 Running 0 24h
kube-system kube-controller-manager-fmp 1/1 Running 1 24h
kube-system kube-flannel-ds-amd64-ffx2g 1/1 μ‹€ν–‰ 쀑 0 23h
kube-system kube-proxy-lfvrz 1/1 Running 0 24h
kube-system kube-scheduler-fmp 1/1 μ‹€ν–‰ 쀑 0 24 μ‹œκ°„

kubectl get all --all-namespaces | grep 타병
kube-system service / tiller-deploy ClusterIP xxx44134 / TCP 2 λΆ„ 52 초
kube-system deployment.apps / tiller-deploy 0/10 0 2m54s
kube-system replicaset.apps / tiller-deploy-77855d9dcf 10 0 2m54s

@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, extensions / v1beta1 / podsecuritypolicies = true

이것은 helm v2λ₯Ό μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€.

Windows μ‚¬μš©μžλ₯Ό μœ„ν•΄ λ‹€μŒκ³Ό 같이 powershell을 톡해 tillerλ₯Ό μ„€μΉ˜ / μ—…κ·Έλ ˆμ΄λ“œ ν•  μˆ˜μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

$(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 sa tiller
μ„œλ²„ 였λ₯˜ (AlreadyExists) : μ„œλΉ„μŠ€ 계정 "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
μ–΄λŠ 쑰타
μ–΄λ–€ 경운기
ν‚€ μ„€μΉ˜
-이름 nfs-client-provisioner
--set nfs.server = 10.0.0.4
--set nfs.path = / nfsroot
--set storageClass.name = nfs
--set storageClass.defaultClass = true
stable / nfs-client-provisioner

λŒμ•„μ˜¨λ‹€

/ usr / local / bin / helm
/ usr / local / bin / tiller
였λ₯˜ : 경운기λ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.

이것은 이제 μ‡Ό μŠ€ν† νΌμ΄λ―€λ‘œ 도움을 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

@cyrilthank ν‹ΈλŸ¬ 배포가 μ‹€ν–‰λ˜κ³  μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έμ— ν‹ΈλŸ¬ 였λ₯˜κ°€ λ°œμƒν•œ 것 κ°™μŠ΅λ‹ˆλ‹€. λ‹€μŒ λͺ…령을 μ‹€ν–‰ν•˜μ—¬ tillerλ₯Ό μ„€μΉ˜ν•΄λ³΄μ‹­μ‹œμ˜€.
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 μœ„μ— 제곡된 단계λ₯Ό μ‹œλ„ν•΄λ³΄μ‹­μ‹œμ˜€ : https://github.com/helm/helm/issues/6374#issuecomment -533853888
더 이상 μ‚¬μš©λ˜μ§€ μ•ŠλŠ” API 버전을 μƒˆ λ²„μ „μœΌλ‘œ κ΅μ²΄ν•΄μ•Όν•©λ‹ˆλ‹€.

kubeflow_workaround_and_error_traces.txt

특히이 문제λ₯Ό κ³΅κ°œν•˜λŠ” λ°μžˆμ–΄ ν™˜μžμ˜ 닡변에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

μ£„μ†‘ν•˜μ§€λ§Œ ν•΄κ²° λ‹¨κ³„μ—μ„œ λ¬Έμ œκ°€μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

첨뢀 된 μΆ”μ μ˜ 단계λ₯Ό κ²€ν† ν•˜κ³  λ‚΄κ°€ 뭘 잘λͺ»ν•˜κ³  μžˆλŠ”μ§€ μ‘°μ–Έ ν•΄ μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.

@cyril κ°μ‚¬ν•©λ‹ˆλ‹€. kubeflow yamls에 λŒ€ν•΄ sed λͺ…령을 μ‹€ν–‰ν•˜μ—¬ 이전 api ν™•μž₯을 μƒˆ ν™•μž₯으둜 κ΅μ²΄ν•˜λ©΄λ©λ‹ˆλ‹€ (ν”„λ‘œ λ©”ν…Œμš°μŠ€λ₯Ό μ „ν˜€ 배포 ν•  ν•„μš” μ—†μŒ πŸ˜†). 잘 ν‘œν˜„ν•˜μ§€ λͺ»ν–ˆλ‹€λ©΄ λ―Έμ•ˆν•©λ‹ˆλ‹€.
이 μˆ˜μ •μ€ 기본적으둜 kubeflow dpl yamlsμ—μ„œ extensions/v1beta1 λ₯Ό apps/v1 둜 λŒ€μ²΄ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

μ•„ κ·Έλž˜μ„œ λ©μ²­ν•œ μΉ΄ν”Όλ₯Ό ν–ˆμ–΄ :(

λ‚΄ KFAPP = / nfsroot / kf-poc

μ—¬μ „νžˆ λͺ‡ 가지 λ©”μ‹œμ§€μ™€ μ΅œμ’… 였λ₯˜κ°€ ν‘œμ‹œλ˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

kubeflow의 λ‹€μŒ λ‹¨κ³„λ‘œ μ΄λ™ν•˜κΈ° μœ„ν•΄ μ§€κΈˆ λ‹Ήμ‹ μ—κ²Œ μ˜μ‘΄ν•˜λ―€λ‘œ 도와 μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

kubeflow_workaround_sed_and_error_traces.txt

@cyril κ°μ‚¬ν•©λ‹ˆλ‹€. kubeflow yamls에 λŒ€ν•΄ 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 λ³€ν™˜ -f-좜λ ₯ 버전/

맀번 μ‹€ν–‰λ˜μ–΄μ•Όν•©λ‹ˆλ‹€..kacheλ₯Ό ν¬ν•¨ν•˜μ—¬ KFAPP μœ„μΉ˜μ˜ λͺ¨λ“  yaml 파일

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 ν•˜λ©΄ λ³€κ²½ 사항이 μ μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ μ‚¬λžŒμ΄ 이것을 κ²½ν—˜ν•©λ‹ˆκΉŒ?

덜 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 -

감사!

방금 k8sλ₯Ό μ—…κ·Έλ ˆμ΄λ“œν–ˆκ³ μ΄ λ¬Έμ œμ— μ§λ©΄ν–ˆκ³  μœ„μ˜ μ†”λ£¨μ…˜μ„ μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. 배포λ₯Ό μƒμ„±ν•˜μ§€λ§Œ 볡제 μ„ΈνŠΈκ°€ μ‹€νŒ¨ν•˜κ³  이것이 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

ν•΄λ‹Ή μ„œλΉ„μŠ€ 계정을 λ§Œλ“€κΈ°μœ„ν•œ yaml νŒŒμΌμ€ μ–΄λ””μ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆκΉŒ?

μ•ˆλ…•ν•˜μ„Έμš”.

kubectl --namespace kube-system create sa tiller
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller

이것은 λ‚΄ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€!

6462λŠ” λ³‘ν•©λ˜μ—ˆμœΌλ©° λ‹€μŒ 릴리슀 (2.15.0)μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ§€κΈˆμ€ μœ„μ— 제곡된 ν•΄κ²° 방법을 μ‚¬μš©ν•˜κ±°λ‚˜ μΉ΄λ‚˜λ¦¬μ•„ 릴리슀λ₯Ό μ‚¬μš©ν•˜μ‹­μ‹œμ˜€ .

λͺ¨λ‘ κ°μ‚¬ν•©λ‹ˆλ‹€!

μΉ΄λ‚˜λ¦¬μ•„ μ΄λ―Έμ§€λŠ”μ΄ 병합이 μ•„μ§μ—†λŠ” ν•œ λ™μΌν•œ 였λ₯˜λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

@ 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/ tiller : 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 버전을 μ„€μΉ˜ν•˜κΈ°μœ„ν•œ setpsμž…λ‹ˆλ‹€. 1.15.4

  1. kubeadm μž¬μ„€μ •
  2. sudo apt-get install kubelet = 1.15.4-00 kubectl = 1.15.4-00 kubeadm = 1.15.4-00
  3. 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=x.x.x.x -VM의 λΉ„κ³΅κ°œ IP (λ§ˆμŠ€ν„°)
--apiserver-cert-extra-sans=x.x.x.x -VM의 곡용 IP (λ§ˆμŠ€ν„°) (둜컬 μ»΄ν“¨ν„°μ—μ„œ λ§ˆμŠ€ν„°μ— μ•‘μ„ΈμŠ€ν•˜λ €λŠ” 경우 ν•„μš”ν•©λ‹ˆλ‹€.

μ°Έκ³  : μ•„λž˜ 링크λ₯Ό 따라 자체 ν˜ΈμŠ€νŒ… Kubernetes ν΄λŸ¬μŠ€ν„° (http://docs.shippable.com/deploy/tutorial/create-kubeconfig-for-self-hosted-kubernetes-cluster/)에 λŒ€ν•œ kubeconfig νŒŒμΌμ„ μ„€μ •ν•˜μ‹­μ‹œμ˜€.

μ—¬μ „νžˆ κΆκΈˆν•œ 점이 있으면 μ•Œλ €μ£Όμ„Έμš”.

@cyrilthank λ§Œμ•½ 그것이

κ°μ‚¬ν•©λ‹ˆλ‹€ @MrSimonEmms 광산은 λ―Έλ‹ˆκ°€ μ•„λ‹™λ‹ˆλ‹€. λ‚˜λŠ” @UmamaheshMaxwell 의 단계와 ν•¨κ»˜ κ°€μ•Ό ν•  것이라고 μƒκ°ν•©λ‹ˆλ‹€.

이것을 κ³΅μœ ν•΄ μ£Όμ‹  @UmamaheshMaxwell μ—κ²Œ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.
kubernetes 버전을 λ‘€λ°±ν•˜λŠ” 데 μ‚¬μš©ν•œ 단계λ₯Ό κ³΅μœ ν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

@cyrilthank μš°λ¦¬λŠ” 자체 VM (Ubuntu 18+)을 μ‚¬μš©ν•΄ μ™”μŠ΅λ‹ˆλ‹€. μ•„λž˜λŠ” k8s 버전 1.15.4λ₯Ό μ„€μΉ˜ν•˜κΈ°μœ„ν•œ setpsμž…λ‹ˆλ‹€.

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 ν΄λŸ¬μŠ€ν„° (http://docs.shippable.com/deploy/tutorial/create-kubeconfig-for-self-hosted-kubernetes-cluster/)에 λŒ€ν•œ kubeconfig νŒŒμΌμ„ μ„€μ •ν•˜μ‹­μ‹œμ˜€.
μ—¬μ „νžˆ κΆκΈˆν•œ 점이 있으면 μ•Œλ €μ£Όμ„Έμš”.

ν™˜μž νšŒμ‹ μ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€ @UmamaheshMaxwell

κΈ°μ‘΄ kubernetes 1.16 섀정이 μžˆμŠ΅λ‹ˆλ‹€.이 단계λ₯Ό μ‹€ν–‰ν•  수 μžˆλŠ”μ§€ 확인해 μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

이것을 κ³΅μœ ν•΄ μ£Όμ‹  @UmamaheshMaxwell μ—κ²Œ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.
kubernetes 버전을 λ‘€λ°±ν•˜λŠ” 데 μ‚¬μš©ν•œ 단계λ₯Ό κ³΅μœ ν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?
@cyrilthank μš°λ¦¬λŠ” 자체 VM (Ubuntu 18+)을 μ‚¬μš©ν•΄ μ™”μŠ΅λ‹ˆλ‹€. μ•„λž˜λŠ” k8s 버전 1.15.4λ₯Ό μ„€μΉ˜ν•˜κΈ°μœ„ν•œ setpsμž…λ‹ˆλ‹€.
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 ν΄λŸ¬μŠ€ν„° (http://docs.shippable.com/deploy/tutorial/create-kubeconfig-for-self-hosted-kubernetes-cluster/)에 λŒ€ν•œ kubeconfig νŒŒμΌμ„ μ„€μ •ν•˜μ‹­μ‹œμ˜€.
μ—¬μ „νžˆ κΆκΈˆν•œ 점이 있으면 μ•Œλ €μ£Όμ„Έμš”.

ν™˜μž νšŒμ‹ μ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€ @UmamaheshMaxwell

κΈ°μ‘΄ kubernetes 1.16 섀정이 μžˆμŠ΅λ‹ˆλ‹€.이 단계λ₯Ό μ‹€ν–‰ν•  수 μžˆλŠ”μ§€ 확인해 μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

그래 @cyrilthank , 심지어 μš°λ¦¬λŠ” kubernetes 1.16.1을 가지고 μžˆμ—ˆμ§€λ§Œ μš°λ¦¬λŠ” 그것을 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 μ„€μ • (_Master 및 Node_ λͺ¨λ‘)
https://www.howtoforge.com/tutorial/how-to-install-kubernetes-on-ubuntu/
(μ‹œκ°„μ„ μ ˆμ•½ν•˜λ €λ©΄ μœ„μ˜ λ§ν¬μ—μ„œ μ œμ•ˆ 된 단계λ₯Ό μ΅œλŒ€ν•œ μžλ™ν™”ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.)

도움이 더 ν•„μš”ν•˜λ©΄ μ•Œλ €μ£Όμ„Έμš”. 둀백으둜 ν–‰λ³΅ν•œ μ—¬μ • :), 당신이 κ·Έκ²ƒμœΌλ‘œ 순쑰둭게 μ—¬ν–‰ν•˜κΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.

이미지 μœ„μΉ˜λ₯Ό gcr.azk8s.cn/kubernetes-helm/ tiller : 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://minikube.sigs.k8s.io/docs/reference/networking/proxy/

μ°Έκ³  : λͺ‡ 가지 μΆ”κ°€ ν…ŒμŠ€νŠΈ ν›„ λ‹€μš΄ κ·Έλ ˆμ΄λ“œκ°€ ν•„μš”ν•˜μ§€ μ•Šμ„ 수 있으며 λˆ„λ½ 된 것은 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.

ν•΄μ•Ό ν•  일

  • μ΅œμ‹  APIλ₯Ό μ°Έμ‘°ν•˜λ„λ‘ YAML 파일 λ³€κ²½
  • μ΅œμ‹  APIλ₯Ό ν˜ΈμΆœν•˜λ„λ‘ μ‚¬μš©μž 지정 톡합 및 컨트둀러 μ—…λ°μ΄νŠΈ
  • μ΅œμ‹  APIλ₯Ό ν˜ΈμΆœν•˜λ„λ‘ 타사 도ꡬ (μˆ˜μ‹  컨트둀러, 지속적 전달 μ‹œμŠ€ν…œ)λ₯Ό μ—…λ°μ΄νŠΈν•©λ‹ˆλ‹€.

μΈμš©ν•˜λ‹€ :

minikubeλ₯Ό μ‚¬μš©ν•˜λŠ” helm n00bλ‘œμ„œ kubernetes 버전을 λ‹€μŒκ³Ό 같이 μ„€μ •ν•˜μ—¬μ΄ 문제λ₯Ό ν•΄κ²°ν•  μˆ˜μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

$ minikube delete
$ minikube start --kubernetes-version=1.15.4

도움이 λ˜μ—ˆκΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.

@PierreF k8s v1.16.1 및 helm v2.15.0κ³Ό ν•¨κ»˜ μ†”λ£¨μ…˜ (https://github.com/helm/helm/issues/6374#issuecomment-533186177)을 μ‚¬μš©ν–ˆμœΌλ©° κ²½μš΄κΈ°κ°€ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

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

Helm 2.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 init otputμ—λŠ” spec.selector fyiκ°€ ν•„μš”ν•©λ‹ˆλ‹€.

ν˜„μž¬ ν•΄κ²° 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

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κ°€ apiVersion apps / v1을 배포 용으둜 λ³€κ²½ν•˜κΈ° λ•Œλ¬Έμ— λ³€κ²½ν•΄μ•Ό ν•  ν•œ κ°€μ§€λŠ” 사양에 λŒ€ν•œ 선택기 matchLabelsλ₯Ό μΆ”κ°€ν•΄μ•Όν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

또 λ‹€λ₯Έ ν•΄κ²° 방법은 tillerλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” Helm 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:
. 
.
.

helm이 tiller 배포λ₯Ό μƒμ„±ν•˜λ €κ³  μ‹œλ„ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. apiVersion: extensions/v1beta1
에 λ”°λ₯΄λ©΄ : https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16
더 이상 μ§€μ›λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

이 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. μ–΄λ–»κ²Œ ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆκΉŒ ???

root @ jenkin : ~ # helm init --service-account tiller
$ HELM_HOME이 /root/.helm에 κ΅¬μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
였λ₯˜ : 였λ₯˜ μ„€μΉ˜ : μ•Œ 수 μ—†μŒ (배포 ν›„ ν™•μž₯ ν”„λ‘œκ·Έλž¨)
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λŠ” 'λ§Œλ“€κΈ°'λ₯Ό '적용'으둜 λŒ€μ²΄ν•˜κΈ°μ— μΆ©λΆ„ν•©λ‹ˆλ‹€. μœ„μ˜ ν•œ 쀄은 아직 λ¦¬μ†ŒμŠ€ 생성을 μ‹œλ„ν•˜μ§€ μ•Šμ•˜λ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰