kubes 0.3.5 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -0
  3. data/README.md +6 -5
  4. data/docs/_docs/config/args.md +10 -0
  5. data/docs/_docs/config/args/docker.md +19 -0
  6. data/docs/_docs/config/{kubectl/args.md → args/kubectl.md} +2 -0
  7. data/docs/_docs/config/docker.md +4 -40
  8. data/docs/_docs/config/hooks.md +10 -0
  9. data/docs/_docs/config/hooks/docker.md +70 -0
  10. data/docs/_docs/config/hooks/kubectl.md +83 -0
  11. data/docs/_docs/config/hooks/kubes.md +67 -0
  12. data/docs/_docs/config/hooks/ruby.md +76 -0
  13. data/docs/_docs/config/kubectl.md +2 -2
  14. data/docs/_docs/config/reference.md +20 -0
  15. data/docs/_docs/config/skip.md +58 -0
  16. data/docs/_docs/dsl/resources.md +1 -1
  17. data/docs/_docs/helpers.md +3 -2
  18. data/docs/_docs/intro.md +3 -1
  19. data/docs/_docs/learn/dsl/review-project.md +4 -2
  20. data/docs/_docs/learn/yaml/review-project.md +4 -2
  21. data/docs/_docs/patterns.md +4 -1
  22. data/docs/_docs/patterns/clock-web-worker.md +2 -0
  23. data/docs/_docs/patterns/migrations.md +123 -0
  24. data/docs/_docs/patterns/secrets.md +82 -0
  25. data/docs/_includes/config/hooks/options.md +20 -0
  26. data/docs/_includes/layering/layers.md +1 -1
  27. data/docs/_includes/sidebar.html +28 -13
  28. data/docs/_sass/theme.scss +25 -1
  29. data/kubes.gemspec +3 -0
  30. data/lib/kubes.rb +4 -1
  31. data/lib/kubes/cli.rb +20 -5
  32. data/lib/kubes/cli/apply.rb +2 -1
  33. data/lib/kubes/cli/base.rb +11 -0
  34. data/lib/kubes/cli/compile.rb +8 -0
  35. data/lib/kubes/cli/delete.rb +1 -1
  36. data/lib/kubes/cli/exec.rb +37 -6
  37. data/lib/kubes/cli/get.rb +1 -1
  38. data/lib/kubes/cli/init.rb +7 -2
  39. data/lib/kubes/cli/logs.rb +27 -3
  40. data/lib/kubes/cli/prune.rb +95 -0
  41. data/lib/kubes/compiler.rb +11 -7
  42. data/lib/kubes/compiler/decorator/base.rb +7 -1
  43. data/lib/kubes/compiler/decorator/{resources/secret.rb → hashable.rb} +5 -4
  44. data/lib/kubes/compiler/decorator/hashable/field.rb +53 -0
  45. data/lib/kubes/compiler/decorator/hashable/storage.rb +19 -0
  46. data/lib/kubes/compiler/decorator/post.rb +77 -0
  47. data/lib/kubes/compiler/decorator/pre.rb +12 -0
  48. data/lib/kubes/compiler/shared/helpers.rb +7 -2
  49. data/lib/kubes/compiler/strategy.rb +2 -2
  50. data/lib/kubes/compiler/strategy/base.rb +2 -3
  51. data/lib/kubes/compiler/strategy/dsl.rb +2 -2
  52. data/lib/kubes/compiler/strategy/erb.rb +8 -1
  53. data/lib/kubes/compiler/strategy/erb/yaml_error.rb +60 -0
  54. data/lib/kubes/compiler/strategy/result.rb +4 -6
  55. data/lib/kubes/compiler/util/normalize.rb +1 -1
  56. data/lib/kubes/compiler/util/save_file.rb +8 -0
  57. data/lib/kubes/config.rb +16 -11
  58. data/lib/kubes/docker/strategy/build/docker.rb +1 -1
  59. data/lib/kubes/docker/strategy/build/gcloud.rb +1 -1
  60. data/lib/kubes/docker/strategy/image_name.rb +1 -1
  61. data/lib/kubes/docker/strategy/push/docker.rb +1 -1
  62. data/lib/kubes/docker/strategy/push/gcloud.rb +1 -1
  63. data/lib/kubes/docker/strategy/utils.rb +1 -1
  64. data/lib/kubes/hooks/builder.rb +29 -15
  65. data/lib/kubes/hooks/concern.rb +10 -0
  66. data/lib/kubes/hooks/dsl.rb +2 -1
  67. data/lib/kubes/hooks/runner.rb +22 -0
  68. data/lib/kubes/kubectl.rb +21 -18
  69. data/lib/kubes/kubectl/batch.rb +8 -5
  70. data/lib/kubes/kubectl/{decider.rb → dispatcher.rb} +1 -1
  71. data/lib/kubes/kubectl/fetch/base.rb +12 -9
  72. data/lib/kubes/kubectl/fetch/deployment.rb +12 -13
  73. data/lib/kubes/kubectl/fetch/pods.rb +4 -15
  74. data/lib/kubes/kubectl/kustomize.rb +1 -1
  75. data/lib/kubes/kubectl/ordering.rb +12 -0
  76. data/lib/kubes/util/consider.rb +2 -1
  77. data/lib/kubes/util/sh.rb +1 -1
  78. data/lib/kubes/version.rb +1 -1
  79. data/spec/fixtures/decorators/deployment/both/envFrom.yaml +31 -0
  80. data/spec/fixtures/decorators/deployment/both/valueFrom.yaml +33 -0
  81. data/spec/fixtures/decorators/deployment/both/volumes.yaml +40 -0
  82. data/spec/fixtures/prune/capture.yaml +57 -0
  83. data/spec/fixtures/prune/fetch_items.yaml +268 -0
  84. data/spec/kubes/cli/prune_spec.rb +38 -0
  85. data/spec/kubes/compiler/decorator/{resources → post}/deployment_spec.rb +52 -6
  86. data/spec/kubes/compiler/decorator/{resources → post}/pod_spec.rb +2 -11
  87. metadata +56 -19
  88. data/docs/_docs/config/kubectl/hooks.md +0 -39
  89. data/lib/kubes/compiler/decorator.rb +0 -17
  90. data/lib/kubes/compiler/decorator/compile.rb +0 -12
  91. data/lib/kubes/compiler/decorator/resources/base.rb +0 -13
  92. data/lib/kubes/compiler/decorator/resources/container.rb +0 -76
  93. data/lib/kubes/compiler/decorator/resources/container/mapping.rb +0 -28
  94. data/lib/kubes/compiler/decorator/resources/deployment.rb +0 -10
  95. data/lib/kubes/compiler/decorator/resources/pod.rb +0 -10
  96. data/lib/kubes/compiler/decorator/write.rb +0 -14
  97. data/lib/kubes/docker/strategy/hooks.rb +0 -9
@@ -30,7 +30,7 @@ module Kubes::Util
30
30
  success
31
31
  end
32
32
 
33
- def capture(command, options={})
33
+ def sh_capture(command, options={})
34
34
  exit_on_fail = options[:exit_on_fail].nil? ? true : options[:exit_on_fail]
35
35
  logger.info "=> #{command}" if options[:show_command]
36
36
  out = `#{command}`.strip
@@ -1,3 +1,3 @@
1
1
  module Kubes
2
- VERSION = "0.3.5"
2
+ VERSION = "0.4.4"
3
3
  end
@@ -0,0 +1,31 @@
1
+ ---
2
+ metadata:
3
+ namespace: default
4
+ labels:
5
+ app: demo
6
+ role: web
7
+ name: demo-web
8
+ spec:
9
+ selector:
10
+ matchLabels:
11
+ app: demo
12
+ role: web
13
+ template:
14
+ metadata:
15
+ labels:
16
+ app: demo
17
+ role: web
18
+ spec:
19
+ containers:
20
+ - name: demo-web
21
+ image: gcr.io/project/demo-web:kubes-2020-06-23T00-07-54
22
+ envFrom:
23
+ - secretRef:
24
+ name: demo-secret
25
+ - configMapRef:
26
+ name: demo-config-map
27
+ - configMapRef:
28
+ name: demo-config-map-2
29
+ replicas: 1
30
+ apiVersion: apps/v1
31
+ kind: Deployment
@@ -0,0 +1,33 @@
1
+ ---
2
+ metadata:
3
+ namespace: default
4
+ labels:
5
+ app: demo
6
+ role: web
7
+ name: demo-web
8
+ spec:
9
+ selector:
10
+ matchLabels:
11
+ app: demo
12
+ role: web
13
+ template:
14
+ metadata:
15
+ labels:
16
+ app: demo
17
+ role: web
18
+ spec:
19
+ containers:
20
+ - name: demo-web
21
+ image: gcr.io/project/demo-web:kubes-2020-06-23T00-07-54
22
+ env:
23
+ - name: MYSQL_ROOT_PASSWORD
24
+ valueFrom:
25
+ configMapKeyRef:
26
+ name: demo-config-map
27
+ key: password
28
+ secretKeyRef:
29
+ name: demo-secret
30
+ key: password
31
+ replicas: 1
32
+ apiVersion: apps/v1
33
+ kind: Deployment
@@ -0,0 +1,40 @@
1
+ ---
2
+ metadata:
3
+ namespace: default
4
+ labels:
5
+ app: demo
6
+ role: web
7
+ name: demo-web
8
+ spec:
9
+ selector:
10
+ matchLabels:
11
+ app: demo
12
+ role: web
13
+ template:
14
+ metadata:
15
+ labels:
16
+ app: demo
17
+ role: web
18
+ spec:
19
+ containers:
20
+ - name: demo-web
21
+ image: gcr.io/project/demo-web:kubes-2020-06-23T00-07-54
22
+ volumeMounts:
23
+ - mountPath: /config-map
24
+ name: config-map-volume
25
+ volumes:
26
+ - configMap:
27
+ name: demo-config-map
28
+ items:
29
+ - key: k1
30
+ path: config-map.conf
31
+ name: config-map-volume
32
+ - secret:
33
+ secretName: demo-secret
34
+ items:
35
+ - key: k1
36
+ path: secrets.conf
37
+ name: secrets-volume
38
+ replicas: 1
39
+ apiVersion: apps/v1
40
+ kind: Pod
@@ -0,0 +1,57 @@
1
+ ---
2
+ - apiVersion: v1
3
+ data:
4
+ ca.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLekNDQWhPZ0F3SUJBZ0lSQUw5UTRFZXFyS0t2ZXYwWFhaMCtMOFV3RFFZSktvWklodmNOQVFFTEJRQXcKTHpFdE1Dc0dBMVVFQXhNa05UUXpPVGczWXpBdE5qRTRaaTAwTlRRMkxXRTRNemt0WmpBd016WmlaR0ZrTURRMgpNQjRYRFRJd01UQXdOakl4TkRNeE5Gb1hEVEkxTVRBd05USXlORE14TkZvd0x6RXRNQ3NHQTFVRUF4TWtOVFF6Ck9UZzNZekF0TmpFNFppMDBOVFEyTFdFNE16a3RaakF3TXpaaVpHRmtNRFEyTUlJQklqQU5CZ2txaGtpRzl3MEIKQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdGhoK2xLbTRjNm4zSjl3ZWFxQTdYRFFPSFNlOUw1VmRYOUJiem5lcQpLR21nM0pFWkVQWHJvZ3B5YmpYNFU5NXJuTUNWM2JPQkhYaFJaaGZibE5wdlVJTlZVdnl0Y1ZpMDkzU1JaUFB6CkgwTmV4Z0YxVFUrWi85VlRWWDhZNHBoaURiR0pCdnFGV1JxWTV3OGpTSUhad2lOd04vSlQ1VFIxZEJNWC9CN1cKNGNxMHRjQjNwVkxnZDJPcThSODdhdm9rZzQ5a1BHd3J1WUZJTVppTTM2VldmOWNFV3duVnp5WEV3UDhhT21kZApmaDFEL2oydk1obmg3THZjS09NbVRaQWJrSy80YjlqMjVjTU1TNTdoZDFwU0hCdFRCcmRrNnA5Tjcxd2MyeUkzCm5KektBQ1U0WG1NRzRodGlzQlFTTjRzUGxlNHZhT1FLSGtlSFY1aFVGZkhFYXdJREFRQUJvMEl3UURBT0JnTlYKSFE4QkFmOEVCQU1DQWdRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVUxiWU82S1drVnVHVgpkSTE3c3dRQkpORC9NTGN3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUhqc1lXZUhzU2VOc01XTzl4SGxsVWpUCjBHU0I5USt2aXNQejNBVWdUNy9uQU0wRW1kREdIQjFhVzVPQ2FTTXVtRWFhMHVkQjVkbTV1c1pQUEN5cDFrckUKdS90UUxmVStPQmtmZE1keTZFREdEcHJtVmsxWW1xa2FvWjFGUWZKQXI0WGRGQVB1OWM4WVJqaUlxMFV0c1c3cQo1dDc4SjBhYmtpdGxncW5kcWI5WHpkWEI5NUZmajF2Sk9hbnFWWGlYQzBIeVExNlJWUEtCOG5tajYzL1pjeFdECkIzdGlOUG9hUmF0cVhoL293MDYxRlRGWHQzNUZnV01QeWlWWXMzTG5HNFZQRHRibFBqSXRxaC9BSTl3ZXNEbUoKdCt4TkgreHk2L3JPTmY3YldvZjM1cWxXVnVBQjdIOXk0NTFGd3VBd3ZNY3B1cHNIenNrTGNCY3UvYUxmT0prPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
5
+ namespace: Z2FyZGVu
6
+ token: ZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNkluWlNRMTlTWlhoMWVqSnRlbnBYVTNwdFRETmhXa1UxWjJsU1NGQTNVVFZ1Um5KM1dubE1TR3czUzI4aWZRLmV5SnBjM01pT2lKcmRXSmxjbTVsZEdWekwzTmxjblpwWTJWaFkyTnZkVzUwSWl3aWEzVmlaWEp1WlhSbGN5NXBieTl6WlhKMmFXTmxZV05qYjNWdWRDOXVZVzFsYzNCaFkyVWlPaUpuWVhKa1pXNGlMQ0pyZFdKbGNtNWxkR1Z6TG1sdkwzTmxjblpwWTJWaFkyTnZkVzUwTDNObFkzSmxkQzV1WVcxbElqb2laR1ZtWVhWc2RDMTBiMnRsYmkxeGR6ZHVjQ0lzSW10MVltVnlibVYwWlhNdWFXOHZjMlZ5ZG1salpXRmpZMjkxYm5RdmMyVnlkbWxqWlMxaFkyTnZkVzUwTG01aGJXVWlPaUprWldaaGRXeDBJaXdpYTNWaVpYSnVaWFJsY3k1cGJ5OXpaWEoyYVdObFlXTmpiM1Z1ZEM5elpYSjJhV05sTFdGalkyOTFiblF1ZFdsa0lqb2lZekE0T1RWalpUSXRZV00xWlMwME5HUmtMV0UxTlRZdFpEY3lOR1pqTlRkaE1qSTJJaXdpYzNWaUlqb2ljM2x6ZEdWdE9uTmxjblpwWTJWaFkyTnZkVzUwT21kaGNtUmxianBrWldaaGRXeDBJbjAuRFpFTDNFZURHa182WEhlVWJ2QWJGanZ1aDBROHdKMmFpWTI2YWk2UVdPQTVSVlV1Ulcwbkx6c2VnVVBvN0dkR1g0ejAtUGpKNGY3bzJGRjMxVHh1ZVF0MkJUMW1nZGdONVVDR1ZCY0xuVVRURzdZZVJPUzFhd3FUQ2pYWDgzTG03VDQ2R3Fmbi1tVWkxUnVNdUlvUm1KRWVTYUxaekdPNFFPOGhBVTVOaTJJNTBYblRUQXJ3TW84TS1mZjI0N3U1RmMyaFVWUndmZW9DdVAxNVJEU05DUk1rSVBYaGMxOEFxUkZLc1l5T3JJRHNWcGFuNFIwRXQwM3pUOTVjeE8wZEowd1dBeXFiVUw0M3VvaTZaa0NnNmRrb191Z1FuNWgtcEFlYjJybGNIbDNFUUdNcl9QTndVWDI0OVNyeG02MW1Pa25fMHlZMS1DQkVUWG5CUEtHRW5R
7
+ kind: Secret
8
+ metadata:
9
+ annotations:
10
+ kubernetes.io/service-account.name: default
11
+ kubernetes.io/service-account.uid: c0895ce2-ac5e-44dd-a556-d724fc57a226
12
+ creationTimestamp: '2020-10-07T19:04:11Z'
13
+ name: default-token-qw7np
14
+ namespace: garden
15
+ resourceVersion: '486470'
16
+ selfLink: "/api/v1/namespaces/garden/secrets/default-token-qw7np"
17
+ uid: ec42ba8b-7c03-4ab2-9e95-5a144b3f5938
18
+ type: kubernetes.io/service-account-token
19
+ - apiVersion: v1
20
+ data:
21
+ foo: Zm9vCg==
22
+ password: cGFzcw==
23
+ username: dXNlcg==
24
+ kind: Secret
25
+ metadata:
26
+ annotations:
27
+ kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","data":{"foo":"Zm9vCg==","password":"cGFzcw==","username":"dXNlcg=="},"kind":"Secret","metadata":{"annotations":{},"labels":{"app":"garden"},"name":"demo-secret-CURRENT111","namespace":"garden"}}
28
+
29
+ '
30
+ creationTimestamp: '2020-10-08T19:42:41Z'
31
+ labels:
32
+ app: garden
33
+ name: demo-secret-CURRENT111
34
+ namespace: garden
35
+ resourceVersion: '1075012'
36
+ selfLink: "/api/v1/namespaces/garden/secrets/demo-secret-CURRENT111"
37
+ uid: 63c386ad-0069-4767-b0b8-e70dbafb7c9c
38
+ type: Opaque
39
+ - apiVersion: v1
40
+ data:
41
+ password: cGFzcw==
42
+ username: dXNlcg==
43
+ kind: Secret
44
+ metadata:
45
+ annotations:
46
+ kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","data":{"password":"cGFzcw==","username":"dXNlcg=="},"kind":"Secret","metadata":{"annotations":{},"labels":{"app":"garden"},"name":"demo-secret-OLD1111111","namespace":"garden"}}
47
+
48
+ '
49
+ creationTimestamp: '2020-10-07T19:04:12Z'
50
+ labels:
51
+ app: garden
52
+ name: demo-secret-OLD1111111
53
+ namespace: garden
54
+ resourceVersion: '486474'
55
+ selfLink: "/api/v1/namespaces/garden/secrets/demo-secret-OLD1111111"
56
+ uid: a45afce3-a418-478e-8e13-b6e6041ad2e1
57
+ type: Opaque
@@ -0,0 +1,268 @@
1
+ ---
2
+ - apiVersion: apps/v1
3
+ kind: Deployment
4
+ metadata:
5
+ annotations:
6
+ deployment.kubernetes.io/revision: '2'
7
+ kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"labels":{"app":"garden","role":"clock"},"name":"clock","namespace":"garden"},"spec":{"replicas":1,"revisionHistoryLimit":0,"selector":{"matchLabels":{"app":"garden","role":"clock"}},"template":{"metadata":{"labels":{"app":"garden","role":"clock"}},"spec":{"containers":[{"envFrom":[{"secretRef":{"name":"demo-secret-OLD1111111"}}],"image":"gcr.io/PROJECT/secret:kubes-2020-10-08T19-42-34-a428e44","name":"clock"}]}}}}
8
+
9
+ '
10
+ creationTimestamp: '2020-10-08T02:24:30Z'
11
+ generation: 3
12
+ labels:
13
+ app: garden
14
+ role: clock
15
+ name: clock
16
+ namespace: garden
17
+ resourceVersion: '1076690'
18
+ selfLink: "/apis/apps/v1/namespaces/garden/deployments/clock"
19
+ uid: 6c6234bd-e7e8-421c-856d-10e6f0ae18df
20
+ spec:
21
+ progressDeadlineSeconds: 600
22
+ replicas: 1
23
+ revisionHistoryLimit: 0
24
+ selector:
25
+ matchLabels:
26
+ app: garden
27
+ role: clock
28
+ strategy:
29
+ rollingUpdate:
30
+ maxSurge: 25%
31
+ maxUnavailable: 25%
32
+ type: RollingUpdate
33
+ template:
34
+ metadata:
35
+ creationTimestamp:
36
+ labels:
37
+ app: garden
38
+ role: clock
39
+ spec:
40
+ containers:
41
+ - envFrom:
42
+ - secretRef:
43
+ name: demo-secret-OLD1111111
44
+ image: gcr.io/PROJECT/secret:kubes-2020-10-08T19-42-34-a428e44
45
+ imagePullPolicy: IfNotPresent
46
+ name: clock
47
+ resources: {}
48
+ terminationMessagePath: "/dev/termination-log"
49
+ terminationMessagePolicy: File
50
+ dnsPolicy: ClusterFirst
51
+ restartPolicy: Always
52
+ schedulerName: default-scheduler
53
+ securityContext: {}
54
+ terminationGracePeriodSeconds: 30
55
+ status:
56
+ availableReplicas: 1
57
+ conditions:
58
+ - lastTransitionTime: '2020-10-08T02:24:31Z'
59
+ lastUpdateTime: '2020-10-08T19:42:45Z'
60
+ message: ReplicaSet "clock-6f9f9d47cb" has successfully progressed.
61
+ reason: NewReplicaSetAvailable
62
+ status: 'True'
63
+ type: Progressing
64
+ - lastTransitionTime: '2020-10-08T19:46:34Z'
65
+ lastUpdateTime: '2020-10-08T19:46:34Z'
66
+ message: Deployment has minimum availability.
67
+ reason: MinimumReplicasAvailable
68
+ status: 'True'
69
+ type: Available
70
+ observedGeneration: 3
71
+ readyReplicas: 1
72
+ replicas: 1
73
+ updatedReplicas: 1
74
+ - apiVersion: batch/v1
75
+ kind: Job
76
+ metadata:
77
+ annotations:
78
+ kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"batch/v1","kind":"Job","metadata":{"annotations":{},"name":"migrate","namespace":"garden"},"spec":{"backoffLimit":4,"template":{"spec":{"containers":[{"command":["sleep","60"],"envFrom":[{"secretRef":{"name":"demo-secret-CURRENT111"}}],"image":"gcr.io/PROJECT/secret:kubes-2020-10-07T20-12-16-84dbc4e","name":"migrate"}],"restartPolicy":"Never"}}}}
79
+
80
+ '
81
+ creationTimestamp: '2020-10-07T20:12:29Z'
82
+ labels:
83
+ controller-uid: a5dbf73c-a49f-4eca-993e-7ab6db0946c8
84
+ job-name: migrate
85
+ name: migrate
86
+ namespace: garden
87
+ resourceVersion: '514227'
88
+ selfLink: "/apis/batch/v1/namespaces/garden/jobs/migrate"
89
+ uid: a5dbf73c-a49f-4eca-993e-7ab6db0946c8
90
+ spec:
91
+ backoffLimit: 4
92
+ completions: 1
93
+ parallelism: 1
94
+ selector:
95
+ matchLabels:
96
+ controller-uid: a5dbf73c-a49f-4eca-993e-7ab6db0946c8
97
+ template:
98
+ metadata:
99
+ creationTimestamp:
100
+ labels:
101
+ controller-uid: a5dbf73c-a49f-4eca-993e-7ab6db0946c8
102
+ job-name: migrate
103
+ spec:
104
+ containers:
105
+ - command:
106
+ - sleep
107
+ - '60'
108
+ envFrom:
109
+ - secretRef:
110
+ name: demo-secret-CURRENT111
111
+ image: gcr.io/PROJECT/secret:kubes-2020-10-07T20-12-16-84dbc4e
112
+ imagePullPolicy: IfNotPresent
113
+ name: migrate
114
+ resources: {}
115
+ terminationMessagePath: "/dev/termination-log"
116
+ terminationMessagePolicy: File
117
+ dnsPolicy: ClusterFirst
118
+ restartPolicy: Never
119
+ schedulerName: default-scheduler
120
+ securityContext: {}
121
+ terminationGracePeriodSeconds: 30
122
+ status:
123
+ completionTime: '2020-10-07T20:13:31Z'
124
+ conditions:
125
+ - lastProbeTime: '2020-10-07T20:13:31Z'
126
+ lastTransitionTime: '2020-10-07T20:13:31Z'
127
+ status: 'True'
128
+ type: Complete
129
+ startTime: '2020-10-07T20:12:29Z'
130
+ succeeded: 1
131
+ - apiVersion: v1
132
+ kind: Namespace
133
+ metadata:
134
+ annotations:
135
+ kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"labels":{"app":"garden"},"name":"garden"}}
136
+
137
+ '
138
+ creationTimestamp: '2020-10-07T19:04:11Z'
139
+ labels:
140
+ app: garden
141
+ name: garden
142
+ resourceVersion: '486464'
143
+ selfLink: "/api/v1/namespaces/garden"
144
+ uid: 3db2c4cf-40b9-42cd-96f4-7f0aebff80e1
145
+ spec:
146
+ finalizers:
147
+ - kubernetes
148
+ status:
149
+ phase: Active
150
+ - apiVersion: v1
151
+ data:
152
+ foo: Zm9vCg==
153
+ password: cGFzcw==
154
+ username: dXNlcg==
155
+ kind: Secret
156
+ metadata:
157
+ annotations:
158
+ kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","data":{"foo":"Zm9vCg==","password":"cGFzcw==","username":"dXNlcg=="},"kind":"Secret","metadata":{"annotations":{},"labels":{"app":"garden"},"name":"demo-secret-OLD1111111","namespace":"garden"}}
159
+
160
+ '
161
+ creationTimestamp: '2020-10-08T19:42:41Z'
162
+ labels:
163
+ app: garden
164
+ name: demo-secret-OLD1111111
165
+ namespace: garden
166
+ resourceVersion: '1075012'
167
+ selfLink: "/api/v1/namespaces/garden/secrets/demo-secret-OLD1111111"
168
+ uid: 63c386ad-0069-4767-b0b8-e70dbafb7c9c
169
+ type: Opaque
170
+ - apiVersion: apps/v1
171
+ kind: Deployment
172
+ metadata:
173
+ annotations:
174
+ deployment.kubernetes.io/revision: '5'
175
+ kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"labels":{"app":"garden","role":"web"},"name":"web","namespace":"garden"},"spec":{"replicas":1,"revisionHistoryLimit":0,"selector":{"matchLabels":{"app":"garden","role":"web"}},"template":{"metadata":{"labels":{"app":"garden","role":"web"}},"spec":{"containers":[{"envFrom":[{"secretRef":{"name":"demo-secret-OLD1111111"}}],"image":"gcr.io/PROJECT/secret:kubes-2020-10-08T19-42-34-a428e44","name":"web"}]}}}}
176
+
177
+ '
178
+ creationTimestamp: '2020-10-07T19:04:14Z'
179
+ generation: 6
180
+ labels:
181
+ app: garden
182
+ role: web
183
+ name: web
184
+ namespace: garden
185
+ resourceVersion: '1076735'
186
+ selfLink: "/apis/apps/v1/namespaces/garden/deployments/web"
187
+ uid: 31b562a8-1a35-4bf6-972d-f2d44a47e149
188
+ spec:
189
+ progressDeadlineSeconds: 600
190
+ replicas: 1
191
+ revisionHistoryLimit: 0
192
+ selector:
193
+ matchLabels:
194
+ app: garden
195
+ role: web
196
+ strategy:
197
+ rollingUpdate:
198
+ maxSurge: 25%
199
+ maxUnavailable: 25%
200
+ type: RollingUpdate
201
+ template:
202
+ metadata:
203
+ creationTimestamp:
204
+ labels:
205
+ app: garden
206
+ role: web
207
+ spec:
208
+ containers:
209
+ - envFrom:
210
+ - secretRef:
211
+ name: demo-secret-OLD1111111
212
+ image: gcr.io/PROJECT/secret:kubes-2020-10-08T19-42-34-a428e44
213
+ imagePullPolicy: IfNotPresent
214
+ name: web
215
+ resources: {}
216
+ terminationMessagePath: "/dev/termination-log"
217
+ terminationMessagePolicy: File
218
+ dnsPolicy: ClusterFirst
219
+ restartPolicy: Always
220
+ schedulerName: default-scheduler
221
+ securityContext: {}
222
+ terminationGracePeriodSeconds: 30
223
+ status:
224
+ availableReplicas: 1
225
+ conditions:
226
+ - lastTransitionTime: '2020-10-07T19:04:14Z'
227
+ lastUpdateTime: '2020-10-08T19:42:46Z'
228
+ message: ReplicaSet "web-9c4796f88" has successfully progressed.
229
+ reason: NewReplicaSetAvailable
230
+ status: 'True'
231
+ type: Progressing
232
+ - lastTransitionTime: '2020-10-08T19:46:40Z'
233
+ lastUpdateTime: '2020-10-08T19:46:40Z'
234
+ message: Deployment has minimum availability.
235
+ reason: MinimumReplicasAvailable
236
+ status: 'True'
237
+ type: Available
238
+ observedGeneration: 6
239
+ readyReplicas: 1
240
+ replicas: 1
241
+ updatedReplicas: 1
242
+ - apiVersion: v1
243
+ kind: Service
244
+ metadata:
245
+ annotations:
246
+ kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"role":"web"},"name":"web","namespace":"garden"},"spec":{"ports":[{"port":80,"protocol":"TCP","targetPort":80}],"selector":{"role":"web"},"type":"ClusterIP"}}
247
+
248
+ '
249
+ creationTimestamp: '2020-10-07T19:04:13Z'
250
+ labels:
251
+ role: web
252
+ name: web
253
+ namespace: garden
254
+ resourceVersion: '486485'
255
+ selfLink: "/api/v1/namespaces/garden/services/web"
256
+ uid: 51eb23f5-d107-4554-b096-a4a081dfee5d
257
+ spec:
258
+ clusterIP: 10.12.10.177
259
+ ports:
260
+ - port: 80
261
+ protocol: TCP
262
+ targetPort: 80
263
+ selector:
264
+ role: web
265
+ sessionAffinity: None
266
+ type: ClusterIP
267
+ status:
268
+ loadBalancer: {}