ํ•ด๋‹น ๋ฌธ์„œ์˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฒ„์ „: v1.31

Kubernetes v1.31 ๋ฌธ์„œ๋Š” ๋” ์ด์ƒ ์ ๊ทน์ ์œผ๋กœ ๊ด€๋ฆฌ๋˜์ง€ ์•Š์Œ. ํ˜„์žฌ ๋ณด๊ณ ์žˆ๋Š” ๋ฌธ์„œ๋Š” ์ •์  ์Šค๋ƒ…์ƒท์ž„. ์ตœ์‹  ๋ฌธ์„œ๋ฅผ ์œ„ํ•ด์„œ๋Š”, ๋‹ค์Œ์„ ์ฐธ๊ณ . ์ตœ์‹  ๋ฒ„์ „.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์˜ค๋ธŒ์ ํŠธ๋“ค์˜ ์ƒํƒœ๋ฅผ ์ฟผ๋ฆฌํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์˜ ํ•ต์‹ฌ์€ API ์„œ๋ฒ„์™€ ๊ทธ๊ฒƒ์ด ๋…ธ์ถœํ•˜๋Š” HTTP API์ด๋‹ค. ์‚ฌ์šฉ์ž์™€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„ ๋ฐ ๋ชจ๋“  ์™ธ๋ถ€ ์ปดํฌ๋„ŒํŠธ๋Š” API ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์„œ๋กœ ํ†ต์‹ ํ•œ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์˜ ํ•ต์‹ฌ์€ API ์„œ๋ฒ„์ด๋‹ค. API ์„œ๋ฒ„๋Š” ์ตœ์ข… ์‚ฌ์šฉ์ž, ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„ ๊ทธ๋ฆฌ๊ณ  ์™ธ๋ถ€ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก HTTP API๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ API ์˜ค๋ธŒ์ ํŠธ(์˜ˆ: ํŒŒ๋“œ(Pod), ๋„ค์ž„์ŠคํŽ˜์ด์Šค(Namespace), ์ปจํ”ผ๊ทธ๋งต(ConfigMap) ๊ทธ๋ฆฌ๊ณ  ์ด๋ฒคํŠธ(Event))๋ฅผ ์งˆ์˜(query)ํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์€ kubectl ์ปค๋งจ๋“œ ๋ผ์ธ ์ธํ„ฐํŽ˜์ด์Šค ๋˜๋Š” API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” kubeadm๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์ปค๋งจ๋“œ ๋ผ์ธ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, REST ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ API์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

OpenAPI ๋ช…์„ธ

์™„์ „ํ•œ API ์ƒ์„ธ ๋‚ด์šฉ์€ OpenAPI๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ฌธ์„œํ™”ํ–ˆ๋‹ค.

OpenAPI V2

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API ์„œ๋ฒ„๋Š” /openapi/v2 ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ†ตํ•ด ํ†ตํ•ฉ๋œ(aggregated) OpenAPI v2 ์ŠคํŽ™์„ ์ œ๊ณตํ•œ๋‹ค. ์š”์ฒญ ํ—ค๋”์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ธฐ์žฌํ•˜์—ฌ ์‘๋‹ต ํ˜•์‹์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

OpenAPI v2 ์งˆ์˜์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํšจํ•œ ์š”์ฒญ ํ—ค๋” ๊ฐ’
ํ—ค๋” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’ ์ฐธ๊ณ 
Accept-Encoding gzip ์ด ํ—ค๋”๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ
Accept application/com.github.proto-openapi.spec.v2@v1.0+protobuf ์ฃผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€ ์šฉ๋„๋กœ ์‚ฌ์šฉ
application/json ๊ธฐ๋ณธ๊ฐ’
* JSON์œผ๋กœ ์‘๋‹ต

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ฃผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€ ํ†ต์‹ ์„ ์œ„ํ•ด ๋Œ€์•ˆ์ ์ธ Protobuf์— ๊ธฐ๋ฐ˜ํ•œ ์ง๋ ฌํ™” ํ˜•์‹์„ ๊ตฌํ˜„ํ•œ๋‹ค. ์ด ํ˜•์‹์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค Protobuf ์ง๋ ฌํ™” ๋””์ž์ธ ์ œ์•ˆ๊ณผ API ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ •์˜ํ•˜๋Š” Go ํŒจํ‚ค์ง€์— ๋“ค์–ด์žˆ๋Š” ๊ฐ๊ฐ์˜ ์Šคํ‚ค๋งˆ์— ๋Œ€ํ•œ IDL(์ธํ„ฐํŽ˜์ด์Šค ์ •์˜ ์–ธ์–ด) ํŒŒ์ผ์„ ์ฐธ๊ณ ํ•œ๋‹ค.

OpenAPI V3

๊ธฐ๋Šฅ ์ƒํƒœ: Kubernetes v1.24 [beta]

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค v1.31 ๋ฒ„์ „์€ OpenAPI v3 API ๋ฐœํ–‰(publishing)์— ๋Œ€ํ•œ ๋ฒ ํƒ€ ์ง€์›์„ ์ œ๊ณตํ•œ๋‹ค. ์ด๋Š” ๋ฒ ํƒ€ ๊ธฐ๋Šฅ์ด๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋‹ค. kube-apiserver ๊ตฌ์„ฑ ์š”์†Œ์— OpenAPIV3 ๊ธฐ๋Šฅ ๊ฒŒ์ดํŠธ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜์—ฌ ์ด ๋ฒ ํƒ€ ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

/openapi/v3 ๋””์Šค์ปค๋ฒ„๋ฆฌ ์—”๋“œํฌ์ธํŠธ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ทธ๋ฃน/๋ฒ„์ „์˜ ๋ชฉ๋ก์„ ์ œ๊ณตํ•œ๋‹ค. ์ด ์—”๋“œํฌ์ธํŠธ๋Š” JSON ๋งŒ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ทธ๋ฃน/๋ฒ„์ „์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ œ๊ณต๋œ๋‹ค.

{
    "paths": {
        ...,
        "api/v1": {
            "serverRelativeURL": "/openapi/v3/api/v1?hash=CC0E9BFD992D8C59AEC98A1E2336F899E8318D3CF4C68944C3DEC640AF5AB52D864AC50DAA8D145B3494F75FA3CFF939FCBDDA431DAD3CA79738B297795818CF"
        },
        "apis/admissionregistration.k8s.io/v1": {
            "serverRelativeURL": "/openapi/v3/apis/admissionregistration.k8s.io/v1?hash=E19CC93A116982CE5422FC42B590A8AFAD92CDE9AE4D59B5CAAD568F083AD07946E6CB5817531680BCE6E215C16973CD39003B0425F3477CFD854E89A9DB6597"
        },
        ....
    }
}

์œ„์˜ ์ƒ๋Œ€ URL์€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ(immutable) OpenAPI ์ƒ์„ธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ์˜ ์บ์‹ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•จ์ด๋‹ค. ๊ฐ™์€ ๋ชฉ์ ์„ ์œ„ํ•ด API ์„œ๋ฒ„๋Š” ์ ์ ˆํ•œ HTTP ์บ์‹ฑ ํ—ค๋”๋ฅผ ์„ค์ •ํ•œ๋‹ค(Expires๋ฅผ 1๋…„ ๋’ค๋กœ, Cache-Control์„ immutable). ์‚ฌ์šฉ ์ค‘๋‹จ๋œ URL์ด ์‚ฌ์šฉ๋˜๋ฉด, API ์„œ๋ฒ„๋Š” ์ตœ์‹  URL๋กœ์˜ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API ์„œ๋ฒ„๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ทธ๋ฃน ๋ฒ„์ „์— ๋”ฐ๋ฅธ OpenAPI v3 ์ŠคํŽ™์„ /openapi/v3/apis/<group>/<version>?hash=<hash> ์—”๋“œํฌ์ธํŠธ์— ๊ฒŒ์‹œํ•œ๋‹ค.

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์š”์ฒญ ํ—ค๋” ๋ชฉ๋ก์€ ์•„๋ž˜์˜ ํ‘œ๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.

OpenAPI v3 ์งˆ์˜์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํšจํ•œ ์š”์ฒญ ํ—ค๋” ๊ฐ’
ํ—ค๋” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’ ์ฐธ๊ณ 
Accept-Encoding gzip ์ด ํ—ค๋”๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ
Accept application/com.github.proto-openapi.spec.v3@v1.0+protobuf ์ฃผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€ ์šฉ๋„๋กœ ์‚ฌ์šฉ
application/json ๊ธฐ๋ณธ๊ฐ’
* JSON์œผ๋กœ ์‘๋‹ต

์ง€์†์„ฑ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์˜ค๋ธŒ์ ํŠธ์˜ ์ง๋ ฌํ™”๋œ ์ƒํƒœ๋ฅผ etcd์— ๊ธฐ๋กํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค.

API ๊ทธ๋ฃน๊ณผ ๋ฒ„์ „ ๊ทœ์น™

ํ•„๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ๋ฆฌ์†Œ์Šค ํ‘œํ˜„์„ ์žฌ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๊ฐ๊ฐ /api/v1 ๋˜๋Š” /apis/rbac.authorization.k8s.io/v1alpha1 ๊ณผ ๊ฐ™์€ ์„œ๋กœ ๋‹ค๋ฅธ API ๊ฒฝ๋กœ์—์„œ ์—ฌ๋Ÿฌ API ๋ฒ„์ „์„ ์ง€์›ํ•œ๋‹ค.

๋ฒ„์ „ ๊ทœ์น™์€ ๋ฆฌ์†Œ์Šค๋‚˜ ํ•„๋“œ ์ˆ˜์ค€์ด ์•„๋‹Œ API ์ˆ˜์ค€์—์„œ ์ˆ˜ํ–‰๋˜์–ด API๊ฐ€ ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค ๋ฐ ๋™์ž‘์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•˜๊ณ  ์ผ๊ด€๋œ ๋ณด๊ธฐ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์ˆ˜๋ช… ์ข…๋ฃŒ ๋ฐ/๋˜๋Š” ์‹คํ—˜์  API์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

๋ณด๋‹ค ์‰ฝ๊ฒŒ ๋ฐœ์ „ํ•˜๊ณ  API๋ฅผ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ํ™œ์„ฑํ™” ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”๊ฐ€ ๊ฐ€๋Šฅํ•œ API ๊ทธ๋ฃน์„ ๊ตฌํ˜„ํ•œ๋‹ค.

API ๋ฆฌ์†Œ์Šค๋Š” API ๊ทธ๋ฃน, ๋ฆฌ์†Œ์Šค ์œ ํ˜•, ๋„ค์ž„์ŠคํŽ˜์ด์Šค (๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ฆฌ์†Œ์Šค์šฉ) ๋ฐ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. API ์„œ๋ฒ„๋Š” API ๋ฒ„์ „ ๊ฐ„์˜ ๋ณ€ํ™˜์„ ํˆฌ๋ช…ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ๋ชจ๋“  ๋ฒ„์ „์€ ์‹ค์ œ๋กœ ๋™์ผํ•œ ์ง€์† ๋ฐ์ดํ„ฐ์˜ ํ‘œํ˜„์ด๋‹ค. API ์„œ๋ฒ„๋Š” ์—ฌ๋Ÿฌ API ๋ฒ„์ „์„ ํ†ตํ•ด ๋™์ผํ•œ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด v1 ๊ณผ v1beta1 ์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ API ๋ฒ„์ „์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. API์˜ v1beta1 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“  ๊ฒฝ์šฐ, v1beta1 ๋ฒ„์ „์ด ์‚ฌ์šฉ ์ค‘๋‹จ(deprecated)๋˜๊ณ  ์ œ๊ฑฐ๋  ๋•Œ๊นŒ์ง€๋Š” v1beta1 ๋˜๋Š” v1 API ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ฝ๊ฑฐ๋‚˜, ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ์ดํ›„๋ถ€ํ„ฐ๋Š” v1 API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์† ์˜ค๋ธŒ์ ํŠธ์— ์ ‘๊ทผํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

API ๋ณ€๊ฒฝ ์‚ฌํ•ญ

์„ฑ๊ณต์ ์ธ ์‹œ์Šคํ…œ์€ ์ƒˆ๋กœ์šด ์œ ์Šค์ผ€์ด์Šค๊ฐ€ ๋“ฑ์žฅํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ์‚ฌ๋ก€๊ฐ€ ๋ณ€๊ฒฝ๋จ์— ๋”ฐ๋ผ ์„ฑ์žฅํ•˜๊ณ  ๋ณ€ํ™”ํ•ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API๊ฐ€ ์ง€์†์ ์œผ๋กœ ๋ณ€๊ฒฝ๋˜๊ณ  ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ–ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ”„๋กœ์ ํŠธ๋Š” ๊ธฐ์กด ํด๋ผ์ด์–ธํŠธ์™€์˜ ํ˜ธํ™˜์„ฑ์„ ๊นจ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ ์‘ํ•  ๊ธฐํšŒ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ์žฅ๊ธฐ๊ฐ„ ํ•ด๋‹น ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ, ์ƒˆ API ๋ฆฌ์†Œ์Šค์™€ ์ƒˆ ๋ฆฌ์†Œ์Šค ํ•„๋“œ๋Š” ์ž์ฃผ ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ๋‹ค. ๋ฆฌ์†Œ์Šค ๋˜๋Š” ํ•„๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๋ฉด API ์ง€์› ์ค‘๋‹จ ์ •์ฑ…์„ ๋”ฐ๋ผ์•ผ ํ•œ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ API ๋ฒ„์ „ v1 ์—์„œ ์•ˆ์ • ๋ฒ„์ „(GA)์— ๋„๋‹ฌํ•˜๋ฉด, ๊ณต์‹ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API์— ๋Œ€ํ•œ ํ˜ธํ™˜์„ฑ ์œ ์ง€๋ฅผ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์ดํ–‰ํ•œ๋‹ค. ๋˜ํ•œ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๊ณต์‹ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API์˜ ๋ฒ ํƒ€ API ๋ฒ„์ „์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ฐ์ดํ„ฐ์™€๋„ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ฉฐ, ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ์•ˆ์ •ํ™”๋˜์—ˆ์„ ๋•Œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ์•ˆ์ • ๋ฒ„์ „(GA)์˜ API ๋ฒ„์ „๋“ค์— ์˜ํ•ด ๋ณ€ํ™˜๋˜๊ณ  ์ ‘๊ทผ๋  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•œ๋‹ค.

๋งŒ์•ฝ ๋ฒ ํƒ€ API ๋ฒ„์ „์„ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด, ํ•ด๋‹น API๊ฐ€ ์Šน๊ธ‰ํ–ˆ์„ ๋•Œ ํ›„์† ๋ฒ ํƒ€ ๋ฒ„์ „ ํ˜น์€ ์•ˆ์ •๋œ ๋ฒ„์ „์˜ API๋กœ ์ „ํ™˜ํ•ด์•ผ ํ•œ๋‹ค. ํ•ด๋‹น ์ž‘์—…์€ ์˜ค๋ธŒ์ ํŠธ ์ ‘๊ทผ์„ ์œ„ํ•ด ๋‘ API ๋ฒ„์ „ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ ํƒ€ API์˜ ์‚ฌ์šฉ ์ค‘๋‹จ(deprecation) ์‹œ๊ธฐ์ผ ๋•Œ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ตœ์„ ์ด๋‹ค. ๋ฒ ํƒ€ API์˜ ์‚ฌ์šฉ ์ค‘๋‹จ(deprecation) ์‹œ๊ธฐ๊ฐ€ ๋๋‚˜๊ณ  ๋” ์ด์ƒ ์‚ฌ์šฉ๋  ์ˆ˜ ์—†๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ๋Œ€์ฒด API ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

API ๋ฒ„์ „ ์ˆ˜์ค€ ์ •์˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ API ๋ฒ„์ „ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

API ํ™•์žฅ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API๋Š” ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด API ์„œ๋ฒ„๊ฐ€ ์„ ํƒํ•œ ๋ฆฌ์†Œ์Šค API๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ ์–ธ์ ์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ์• ๊ทธ๋ฆฌ๊ฒŒ์ด์…˜ ๋ ˆ์ด์–ด(aggregation layer)๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API๋ฅผ ํ™•์žฅํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

๋‹ค์Œ ๋‚ด์šฉ

  • ์ž์ฒด CustomResourceDefinition์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API๋ฅผ ํ™•์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ธฐ.
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API ์ ‘๊ทผ ์ œ์–ดํ•˜๊ธฐ๋Š” ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ API ์ ‘๊ทผ์„ ์œ„ํ•œ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค.
  • API ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฝ๊ณ  API ์—”๋“œํฌ์ธํŠธ, ๋ฆฌ์†Œ์Šค ์œ ํ˜• ๋ฐ ์ƒ˜ํ”Œ์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ธฐ.
  • API ๋ณ€๊ฒฝ ์‚ฌํ•ญ์—์„œ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ตฌ์„ฑํ•˜๊ณ , API๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค.
์ตœ์ข… ์ˆ˜์ • May 21, 2023 at 2:38 PM PST: [ko] Update outdated files in dev-1.26.-ko.1 [M28-33] (c1cd13e008)