Helm: рдкреИрдЪ рдмрдирд╛рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓: versionedObject рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдЬреВрди 2018  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: helm/helm

helm version рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ:

Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}

kubectl version рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ:

Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.5", GitCommit:"32ac1c9073b132b8ba18aa830f46b77dcceb0723", GitTreeState:"clean", BuildDate:"2018-06-21T11:46:00Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.5", GitCommit:"f01a2bf98249a4db383560443a59bed0c13575df", GitTreeState:"clean", BuildDate:"2018-03-19T15:50:45Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛ / рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо: AWS

рдореБрдЭреЗ рдЕрдкрдЧреНрд░реЗрдб рдкрд░ рдЖрдВрддрд░рд╛рдпрд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд░рд╣реА рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, apiVersion: apps/v1 рд╕рд╛рде рдПрдХ рдбреЗрдореЙрдиреЗрдЯ рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ spec.template.spec.resources рдмрджрд▓рд╛:
рд╕рдВрдЪрд╛рд▓рди, рдкрддрд╡рд╛рд░:

Error: UPGRADE FAILED: failed to create patch: failed to get versionedObject: Object 'apiVersion' is missing in 'unstructured object has no version' && failed to create patch: unable to find api field in struct PodSpec for the json field "resources"

рдЯрд┐рд▓рд░:

[tiller] 2018/06/27 13:29:42 creating updated release for k8s-efk-filebeat-fix
[storage] 2018/06/27 13:29:42 creating release "k8s-efk-filebeat-fix.v2"
[tiller] 2018/06/27 13:29:42 performing update for k8s-efk-filebeat-fix
[tiller] 2018/06/27 13:29:42 executing 1 pre-upgrade hooks for k8s-efk-filebeat-fix
[tiller] 2018/06/27 13:29:42 hooks complete for pre-upgrade k8s-efk-filebeat-fix
[kube] 2018/06/27 13:29:42 building resources from updated manifest
[kube] 2018/06/27 13:29:42 checking 23 resources for changes
[kube] 2018/06/27 13:29:42 error updating the resource "k8s-efk-filebeat-fix-ci-filebeat":
     failed to create patch: failed to get versionedObject: Object 'apiVersion' is missing in 'unstructured object has no version'
[kube] 2018/06/27 13:29:42 error updating the resource "k8s-efk-filebeat-fix-ci-filebeat":
     failed to create patch: unable to find api field in struct PodSpec for the json field "resources"
[tiller] 2018/06/27 13:29:43 warning: Upgrade "k8s-efk-filebeat-fix" failed: failed to create patch: failed to get versionedObject: Object 'apiVersion' is missing in 'unstructured object has no version' && failed to create patch: unable to find api field in struct PodSpec for the json field "resources"
[storage] 2018/06/27 13:29:43 updating release "k8s-efk-filebeat-fix.v1"
[storage] 2018/06/27 13:29:43 updating release "k8s-efk-filebeat-fix.v2"

рдпрд╣ # 3382 рдХреЗ рд╕рдорд╛рди рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реАрдЖрд░рдбреА рдирд╣реАрдВ рд╣реИред

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

рдЗрд╕рдХрд╛ рдореВрд▓ рдХрд╛рд░рдг рдЯреЗрдВрдкрд░рд┐рдВрдЧ рд╣реИред

# some comment
{{- if .Values.global.rbacEnable -}}
apiVersion: v1
kind: ServiceAccount
...

рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?

# some comment apiVersion: v1
kind: ServiceAccount
...

рд╣реЗрд▓реНрдо рдЦреБрд╢реА рд╕реЗ рдЕрдорд╛рдиреНрдп рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ:
Error: failed to create patch: failed to get versionedObject: Object 'apiVersion' is missing in 'unstructured object has no version'

рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдХреБрдмреЗрдЯреЗрд▓ рдХреЗ рд╕рд╛рде рд╣реИред рдореБрдЭреЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдкрд╛рдХрд░ рдЦреБрд╢реА рд╣реЛрдЧреА:

TMP_DIR=/tmp/manifests
mkdir -p $TMP_DIR
helm template $HELM_OPTS $HELM_CHART_PATH \
      | csplit -f $TMP_DIR/ --suppress-matched -q -z - '/^---$/' '{*}'
for f in $TMP_DIR/*;  do
  kubectl apply --dry-run -f $f || exit 1
done

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

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рдХреГрдд Daemonset рдерд╛ (рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛)ред рдХреНрдпрд╛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕рддреНрдпрд╛рдкрди рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдкрдХрдбрд╝рддрд╛ рд╣реИ?

error: error validating "/tmp/test.yaml": error validating data: ValidationError(DaemonSet.spec.template.spec): unknown field "resources" in io.k8s.api.core.v1.PodSpec; if you choose to ignore these errors, turn validation off with --validate=false

рд╣рд╛рдп @ hobti01

рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ k8s рд╕рддреНрдпрд╛рдкрди рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ?

рдЗрд╕рдХрд╛ рдореВрд▓ рдХрд╛рд░рдг рдЯреЗрдВрдкрд░рд┐рдВрдЧ рд╣реИред

# some comment
{{- if .Values.global.rbacEnable -}}
apiVersion: v1
kind: ServiceAccount
...

рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?

# some comment apiVersion: v1
kind: ServiceAccount
...

рд╣реЗрд▓реНрдо рдЦреБрд╢реА рд╕реЗ рдЕрдорд╛рдиреНрдп рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ:
Error: failed to create patch: failed to get versionedObject: Object 'apiVersion' is missing in 'unstructured object has no version'

рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдХреБрдмреЗрдЯреЗрд▓ рдХреЗ рд╕рд╛рде рд╣реИред рдореБрдЭреЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдкрд╛рдХрд░ рдЦреБрд╢реА рд╣реЛрдЧреА:

TMP_DIR=/tmp/manifests
mkdir -p $TMP_DIR
helm template $HELM_OPTS $HELM_CHART_PATH \
      | csplit -f $TMP_DIR/ --suppress-matched -q -z - '/^---$/' '{*}'
for f in $TMP_DIR/*;  do
  kubectl apply --dry-run -f $f || exit 1
done
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

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

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

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

mikhno-s picture mikhno-s  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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