์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค
์ด ํ์ด์ง์ ๋ด์ฉ
Atlas Kubernetes Operator๋ ๋ค์๊ณผ ๊ฐ์ ์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค ์ ์๋ฅผ ์ง์ํฉ๋๋ค.
Resource | ์ค๋ช
| ์งง์ ์ด๋ฆ |
---|---|---|
๋ฐฑ์ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๊ธฐ ์ํ ๋ฐฑ์ ์ปดํ๋ผ์ด์ธ์ค ์ ์ฑ ์ ๊ตฌ์ฑํฉ๋๋ค. | abcp | |
ํด๋ฌ์คํฐ Atlas๋ฅผ ๋ฐฑ์ ํ๊ธฐ ์ํ ๋ฐฑ์ ์ ์ฑ . | abp | |
ํด๋ฌ์คํฐ Atlas๋ฅผ ๋ฐฑ์ ํ๊ธฐ ์ํ ๋ฐฑ์ ์ผ์ ์ ๋๋ค. | abs | |
a custom database role to allocate privileges to your database users. | acr | |
Atlas์ ์ผ๋ถ ํ๋ก์ ํธ ๋ด์ ํด๋ฌ์คํฐ๋งํฉ๋๋ค. | ad | |
Atlas์ ์ผ๋ถ ํ๋ก์ ํธ ๋ด๋ถ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์์ ๋๋ค. | adu | |
Atlas์์ ํ๋ก์ ํธ๋ฅผ ์งํํ์ธ์. | ap | |
Atlas์ ํ๋ก์ ํธ ํ. | at | |
Atlas์ ์ฐํฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค ๋ฐ ํด๋น ๋น๊ณต๊ฐ ์๋ํฌ์ธํธ. | adf | |
Private endpoint connection from your chosen cloud provider to Atlas. | ape | |
Atlas cluster์ ์ผ๋ถ ์ปฌ๋ ์ ์ ๋ํ ์ธ๋ฑ์ค์ ๋๋ค. | asic | |
Atlas Stream Processing ์ฐ๊ฒฐ. | asc | |
Atlas Stream Processing ์ธ์คํด์ค. | asi | |
Atlas์ ํ๋๋ ์ด์ ์ธ์ฆ. | afa |
์ค์
Custom Resource(์ฌ์ฉ์ ์ ์ ๋ฆฌ์์ค)๋ ๋ ์ด์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์ญ์ ํ์ง ์์
Atlas Kubernetes Operator ๋ ์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค ๊ตฌ์ฑ ํ์ผ์ ๊ด๋ฆฌ ํ์ฌ Atlas ๊ตฌ์ฑ์ 2.0 ๊ด๋ฆฌํ์ง๋ง, Atlas Kubernetes Operator Kubernetes ์์ ์ญ์ ํ ์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค๊ฐ ๋ ์ด์ ( ๊ธฐ๋ณธ๊ฐ) Atlas ์์ ์ญ์ ๋์ง ์์ต๋๋ค. ๋์ Atlas Kubernetes Operator ๋ Atlas ์์ ํด๋น ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ์ค์งํ ๋ฟ์ ๋๋ค. ์๋ฅผ ์์ , Kubernetes ์์
AtlasProject
Custom Resource(์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค)๋ฅผ ์ญ์ ํ๋ฉด ๊ธฐ๋ณธ๊ฐ ์ผ๋ก Atlas Kubernetes Operator ๋ ๋ ์ด์ Atlas ์์ ํด๋น ํ๋ก์ ํธ ๋ฅผ ์๋์ผ๋ก ์ญ์ ํ์ง ์์ต๋๋ค. ์ด๋ฌํ ๋์ ๋ณ๊ฒฝ์ ์ฐ๋ฐ์ ์ด๊ฑฐ๋ ์๊ธฐ์น ์์ ์ญ์ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ์ด ๋์์ Atlas Kubernetes Operator ์ด์ ์ ์ฌ์ฉ๋ ๊ธฐ๋ณธ๊ฐ ์ผ๋ก ๋๋๋ฆฌ๋ ๋ฐฉ๋ฒ ๋ฑ ํ์ต ๋ณด์ธ์.,2 0 ์ ๊ธฐ๋ณธ๊ฐ: Atlas Kubernetes Operator ์ ์ญ์ ๋ณดํธ ๊ธฐ๋ฅ์ 2 ์ฐธ์กฐํ์ธ์.0.๋ง์ฐฌ๊ฐ์ง๋ก, Atlas Kubernetes Operator ๋ฅผ ์ฌ์ฉํ์ฌ Kubernetes ์ Atlas ํ๋ก์ ํธ ์์ ํ์ ์ ๊ฑฐ ํ๋ ๊ฒฝ์ฐ Atlas Kubernetes Atlas Kubernetes Operator ๋ Atlas ์์ ํ์ ์ญ์ ํ์ง ์์ต๋๋ค.
๊ธฐ๋ณธ๊ฐ Atlas ๊ตฌ์ฑ ๊ฐ์ ์์์ ์ผ๋ก ์ฌ์ฉํ์ง ์์ผ๋ ค๋ฉด ์ํ๋ ๊ตฌ์ฑ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋ช ์์ ์ผ๋ก ์ ์ํ์ธ์. ๊ฒฝ์ฐ์ ๋ฐ๋ผ Atlas ๊ธฐ๋ณธ๊ฐ์ ์์ํ๋ฉด ์กฐ์ ๋ฃจํ๊ฐ ๋ฐ์ํ์ฌ ์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค ๊ฐ
READY
์ํ ๋ฅผ ๋ฌ์ฑํ์ง ๋ชปํ ์ ์์ต๋๋ค. ์๋ฅผ ์์AtlasDeployment
์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค ์ ์ํ๋ ์๋ ํ์ฅ ๋์์ ๋ช ์์ ์ผ๋ก ์ ์ํ๋ฉด ํฌํจ๋ ์์ ์ ๊ฐ์ด ์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค ์ ์ ์ ์ธ์คํด์ค ํฌ๊ธฐ๊ฐ ์๋ ํ์ฅ์ด ํ์ฑํ๋ Atlas ๋ฐฐํฌ์๋ฒ ์๋ฒ์ ๋ฐ๋ณต์ ์ผ๋ก ์ ์ฉ๋์ง ์๋๋ก ํ ์ ์์ต๋๋ค.autoScaling: diskGB: enabled: true compute: enabled: true scaleDownEnabled: true minInstanceSize: M30 maxInstanceSize: M40
Atlas Kubernetes Operator ๊ด๋ฆฌํ๊ธฐ kubectl
kubectl
๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ ์ ๋ชจ๋ Atlas Kubernetes Operator ๋ฆฌ์์ค๋ฅผ ๋์ดํ๋ ค๋ฉด ๋ค์์ ์คํ ํ๋ฉด ๋ฉ๋๋ค.
kubectl get atlas
ํน์ ์ ํ์ Atlas Kubernetes Operator CRD๋ฅผ ํธ์๋ฅผ ์ํด ๋์ดํ๊ฑฐ๋ ์ค๋ช
ํ๊ธฐ ์ํด ์ ํ์ ๋์ด๋ ์งง์ ์ด๋ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ์์ mongodb
๋ค์์คํ์ด์ค ์ ๋ชจ๋ atlasdatabaseusers
์(๋ฅผ) ๋์ดํ๋ ค๋ฉด ๋ค์์ ์คํ ํ๋ฉด ๋ฉ๋๋ค.
kubectl get adu -n mongodb
Atlas Kubernetes Operator ์ํฌํ๋ก
Atlas Kubernetes Operator๋ฅผ ์ฌ์ฉํ๋ฉด ์ Atlas ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ฑฐ๋ ๊ธฐ์กด Atlas ํ๋ก์ ํธ๋ก ์์ ํ ์ ์์ต๋๋ค.
Atlas์ ๋ํ Atlas Kubernetes Operator ์ก์ธ์ค ๊ถํ์ ๊ตฌ์ฑํ๋ ค๋ฉด ๋ค์์ ๊ณต๊ฐ API ํค, ๋น๊ณต๊ฐ API ํค ๋ฐ ์กฐ์ง ID ์ ๋ณด๊ฐ ํ์ํฉ๋๋ค.
Atlas Kubernetes Operator ๊ฐ ์ Atlas ํ๋ก์ ํธ ๋ฅผ ์์ฑํ๋๋ก ํ๋ ค๋ฉดGrant Programmatic Access to an Organization(์กฐ์ง์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํฉ๋๋ค)์ ํด๋ฆญํฉ๋๋ค. ์กฐ์ง ์์ Atlas ๊ด๋ฆฌ API ์ ๋ํ IP ์ก์ธ์ค ๋ชฉ๋ก ์ด ํ์ํ ๊ฒฝ์ฐ API ์ก์ธ์ค ๋ชฉ๋ก๋ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
์ค์
API ํค์ Organization Project Creator ์กฐ์ง ์ญํ ์ด์์ ํ ๋นํด์ผ ํฉ๋๋ค.
๊ธฐ์กด Atlas ํ๋ก์ ํธ ๋ก ์์ ํ๋ ค๋ฉด ํ๋ก์ ํธ์์ ํ๋ก์ ํธ์ก์ธ์ค๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์กฐ์ง ์์ Atlas ๊ด๋ฆฌ API ์ ๋ํ IP ์ก์ธ์ค ๋ชฉ๋ก ์ด ํ์ํ ๊ฒฝ์ฐ API ์ก์ธ์ค ๋ชฉ๋ก๋ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
์ค์
API ํค์ Project Owner ํ๋ก์ ํธ ์ญํ ์ ํ ๋นํด์ผ ํฉ๋๋ค.
์์ธํ ์์๋ณด๋ ค๋ฉด Atlas์ ๋ํ ์ก์ธ์ค ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
ํ๋ก์ธ์ค ์์ฑ ๋ฐ ์ ๋ฐ์ดํธ
์ง์๋๋ ์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค ์ค ํ๋์์ spec
ํ๋๋ฅผ ๋ณ๊ฒฝํ ๋๋ง๋ค Atlas Kubernetes Operator์์ ๋ค์ ์ํฌํ๋ก๊ฐ ์์๋ฉ๋๋ค.
Atlas Kubernetes Operator๋ ๋ณ๊ฒฝ๋ ์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค์ ๋ํ ์ด๋ฒคํธ๋ฅผ ์์ ํฉ๋๋ค.
Atlas Kubernetes Operator๋
status.conditions
ํ๋๋ฅผ ์ ๋ฐ์ดํธํ์ฌ ๋ฆฌ์์ค๊ฐ ์ค๋น๋์ง ์์์์ ๋ฐ์ํฉ๋๋ค.conditions: - lastTransitionTime: "2021-03-13T16:26:17Z" status: "False" type: Ready Atlas ๊ด๋ฆฌ API์ ์ฐ๊ฒฐํ๊ธฐ ์ํด Atlas Kubernetes Operator๋ ๋ค์ ์์น ์ค ํ๋์์ ์กฐ์ง ID ๋ฐ API ํค๋ฅผ ์ฝ์ต๋๋ค.
spec.connectionSecretRef.name
(AtlasProject
์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค ์ ์ง์ ๋ ๊ฒฝ์ฐ).๊ธฐ๋ณธ์ ์ผ๋ก Atlas Kubernetes Operator๋ ๋์ผํ ๋ค์์คํ์ด์ค ์ ์ฐ๊ฒฐ ๋น๋ฐ์
AtlasProject
์ ์งํฉ๋๋ค. Custom Resource(์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค) . ๋ค๋ฅธ ๋ค์์คํ์ด์ค ์ ์ํฌ๋ฆฟ์ ์ ์ฅํ๋ ค๋ฉดspec.connectionSecretRef.namespace
๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํฉ๋๋ค.global
Atlas Kubernetes Operator ์ํฌ๋ฆฟ<operator-deployment-name>-api-key
( ๊ฐ ์ง์ ๋์ง ์์spec.connectionSecretRef.name
๊ฒฝ์ฐ).
Atlas์์ ๋ฆฌ์์ค๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด Atlas Kubernetes Operator๋ ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ Atlas์ API ๋ฅผ ํธ์ถํฉ๋๋ค.
์ฐธ๊ณ
Atlas Kubernetes Operator๊ฐ ์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค๋ฅผ ์กฐ์ ํ๋ ๋์ Atlas์์ ์ฌ๋ฌ API ํธ์ถ์ ์ํํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด
AtlasProject
์๋ ์ผ์นํ๋ API ๋ฅผ ํธ์ถํ๊ธฐ ์ํ IP ์ก์ธ์ค ๋ชฉ๋ก ๊ตฌ์ฑ์ด ์์ต๋๋ค.์กฐ์ ์ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด
status.conditions
์ด ์ค๋ฅ๋ฅผ ๋ฐ์ํ๋๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค.์์
- lastTransitionTime: "2021-03-15T14:26:44Z" message: 'POST https://cloud.mongodb.com/api/atlas/v1.0/groups/604a47de73cd8cag77239021/accessList: 400 (request "INVALID_IP_ADDRESS_OR_CIDR_NOTATION") The address 192.0.2.1dfdfd5 must be in valid IP address or CIDR notation.' reason: ProjectIPAccessListNotCreatedInAtlas status: "False" type: IPAccessListReady ์ ๋ฐ์ดํธ๊ฐ ์ฑ๊ณตํ๋ฉด
status.conditions
๋ฆฌ์์ค๊ฐ ์ค๋น๋์์์ ๋ฐ์ํฉ๋๋ค.conditions: - lastTransitionTime: "2021-03-13T16:26:17Z" status: "True" type: Ready
ํ๋ก์ธ์ค ์ญ์
Atlas Kubernetes Operator 2.0 ๋ถํฐ, Kubernetes์์ ์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ๋ฉด ๊ฐ์ฒด๋ ๊ธฐ๋ณธ์ ์ผ๋ก Atlas์ ์ ์ง๋์ง๋ง Atlas Kubernetes Operator ๋ ๋ ์ด์ ๊ฐ์ฒด๋ฅผ ์ ์ดํ์ง ์์ต๋๋ค. ์ ์ฒด ๋ฐฐํฌ์ ๋ํด ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋๋ฆฌ๊ฑฐ๋ ํน์ ์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค์ ๋ํ ์ด ๊ธฐ๋ณธ๊ฐ์ ์ฃผ์ ์ผ๋ก ์ฌ์ ์ํ์ฌ Atlas Kubernetes Operator๊ฐ Atlas์์ ํด๋น ๊ฐ์ฒด๋ฅผ ์ญ์ ํ ์ ์๋๋ก ํ ์ ์์ต๋๋ค. ์ฃผ์์ผ๋ก ์ฌ์ ์ํ๋ฉด ๋ค์ ์ํฌํ๋ก๊ฐ ์์๋ฉ๋๋ค.
Atlas Kubernetes Operator๋ ์ญ์ ๋ ์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค์ ๋ํ ์ด๋ฒคํธ๋ฅผ ์์ ํฉ๋๋ค.
Atlas ๊ด๋ฆฌ API์ ์ฐ๊ฒฐํ๊ธฐ ์ํด Atlas Kubernetes Operator๋ ๋ค์ ์์น ์ค ํ๋์์ ์กฐ์ง ID ๋ฐ API ํค๋ฅผ ์ฝ์ต๋๋ค.
spec.connectionSecretRef.name
(AtlasProject
์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค ์ ์ง์ ๋ ๊ฒฝ์ฐ).๊ธฐ๋ณธ์ ์ผ๋ก Atlas Kubernetes Operator๋ ๋์ผํ ๋ค์์คํ์ด์ค ์ ์ฐ๊ฒฐ ๋น๋ฐ์
AtlasProject
์ ์งํฉ๋๋ค. Custom Resource(์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค) . ๋ค๋ฅธ ๋ค์์คํ์ด์ค ์ ์ํฌ๋ฆฟ์ ์ ์ฅํ๋ ค๋ฉดspec.connectionSecretRef.namespace
๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํฉ๋๋ค.global
Atlas Kubernetes Operator ์ํฌ๋ฆฟ<operator-deployment-name>-api-key
( ๊ฐ ์ง์ ๋์ง ์์spec.connectionSecretRef.name
๊ฒฝ์ฐ).
Atlas์์ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ๊ธฐ ์ํด Atlas Kubernetes Operator๋ ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ Atlas์ API ํธ์ถํฉ๋๋ค.
์ฐธ๊ณ
Atlas Kubernetes Operator๋ Kubernetes์์ ์์ฑ๋ ๋ชจ๋ ๊ด๋ จ ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ ๊ฑฐํ๋ฉด
AtlasDatabaseUser
Atlas Kubernetes Operator๊ฐ ๊ด๋ จ ์ฐ๊ฒฐ ๋น๋ฐ์ ์ ๊ฑฐํฉ๋๋ค. .
์ฃผ์์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ๊ฐ ๊ฑด๋๋ฐ๊ธฐ ๋๋ ์ฌ์ ์ํ๊ธฐ
์ฃผ์์ ์ฌ์ฉํ์ฌ Atlas Kubernetes Operator์ ์๋ก์ด ๊ธฐ๋ณธ ๋์ ์ ์์ ํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค์
metadata
์mongodb.com/atlas-resource-policy: "delete"
์ฃผ์์ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ, Atlas Kubernetes Operator ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ ๋ Atlas Kubernetes Operator๋ Atlas์์ ํด๋น ๊ฐ์ฒด๋ฅผ ์ญ์ ํฉ๋๋ค.์์
apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata: name: my-project annotations: mongodb.com/atlas-resource-policy: "delete" ์ ์ญ์ ๋์์ Atlas Kubernetes Operator 2.0 ์ด์ ์ ์ฌ์ฉ๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋๋๋ฆฐ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค์
metadata
์mongodb.com/atlas-resource-policy: "keep"
์ฃผ์์ ์ถ๊ฐํ์ฌ Atlas Kubernetes Operator๋ฅผ ์ญ์ ํ ๋ Atlas Kubernetes Operator๊ฐ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ์ง ์๋๋ก ํ ์ ์์ต๋๋ค. ์ฐ์ฐ์ ๋ฆฌ์์ค.์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค์
metadata
์mongodb.com/atlas-reconciliation-policy: "skip"
์ฃผ์์ ์ถ๊ฐํ๋ฉด Atlas Kubernetes Operator๊ฐ ๋ฆฌ์์ค์ ๋ํ ์กฐ์ ์ ์์ํ์ง ์์ต๋๋ค. ์ด ์ฃผ์์ ์ฌ์ฉํ๋ฉด ์ฃผ์์ ์ ๊ฑฐํ ๋๊น์ง ์ฌ์๊ณผ์ ๋๊ธฐํ๋ฅผ ์ผ์ ์ค์งํ ์ ์์ต๋๋ค. ์ด ์ฃผ์์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค๋ฅผ ์๋์ผ๋ก ๋ณ๊ฒฝํ๊ณ ๋๊ธฐํ ์ค์ Atlas Kubernetes Operator๊ฐ ์คํ ์ทจ์ํ์ง ์๋๋ก ํ ์ ์์ต๋๋ค. ์ด ์ฃผ์์ ์ ๊ฑฐํ๋ฉด Atlas Kubernetes Operator๊ฐ ๋ฆฌ์์ค๋ฅผ ์กฐ์ ํ๊ณ ์ฌ์๊ณผ ๋๊ธฐํํฉ๋๋ค.์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค์
metadata
์mongodb.com/atlas-resource-version-policy: "allow"
์ฃผ์์ ์ถ๊ฐํ๋ฉด Atlas Kubernetes Operator์์ ํด๋น ๋ฒ์ ๋ ์ด๋ธ์ด ์ฌ์ฉ ์ค์ธ Atlas Kubernetes Operator ๋ฒ์ ๊ณผ ์ผ์นํ์ง ์๋๋ผ๋ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฆฌ์์ค ๋ฒ์ ์ด Atlas Kubernetes Operator ๋ฒ์ ๋ณด๋ค ๋ค์ฒ์ง ๋ฉ์ด์ ๋ฒ์ ์ธ ๊ฒฝ์ฐ ์ต์ ๊ธฐ๋ฅ์ด ์๋ํ์ง ์์ ์ ์์ต๋๋ค. ์ฌ์ํ ๋ฒ์ ๋ถ์ผ์น๋ ์ด์ ๋ฒ์ ๊ณผ ํธํ๋ฉ๋๋ค.