helm v2.7.1๋ถํฐ, tiler๋ฅผ ์ ๋ฐ์ดํธํ ํ helm upgrade --install ํ๋๊ทธ๋ฅผ ์คํํ๋ฉด ๋ ์ด์ ์๋ํ์ง ์์ต๋๋ค. ๋ค์ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค. ์ค๋ฅ: ์ ๊ทธ๋ ์ด๋ ์คํจ: "${RELEASE}"์๋ ๋ฐฐํฌ๋ ๋ฆด๋ฆฌ์ค๊ฐ ์์ต๋๋ค. v2.7.0 ๋๋ v2.6.2๋ก ๋ค์ด๊ทธ๋ ์ด๋ํด๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ์๋ค๊ณ ์๊ฐํ์ง๋ง ๋ฐฉ๊ธ ์ค๋๋ ์ญ์ (์ ๊ฑฐ๋์ง๋ ์์), ๋ฆด๋ฆฌ์ค๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. helm list -a ๋ฅผ ํ์ธํ๊ณ ๋ฆด๋ฆฌ์ค๊ฐ ์๋ ๊ฒฝ์ฐ helm delete --purge releasename ์ ์คํํ์ญ์์ค. helm upgrade -i
๋ 2.7.2์์ ์ฑ๊ณต์ ์ผ๋ก ์๋ํฉ๋๋ค.
์ด๋ ์ํ๊ฐ ์ข์ง ์์ ๋ฆด๋ฆฌ์ค ์ ๊ทธ๋ ์ด๋์ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ์์ ํ๋ ๋ฐ ๋ฐ๋ฅธ ๋ถ์์ฉ์ ๋๋ค. https://github.com/kubernetes/helm/pull/3097 ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ PR์ด์์ต๋๋ค. ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ํฌ์ฐฉํ์ง ๋ชปํ ๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ๊ฐ ์์ต๋๊น?
@tcolgate๊ฐ ์ธ๊ธํ ๋๋ก helm list -a
๋ฅผ ํ์ธํ๊ณ , ์ด๋ฅผ ์ฌํํ๋ ๋ฐฉ๋ฒ๋ ์ค๋ช
ํ๋ฉด ํฌ์ฐฉ๋์ง ์์ ๊ฒฝ์ฐ์ธ์ง ๋ฒ๊ทธ์ธ์ง ํ๋ณํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์
๋๋ค.
๋ํ ์ค๋ณต ๋ฆด๋ฆฌ์ค ์ด๋ฆ๊ณผ ํจ๊ป ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
$>helm ls -a|grep ingress
nginx-ingress 9 Thu Nov 30 11:33:06 2017 FAILED nginx-ingress-0.8.2 kube-ingress
nginx-ingress 11 Thu Nov 30 11:37:58 2017 FAILED nginx-ingress-0.8.2 kube-ingress
nginx-ingress 12 Thu Nov 30 11:38:50 2017 FAILED nginx-ingress-0.8.2 kube-ingress
nginx-ingress 8 Thu Nov 30 11:31:27 2017 FAILED nginx-ingress-0.8.2 kube-ingress
nginx-ingress 10 Thu Nov 30 11:33:53 2017 FAILED nginx-ingress-0.8.2 kube-ingress
$>helm diff nginx-ingress ./nginx-ingress
Error: "nginx-ingress" has no deployed releases
์ ๊ทธ๋ ์ด๋ํ ๋ ์ด๋ค ๋ฉ์์ง๊ฐ ํ์๋์์ต๋๊น?
์์ diff์ ๋์ผํ ์ค๋ฅ์ด์ง๋ง ์ค์น์์๋ ์ด๋ฏธ ์ค์น๋์๋ค๊ณ ํ์๋ฉ๋๋ค.
FAILED ์ํ๋ก ๋๋ ์ด์ ์ ๊ทธ๋ ์ด๋ ์๋๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ชจ๋ ๋ฆด๋ฆฌ์ค๊ฐ ์คํจํ ์ํ์ ์๋ ์ํฉ์ ์ด๋ป๊ฒ ๋ค์ด๊ฐ๋์ง ์๊ณ ์ถ์ต๋๋ค.
์ค, ์ค๋ณต ๋ฆด๋ฆฌ์ค ์ด๋ฆ ๋ฐฐํฌ? ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๊ฝค ์์ฃผ ๋ฐ์ต๋๋ค. ๋๋ก๋ ๋ชจ๋ DEPLOYED ์ํ์ด๊ณ ๋๋ก๋ FAILED์ DEPLOYED๊ฐ ํผํฉ๋์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ชจ๋ PR ๋ณํฉ์ ์ง์์ ์ผ๋ก ์
๋ฐ์ดํธํ๋ CI/CD Jenkins ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ํ๋ฃจ์ ์ฌ๋ฌ ๋ฒ helm upgrade
์์
์ ์ํํ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์ ์ปจํ
์ด๋ ํ๊ทธ๋ง ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ณต์ ๋ ๋ฐฐํฌ๋ ํญ๋ชฉ์ ๋ณผ ๋ ์ฑ๊ฐ์ ์ผ์
๋๋ค. ์ด๊ฒ์ ์ฒ์์ผ๋ก ์ด๋ ค์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ผ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์ด ๊ฒฝ์ฐ์ฒ๋ผ ์ธ๊ทธ๋ ์ค ์ปจํธ๋กค๋ฌ๋ฅผ ์
๊ทธ๋ ์ด๋ํ์ง ์์ต๋๋ค.
๋น์ทํ ๊ฒฐ๊ณผ๊ฐ ๋์จ ๊ฒ ๊ฐ์ต๋๋ค. ๋ด ๋ฆด๋ฆฌ์ค ๋ชฉ๋ก์ ๋ช ๊ฐ์ง ์ค๋ณต ํญ๋ชฉ์ด ์์ต๋๋ค.
$ helm ls
NAME REVISION UPDATED STATUS CHART NAMESPACE
.....
front-prod 180 Tue Dec 5 17:28:22 2017 DEPLOYED front-1 prod
front-prod 90 Wed Sep 13 14:36:06 2017 DEPLOYED front-1 prod
...
๊ทธ๋ค ๋ชจ๋๋ DEPLOYED ์ํ์ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง, ๋ด๊ฐ ๊ทธ ๋ฒ๊ทธ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ณค๊ธฐ ๋๋ฌธ์ ์ด์ ์ ๊ทธ๋ ์ด๋๊ฐ ์ด๋ ์์ ์์ ์คํจํ์ ์๋ ์์ต๋๋ค. ๋๋ ์ฌ์ ํ K8S 1.7์ ์ฌ์ฉ ์ค์ด๋ฏ๋ก ์์ง helm 2.7๋ก ์ ๋ฐ์ดํธํ์ง ์์์ต๋๋ค.
๋์ผํ ๋ฌธ์ , FAILED ๋ฐฐํฌ๋ฅผ ํตํด ์ ๊ทธ๋ ์ด๋ํ ์ ์์
2.7.2๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๊ธฐ์์๋ ๋์ผํฉ๋๋ค. ๋ฆด๋ฆฌ์ค์ ์ฒซ ๋ฒ์งธ ์๋๊ฐ ์คํจํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ ๊ทธ๋ ์ด๋ --install์ ์๋ํ์ ๋ "์ค๋ฅ: UPGRADE FAILED: "${RELEASE}"์ ๋ฐฐํฌ๋ ๋ฆด๋ฆฌ์ค๊ฐ ์์ต๋๋ค"๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
2.7.2์ ๋์ผํ ๋ฌธ์ , helm upgrade --install
์คํจ:
Error: UPGRADE FAILED: "APPNAME" has no deployed releases
๋ฆด๋ฆฌ์ค๊ฐ helm del --purge APPNAME
๋ก ์์ ํ ์ ๊ฑฐ๋๋ฉด ํ์ upgrade --install
๊ฐ ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค.
๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํ ์ผ๋ถ ์คํฌ๋ฆฝํ ์์ด ์๋ํ๋ ๋ฉฑ๋ฑ ๋ฐฐํฌ์ ๋ํ ์ต์ ์ ๋จ๊ธฐ์ง ์๋ #3134 ์ ๊ฒฐํฉ๋ฉ๋๋ค.
@winjer ๋ --purge๋ก ์ญ์ ๋ฅผ ์๋ํ๊ณ ์ค๋ฅ๊ฐ ๋ณ๊ฒฝ๋์์ง๋ง ์๋ํ์ง ์์์ต๋๋ค.
/ # ํค ์
๊ทธ๋ ์ด๋ foo /charts/foo/ -i --wait
์ค๋ฅ: ์
๊ทธ๋ ์ด๋ ์คํจ: "foo"์ ๋ฐฐํฌ๋ ๋ฆด๋ฆฌ์ค๊ฐ ์์ต๋๋ค.
/ # helm delete --purge foo
๋ฆด๋ฆฌ์ค "foo"๊ฐ ์ญ์ ๋จ
/ # ํค ์
๊ทธ๋ ์ด๋ foo /charts/foo/ -i --wait
๋ฆด๋ฆฌ์ค "foo"๊ฐ ์กด์ฌํ์ง ์์ต๋๋ค. ์ง๊ธ ์ค์น ์ค์
๋๋ค.
์ค๋ฅ: foo ๋ฆด๋ฆฌ์ค ์คํจ: deployment.extensions "foo-foo-some-service-name"์ด ์ด๋ฏธ ์กด์ฌํฉ๋๋ค.
@prein helm์ ์ํด "์์ ์"๊ฐ ์๋์ง๋ง ํด๋ฌ์คํฐ์ ์ด๋ฏธ ์กด์ฌํ๋ ์๋น์ค๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋น์ ์ด ๊ฒช๊ณ ์๋ ํ๋์ด ๋์๊ฒ ๋ง๋ ๊ฒ ๊ฐ์ต๋๋ค. helm์ ์ด์ ์ ์์ ํ์ง ์์ API ๊ฐ์ฒด์ "์์ ๊ถ์ ๊ฐ์ ธ"์ผ ํ๋ฏ๋ก ๋ฐฐํฌ์ ์ฑ๊ณตํ ์ ์์ต๋๋ค.
์ ๋งค๋ํ์คํธ๊ฐ ์ค์ ๋ก ์ ํํ๊ณ ํด๋ฌ์คํฐ์ ๋ค๋ฅธ ๋ฆฌ์์ค์ ๋ง์กฑํ์ง ์๋ ๊ฒฝ์ฐ FAILED ๋ฆด๋ฆฌ์ค๋ฅผ ์ ๊ทธ๋ ์ด๋ํ ์ ์๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค.
content
๋ผ๋ ๋ฆด๋ฆฌ์ค์์๋ ์ด ๋์์ ๋ณด๊ณ ์์ต๋๋ค.
helm upgrade --install --wait --timeout 300 -f ./helm/env/staging.yaml --set image.tag=xxx --namespace=content content ./helm/content
Error: UPGRADE FAILED: no resource with the name "content-content" found
helm list | grep content
content 60 Mon Dec 25 06:02:38 2017 DEPLOYED content-0.1.0 content
content 12 Tue Oct 10 00:02:24 2017 DEPLOYED content-0.1.0 content
content 37 Tue Dec 12 00:42:42 2017 DEPLOYED content-0.1.0 content
content 4 Sun Oct 8 05:58:44 2017 DEPLOYED k8s-0.1.0 content
content 1 Sat Oct 7 22:29:24 2017 DEPLOYED k8s-0.1.0 content
content 61 Mon Jan 1 06:39:21 2018 FAILED content-0.1.0 content
content 62 Mon Jan 1 06:50:41 2018 FAILED content-0.1.0 content
content 63 Tue Jan 2 17:05:22 2018 FAILED content-0.1.0 content
๊ณ์ ๋ฐฐํฌํ๋ ค๋ฉด ์ด ํญ๋ชฉ์ ์ญ์ ํด์ผ ํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น
ํ๋ ๋ฐ ๋์์ด ๋ ์ ์๋ ์์
์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์.
(์ค๋ณต์ ๊ดํ ๋ฌธ์ ์ด๋ฏ๋ก ๋ฌธ์ ์ ์ด๋ฆ์ ๋ฐ๊ฟ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.)
( 2.7.2
๋ ์คํํฉ๋๋ค)
์ค์ ๋ก ๋ด ํด๋ฌ์คํฐ์ ๋ ๋ค๋ฅธ ์ค๋ณต ๋ฆด๋ฆฌ์ค๊ฐ ์์ต๋๋ค. ๋๋ฒ๊ทธ๋ฅผ ๋๊ธฐ ์ํด ์คํํ ๋ช ๋ น์ด ์๋ค๋ฉด? ์๋ ค ์ค์!
๋ฐฉ๊ธ ํธ๋ฌ 2.7.2๋ก ์
๊ทธ๋ ์ด๋ํ๋๋ฐ ๊ฐ์ ํ์์ด ๋ํ๋ฉ๋๋ค. helm delete RELEASE_NAME
๋ค์์ helm upgrade RELEASE_NAME .
๊ฐ Error: UPGRADE FAILED: "RELEASE_NAME" has no deployed releases
์ ํจ๊ป ์คํจํฉ๋๋ค. upgrade
๋ ์ญ์ ๋(ํ์ง๋ง ์ ๊ฑฐ๋์ง ์์) ๋ฆด๋ฆฌ์ค๋ฅผ ๋ณต์ํ๊ธฐ ์ํ ์๋๋ ๋ฐฉ๋ฒ์
๋๋ค. ๋ง์ต๋๊น?
์ญ์ ๋ ๋ฒ์ ์ผ๋ก ๋กค๋ฐฑํ์ฌ ๋ฆด๋ฆฌ์ค๋ฅผ ๋ณต์ํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
v2.7.2
์์ ๋์ผํ ๋ฌธ์ ๊ฐ ํ์๋๋ฉด ์ด์ ์ ์ฑ๊ณต์ ์ผ๋ก ๋ฐฐํฌ๋ ๋ฆด๋ฆฌ์ค๊ฐ ์์ผ๋ฉด ์คํจํฉ๋๋ค.
+ helm upgrade --install --wait api-feature-persistent-data . --values -
+ cat
WARNING: Namespace doesn't match with previous. Release will be deployed to default
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
Error: UPGRADE FAILED: "api-feature-persistent-data" has no deployed releases
(๋ด OSX bash์ gcloud/kubectl ์ปจํ ์ด๋ ๋ชจ๋์์)
+ helm upgrade --install --wait api-feature-persistent-data . --values -
+ cat
WARNING: Namespace doesn't match with previous. Release will be deployed to default
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
2018/01/25 00:19:07 warning: destination for annotations is a table. Ignoring non-table value <nil>
Error: UPGRADE FAILED: no PersistentVolumeClaim with the name "api-feature-persistent-data-db" found
๊ฒฝ๊ณ ๋ ์ฐจํธ์ ๋ํด ์ ์์
๋๋ค.
์ค๋ฅ๊ฐ ํฅ๋ฏธ๋ก์ด ์ด์ ๋ ํ์ ์ฐจํธ ์ค ํ๋์ pvc.yaml
๊ฐ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
helm del --purge <release>
๋ ๋ฌธ์ ๋ฅผ ์ํํฉ๋๋ค.
์ด๊ฒ์ CI ํ์ดํ๋ผ์ธ์ ์
๊ทธ๋ ์ด๋ํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค.
@adamreese ์ด ๋ฌธ์ ์ ์ต์ข
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น? ์ฐ๋ฆฌ๋ 2.8์ ์ฌ์ฉ ์ค์ด๋ฉฐ helm list
๋ณ๊ฒฝ์ผ๋ก ์ด์ FAILED
๋ฆด๋ฆฌ์ค๋ฅผ ์
๊ทธ๋ ์ด๋ํ ์ ์์ต๋๋ค.
ํนํ ๋ค์๊ณผ ๊ฐ์ ์ ํ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
upgrade --install --wait
, ํ์ง๋ง ์์ ๋ฒ๊ทธ๊ฐ ์๊ณ --wait
๊ฐ ์ฑ๊ณตํ์ง ๋ชปํ ์ ์์ต๋๋ค(์: ํ์ฑ๋ ํ๋ก๋ธ๊ฐ ํด๊ฒฐํ์ง ๋ชปํจ).upgrade --install --wait
xxx has no deployed releases
์คํจ์ฌ๊ธฐ์ ์ญ์ /์ ๊ฑฐ๋ ๋ฐ๋์งํ์ง ์๊ฑฐ๋ ํ์ฉ๋์ง ์์ต๋๋ค. ๋ฆด๋ฆฌ์ค์๋ ์ฌ๋ผ๊ฐ์ง ์์ ํ ๋ฆฌ์์ค์ ์ํฅ์ ๋ฐ์ง ์๋ ์ฌ๋ฌ ๋ฆฌ์์ค(ํฌ๋, ๋ก๋ ๋ฐธ๋ฐ์)๊ฐ ์์ ์ ์์ต๋๋ค. ์ด์ Helm ๋ฒ์ ์์๋ upgrade --install
๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์ ๊ฑฐํ ํ์ ์์ด ์ ์ฒด ๋ฆด๋ฆฌ์ค๋ฅผ ์ค๋จ์ํจ ๋ณ๊ฒฝ ์ฌํญ๋ง ํจ์นํ ์ ์์์ต๋๋ค.
Helm์ ์ฌ๊ธฐ์์ ํญ์ ๊ด๋ จ๋ ๋ชจ๋ ๋ฆฌ์์ค์ ์์ ์์
๋๋ค. --wait
๊ฐ ๋ชจ๋ ๋ฆฌ์์ค๊ฐ ์ํธํ ์ํ๊ฐ ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋ฆฌ์์ค๋ FAILED
๋ก๋ง ํ์๋ฉ๋๋ค. ํฌ๋๊ฐ ์์ํ๊ธฐ์ ๋๋ฌด ๋๋ฆฌ๊ฑฐ๋ ๋ง์ ์ ์ฌํ ๊ฒฝ์ฐ์ ๋์ผํ ์ผ์ด ๋ฐ์ํ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
@peay ๋ ํ์ ๋ ผ์๋ฅผ ์ํด #3353์ ์ฐธ์กฐํ์ญ์์ค.
๋๋ถ์ ํด๊ฒฐ๋์์ต๋๋ค. ์ฌ์ค ์ฒ์๋ถํฐ ์ฑ๊ณต์ ์ธ ์ถ์๊ฐ ์์์ ๋๋ง ์ฑ๊ณตํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ ๊ฑฐ๊ฐ ์ข์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค.
์ด๊ฒ์ ์ค์น์ ์คํจํ ๊ฒฝ์ฐ์๋ ๊ณ์ ๋ฐ์ํฉ๋๋ค.
์ญ์ ํ๊ณ ๋ค์ ์๋ํด์ผ ํฉ๋๋ค.
UPGRADE FAILED: "API" has no deployed releases
๊ทธ๋ฐ ๋ค์ ์๋์ผ๋ก ์ ๊ฑฐํด์ผ ํฉ๋๋ค.
helm delete --purge API
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์๋ํฉ๋๋ค.
helm 2.9๋ถํฐ๋ helm upgrade --install --force
๋ ์ํํ ์ ์์ผ๋ฏ๋ก ์ ๊ฑฐํ ํ์๊ฐ ์์ต๋๋ค. ์ด์ ๋ฆด๋ฆฌ์ค์ ๊ฒฝ์ฐ:
helm delete API
helm install --replace --name API ./mychart
@bacongobbler ์ด ๋์์ ๋ํด ์ฌ์ ํ ํผ๋์ค๋ฝ์ต๋๋ค.
์๊ฐ ๋์ค ๋ https://github.com/kubernetes/helm/pull/3597#issuecomment -382843932์ ๋ต๋ณํด ์ฃผ์๊ฒ ์ต๋๊น?
์์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
ํ์ ํ๋. ์ ๋ ํ์ฌ AFK์ด์ง๋ง ์ค๋ ์ ๋ ๋ฆ๊ฒ ๋ต๋ณํ ์ ์์ต๋๋ค. ํผ๋์ ์ถฉ๋ถํ ์ดํดํ๊ณ ๊ฐ๋ฅํ ํ ์ต์ ์ ๋คํด ๊ทํ์ ์ง๋ฌธ์ ๋ต๋ณํ๊ฒ ์ต๋๋ค. KubeCon EU๋ฅผ ์ํด ๋ค๋ฅธ ๊ฒ๋ค์ ์ค๋นํ๋ ์ฌ๋ฌด์ค์์ ์ ์ ์ด ์์ต๋๋ค. :)
์ด ๋ฌธ์ ๋ฅผ ํดํนํ๊ฑฐ๋ ๋ฌธ์๋ฅผ ๊ฐ์ ํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
๊ผญ ๋ง๋์ :+1:
@bacongobbler ๋ ์ด ์ฃผ์๋ฅผ #3353์ผ๋ก ์ง์ ํ๊ณ #4004์ ์ผ๋ถ๋ก ์์ฑํ ์ฝ๋๋ฅผ ๋ฌดํจํํฉ๋๊น?
์ ๊ฒฝ์ฐ์๋ helm upgrade --install --force
๊ฐ delete --purge
๋ฅผ ์คํํ ํ ์ค์นํ์ต๋๋ค.
์ด๊ฒ์ด ์์๋ ํ๋์
๋๊น? ์ด๊ฒ ๋๋ฌธ์ ๊ฑฐ์ 2๋ฌ์ ์ผ์ ์์์ต๋๋ค. ๋ ์์๋ค force
์๋ฏธ๋ก ์์ delete
?
^ kubecon์ ์ฌ๋๋ค๊ณผ ๋ช ๊ฐ์ง ๋ํ๋ฅผ ๋๋์๊ณ ์ด ๋์ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ๊ฝค ๋ง์ ํ์ด v2.7.0์ ๊ณ ์ ๋์ด ์์์ ๋ฐ๊ฒฌํ์ต๋๋ค.
upgrade install
๋ --force
๊ฐ ์๋ฏธํ๋ ๋ฐ๊ฐ ๋ฌด์์ด๋ ๊ฐ์ ์ ๋ ํ๊ดด์ ์ด์ด์๋ ์ ๋๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.
@bacongobbler๋ , CPH์ ์์ ๋ ๋ง๋์ง ๋ชปํด์ ์ฃ์กํฉ๋๋ค.
์คํจํ ๋ฆด๋ฆฌ์ค๋ฅผ ์
๊ทธ๋ ์ด๋ํ ์ ์๋๋ก ๋์์ ๋ณ๊ฒฝํ๋ ๊ทผ๊ฑฐ์ ๋ํ ๋ฌธ์๊ฐ ์์ต๋๊น?
์์ ํ๋์ด ์ง๊ธ๋ณด๋ค ํจ์ฌ ๋ ๋ฐ๋์งํ ๊ฒ ๊ฐ์ต๋๋ค.
๋ณ๊ฒฝํด์ผ ํ๋ ์ด์ ์ ๋ํ ๋ฐฐ๊ฒฝ ์ปจํ ์คํธ๋ https://github.com/kubernetes/helm/issues/3353 ์ ๋ ๋ฒ์งธ ์๊ฒฌ์
์์ผ๋ก์ ์ ์ ๊ฒฝ๋ก๊ฐ ๋ฌด์์ธ์ง ์ ๋ง ๊ถ๊ธํฉ๋๋ค. #3353์์ ์ค๋ช
ํ ๋ฌธ์ ๋ก ์ธํด #3097์ ์ทจ์ํ ์ ์์ผ๋ฏ๋ก ์ปค๋ฎค๋ํฐ์์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ฌ๋ฐ๋ฅธ ๊ฒฝ๋ก๊ฐ ๋ฌด์์ด๋ผ๊ณ ์๊ฐํ๋์ง ๋ฃ๊ณ ์ถ์ต๋๋ค. ์ฐ๋ฆฌ๋ #3597์ ์ฒ ํํ ์ ์์ง๋ง helm upgrade --install
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ข์ ํด๊ฒฐ์ฑ
์ด ์๋ค๊ณ ๋ค์์ต๋๋ค. :์ค๋งํ:
์ฐ๋ฆฌ๊ฐ Helm 3์ ๋ํ ์ ์ฉ ๋ก์ง์ ์ฌ์์ ํ๋ ์ค์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์ด๋ ์์ง ๊ฐ ๊ธธ์ด ๋ฉ๋๋ค.
@bacongobbler ๋ฅผ ์ฐ๊ฒฐํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค :)
๊ทํ์ ์ ์์ ํฉ๋ฆฌ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
์ฑ๊ณต์ ์ธ ๋ฆด๋ฆฌ์ค๊ฐ ๋ฐฐํฌ๋์ง ์์ ๊ฒฝ์ฐ diff๋ฅผ ์ํํ์ง ์๋ ๊ฒ์ด ์ค์ํ ์ ์์ต๋๋ค. ๋น๊ตํ "ํ์ฌ" ๋ฆด๋ฆฌ์ค๊ฐ ์๋ค๋ ์ ์์ ์ฌ์ฉ์๊ฐ ์ฒ์์ผ๋ก helm install์ ์คํํ ๊ฒ๊ณผ ๊ฐ์ ๊ฒฝํ์ด ๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง ํน์ ์ฃ์ง ์ผ์ด์ค์ ๋ํด์๋ ์ฝ๊ฐ ๊ฑฑ์ ์ด ๋ฉ๋๋ค. @adamreese ์ด๊ฒ์ ๋ํด ์ด๋ค ์๊ฒฌ์ด ์์ต๋๊น?
์ด๋ ๊ฒ ํ๋ฉด ์ ์ผํ ์คํจ ์ฌ๋ก(๋น๊ตํ ์ฌํญ ์์)๊ฐ ์ฒ๋ฆฌ๋๋ฏ๋ก #3597์ ์ทจ์ํ ์ ์์ต๋๋ค.
์ด๊ฒ์ upgrade --install
๋ค์ ๋นํ๊ดด์ ์ผ๋ก ๋ง๋ค๊ณ kubectl apply
์ ๋ ์ ์ฌํ๊ฒ ๋ง๋ญ๋๋ค.
์ง๊ด์ ์ผ๋ก ์ด๊ฒ์ด ๋ด๊ฐ upgrade --force
๋ฅผ ์ํํ ๊ฒ์ผ๋ก ๊ธฐ๋ํ๋ ๊ฒ์
๋๋ค. diff-and-patch ์์
์ ์ํํ์ง ์๊ณ ํ์ฌ ์๋ ๊ฒ์ ๋ฌด์ํ๊ณ ์์ ํ ํ
ํ๋ฆฟ์ ์ ์ฉํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์ด๊ฒ์ด ๊ฐ๋ฅํ์ง ์์ ๊ธฐ์ ์ ์ด์ ๋ฅผ ์๊ฐํ ์๋ ์์ง๋ง Helm์ ๋ด๋ถ ์๋ ๋ฐฉ์์ ๋ํด์๋ ์ ๋ชจ๋ฆ
๋๋ค.
์ฌ์ ํ ์ํํ ์์
์ผ ์ ์์ง๋ง --force
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋์ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ ์
๋ฐ์ดํธ๋ฅผ ํตํด ํน์ ์ํ์ ์์ํฉ๋๋ค. ๋๋ ์ด๊ฒ์ด ์ ์ฌ์ ๊ฐ๋ ์ค์ง ์๊ฐ๊ณผ ํจ๊ป ๋ฐฐํฌ๋ฅผ ์ญ์ ํ๊ณ ๋ค์ ๋ง๋ค ๊ฒ์ผ๋ก ๊ธฐ๋ํ์ง ์๋๋ค๊ณ ์ฃผ์ฅํฉ๋๋ค.
ํ ๋ก ์ ์ฝ์์ง๋ง ์ฌ์ ํ ๋ฉฑ๋ฑ์ upgrade --install
๋ช
๋ น(๋๋ ๋ช
๋ น ์ํ์ค)์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ๋ช
ํํ์ง ์์ต๋๋ค.
ํ์ฌ ์์ ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ์๋ํ๋ ์คํฌ๋ฆฝํธ์์ ์ด๋ฅผ ์ด๋ป๊ฒ ๋ฌ์ฑํ ์ ์์ต๋๊น? ์ด์ ์๋๊ฐ ์คํจํ๋๋ผ๋ delete --purge
๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋น๋ํ์์ผ๋ก ๋ฐฐํฌํ ์ ์์ด์ผ ํฉ๋๋ค.
ํฅํ ๊ณํ์ ๊ดํด์๋ ์๋ upgrade --install
์์ ์์ํ๋ ๋์์
๋๋ค.
delete --purge
์์์ ์ธ๊ธํ ์๋ ๋ด ๊ฐ์ธ์ ์ธ ์๊ฒฌ์ผ๋ก๋ ์ด ๋์์ ๋ํด ์ถ๊ฐ ํ๋๊ทธ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์ด๊ฒ์ด ํจํค์ง ๊ด๋ฆฌ์๊ฐ ์ผ๋ฐ์ ์ผ๋ก ํ๋ํ๋ ๋ฐฉ์์
๋๋ค. ์๊ตฌ ์ฌํญ์ ์๋ชป ์ดํดํ์ง ์๋ ํ ์๋ฅผ ๋ค์ด --force
ํ๋๊ทธ๊ฐ ํ์ํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์์ต๋๊น? ์คํจํ ๊ฒฝ์ฐ ์ ๊ฑฐ๋ฅผ ์คํํ์ง ์๊ณ ๊ธฐ์กด ์ค์น์์ ์ ๊ทธ๋ ์ด๋๋ฅผ ์์ ์ ์ผ๋ก ์คํํ๋ ์ ์ ํ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
@MythicManiac FWIW:
์ด ๋์ ๋๋ฌธ์ ์ฐ๋ฆฌ ํ์ ์ฌ์ ํ โโv2.7.0์ ๊ณ ์ ๋์ด ์์ต๋๋ค.
์ด ๋ฒ์ ์์ helm upgrade --install
๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ฆฌ์์ค ์
๊ทธ๋ ์ด๋ ๋ฐ ์ญ์ ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ฐ๋ฆฌ์๊ฒ๋ ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. helm has no deployed releases
๋๋ฌธ์ K8s ์๋น์ค ๋ฐ ๊ด๋ จ AWS ELB๋ฅผ ์ญ์ ํด์ผ ํ๋ ๊ฒ์ ๋งค์ฐ ์ฑ๊ฐ์ ์ผ์
๋๋ค. ํจํค์ง ๊ด๋ฆฌ์๋ ํ๋ฅญํ์ง๋ง ์ด ๋ฌธ์ ๋ ์ข์ง ์์ ํ๋ก๋์
๋ค์ดํ์์ผ๋ก ์ด์ด์ง๋๋ค.
๋งค์ฐ ํดํน๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ์๋ณธ ๋ฐฐํฌ์ ๋ฌธ์ ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ
ํด๊ฒฐ ๊ฐ๋ฅ(์: ๊ธฐ์กด ์๋น์ค), ์๋ณธ์ผ๋ก ๋กค๋ฐฑ ์ํ
์คํจํ ๋ฆด๋ฆฌ์ค๊ฐ ์๋ํ ์ ์์ต๋๋ค.
2018๋ 10์ 5์ผ ๊ธ์์ผ 18:13 Eugene Glotov, ์๋ฆผ @github.com ์์ฑ:
์ฐ๋ฆฌ์๊ฒ๋ ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. K8์ ์ญ์ ํด์ผ ํ๋ ๊ฒ์ ๋งค์ฐ ์ฑ๊ฐ์๋ค.
helm์ ๋ฐฐํฌ๋ ๋ฆด๋ฆฌ์ค๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋น์ค ๋ฐ ๊ด๋ จ AWS ELB. ๊ทธ๋งํผ
ํจํค์ง ๊ด๋ฆฌ์๋ ํ๋ฅญํ์ง๋ง ์ด ๋ฌธ์ ๋ก ์ธํด ์์ฐ ์ค๋จ ์๊ฐ์ด ๋ฐ์ํ์ฌ
์ข์ง ์๋ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/helm/helm/issues/3208#issuecomment-427436187 ๋๋ ์์๊ฑฐ
์ค๋ ๋
https://github.com/notifications/unsubscribe-auth/AAEo8_pISzHFAuOz6Lsv5EjrFaEo_HkYks5uh5M7gaJpZM4Qtexz
.
@tcolgate๋ , ๊ฐ์ฌํฉ๋๋ค! ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ๋ค๋ฅธ ๋ฌธ์ (https://github.com/helm/helm/issues/2426#issuecomment-427388715)๋ฅผ ์์ ํ์ผ๋ฉฐ ๋ค์ ์ฃผ์ ๊ธฐ์กด ๋ฆฌ์์ค์ ์ ์ฐจํธ๋ฅผ ๋ฐฐํฌํ ๋ ๊ธฐ์กด ELB์ ๋ํด ํ ์คํธํ๋ ค๊ณ ํฉ๋๋ค. .
์๋ ์คํจํ ๋ฆด๋ฆฌ์ค๋ก ๋กค๋ฐฑํ๋ฉด ์๋ํ ์ ์์ต๋๋ค.
@tcolgate , ๋ฐฉ๊ธ ํ ์คํธ
$ helm upgrade --wait --timeout 900 --install myproject charts/myproject/myproject-1.1.1.tgz
14:53:18 Release "myproject" does not exist. Installing it now.
14:53:18 Error: release myproject failed: deployments.apps "myproject" already exists
$ helm list
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
myproject 1 Mon Oct 8 11:53:18 2018 FAILED myproject-1.1.1 default
$ helm rollback myproject 1
Error: "myproject" has no deployed releases
Helm์ด ๊ธฐ์กด ๋ฆฌ์์ค์ ์ฐจํธ๋ฅผ ๋ฐฐํฌํ ์ ์๋ ๊ฒฝ์ฐ helm delete
์ธํด ์ด๋ฌํ ๋ฆฌ์์ค๊ฐ ์ ํํ ์ญ์ ๋๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
thomastaylor312 @, ์ฐ๋ฆฌ๋์ด ๋ฌธ์ ~๋ฟ๋ง ์๋๋ผ ์ง๋ฉด https://github.com/helm/helm/issues/2426~๋ฅผ (์ต๋ : ๋๋ 2426์ ๋ํ ์ค์ ๊ทผ๋ณธ ์์ธ์ ์ฐพ์ ์ ์์) ํฌ๊ตฌ 2.11.0์ ํจ๊ป. ๊ทธ๋ค์ด ๋ค์ ์ด๋ ค์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๊น?
Error: UPGRADE FAILED: "xxx-service" has no deployed releases
ํ์ ์ด ์ค๋ ๋๋ฅผ ์ฐพ์์ต๋๋ค.
๊ทธ๊ฒ์ ์กฐํ ์ฅ์น์์ ๋ณผ ์ ์์์ง๋ง ls -a.
์๋ชป๋ --set ๊ฐ์ผ๋ก ์ธํด ๋ฌธ์ ์ธ์ง ํ์ธํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ณ --debug --dry-run --force ์ค์ ๋ก ์ฌ์ ํ ์คํ ์ค์ธ ํฌ๋๋ฅผ ์ญ์ ํ์ต๋๋ค ... ๋ด ์์์ ํ ์คํธ ์คํ ์์ ์ด ์ ๋ ์์ ๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ํด๋ฌ์คํฐ ๋ฆฌ์์ค.
๊ทธ๋๋ ์๋ํ๊ณ ๋์ค์ ์๋น์ค๋ฅผ ๋ค์ ๋ฐฐํฌํ ์ ์์์ง๋ง ๊ฐ๋ ์ค์ง ์๊ฐ์ด ๋ฐ์ํ์ต๋๋ค.
๋ด ์์์ ํ ์คํธ ์คํ ์์ ์ด ํด๋ฌ์คํฐ ๋ฆฌ์์ค๋ฅผ ์์ ํ์ง ์์ ๊ฒ์ด๋ผ๋ ๊ฒ์ด์์ต๋๋ค.
์ด๊ฒ์ ๊ณต์ ํ ๊ธฐ๋์ ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๋ฐ ์ผ์ด... ์ผ์ด๋์ง ์๋๋ก ํด์ผ ํฉ๋๋ค.
https://github.com/helm/helm/pull/4402 ์์ ํจ์น๋์๋ค๊ณ ์๊ฐํ์ง๋ง ๋๊ตฐ๊ฐ ํ์ธํ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ๋ฏธ์ํฉ๋๋ค!
2.11.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ ํ์๋ ๋์ผํ ๋ฌธ์
ํฌ๋ก์ค ํฌ์คํธ:
https://github.com/reactiveops/reckoner/issues/48#issuecomment -453411283
์ด๊ฒ ์ ๋ซํ์๋์? ์ง๊ธ ์ด๊ฒ์ ์ฒ๋ฆฌํ ์ ์ ํ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
@gerbsen , ๋นํ๊ดด์ ์ธ Helm์ ํ์ฌ ๋ฒ์ ์์๋ ์ด ๋ฌธ์ ๋ฅผ
์ฐ๋ฆฌ๋ ์ฌ์ ํ ๋ด ์กฐ์ง์ ๋ชจ๋ ๊ฒ์ Helm 2.7.0์ ์ฌ์ฉํฉ๋๋ค. ๋ค๋ฅธ ๋ฒ๊ทธ๊ฐ ์๋ ์์ฃผ ์ค๋๋ ๋ฒ์ ์ด์ง๋ง ์ด ๋ฌธ์ ๋ ์์ต๋๋ค.
๋ฐฉ๊ธ helm upgrade --install --force
๊ฐ delete --purge
ํ๊ณ ๋์๊ฒ ์๋ฆฌ์ง ์๊ณ ๋ด pvc/pv๋ฅผ ํ๊ดดํ๋๋ก ํ์ต๋๋ค(์ฌํ์ฉ์ ๋ํด). ๋ฆด๋ฆฌ์ค๊ฐ ์ฌ๋ฌ ๋ฒ ์คํจํ์ฌ kubernetes์์ ์คํ ์ค์ธ ์ํ์์ง๋ง helm์ ์คํ ์ค์ธ ๋ฆด๋ฆฌ์ค๊ฐ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. ์ ํ ์ข์ง ์์ ์๊ฐ.
@notque ๋ชจ๋ grafana ๋์๋ณด๋๋ฅผ ๋ ๋ฒ ์์ ํ ๋ชจ๋ ์ข ๋ฅ์ ์ ๊ทธ๋ ์ด๋๋ฅผ ์ํํ๊ธฐ ์ ์ ๋ฐฑ์ ์ ์์ํ์ต๋๋ค. ์ด๋ฌํ ์ข ๋ฅ์ ์ํ์ด ์์ผ๋ฉด helm ์ฌ์ฉ์ ๋ชจ๋ ์ด์ ์ด ์ ๊ฑฐ๋ฉ๋๋ค.
๋์์ ๊ตฌํ๋ ์ฌ๋๋ค์ ์ํด helm์ v.2.15.2๋ก ์ ๊ทธ๋ ์ด๋ํ ํ ๋ฌธ์ ๊ฐ ์ฌ๋ผ์ก์ต๋๋ค.
2.16.0
์์ ์ด ๋ฌธ์ ๊ฐ ๊ณ์ ํ์๋ฉ๋๋ค.
์ ์ฌ์ ํ ๋ซํ ์์ต๋๊น? 2.16.1์ ์ฌ์ ํ โโ์ํฅ์๋ฐ์ต๋๋ค.
@nick4fake https://github.com/helm/helm/issues/5595 ์ ๋ณต์ ๋ณธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ์๋ค๊ณ ์๊ฐํ์ง๋ง ๋ฐฉ๊ธ ์ค๋๋ ์ญ์ (์ ๊ฑฐ๋์ง๋ ์์), ๋ฆด๋ฆฌ์ค๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. helm list -a ๋ฅผ ํ์ธํ๊ณ ๋ฆด๋ฆฌ์ค๊ฐ ์๋ ๊ฒฝ์ฐ helm delete --purge releasename ์ ์คํํ์ญ์์ค.
helm upgrade -i
๋ 2.7.2์์ ์ฑ๊ณต์ ์ผ๋ก ์๋ํฉ๋๋ค.