๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ AWSKRUG ํ”Œ๋žซํผ์—”์ง€๋‹ˆ์–ด๋ง ๋ชจ์ž„ Agentic MCP for EKS ํšŒ๊ณ 



do-messenger_screenshot_2025-07-02_11_35_48.png


์ตœ๊ทผ ๋‚˜๋Š” vultrํ”Œ๋žซํผ์—์„œ ci/cd๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์šด์˜์ค‘์— ์žˆ๋‹ค.

AWS๊ฐ€ ์•„๋‹Œ vultr๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ๋Š” ์—ญ์‹œ ์šด์˜๋น„ ๋ถ€๋ถ„์ด ๊ฐ€์žฅ ์ปธ๋‹ค. ํ•˜์ง€๋งŒ, ์ด๋ฒˆ ์„ธ๋ฏธ๋‚˜๋ฅผ ํ†ตํ•ด์„œ ๋‹ค์‹œ AWS๋กœ ์šด์˜ํ”Œ๋žซํผ์„ ์˜ฎ๊ธธ๊นŒ ๊ณ ๋ฏผ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋งŒํผ ai์—์ด์ „ํŠธ ๊ธฐ๋ฐ˜ ์šด์˜ ์ž๋™ํ™”์˜ ์„ฑ๋Šฅ์ด ์ƒ๊ฐ๋ณด๋‹ค ๋” ๋›ฐ์–ด๋‚ฌ๋‹ค๋Š” ์†Œ๋ฆฌ๋‹ค.

AWSKRUG ํ”Œ๋žซํผ์—”์ง€๋‹ˆ์–ด๋ง ๋ชจ์ž„์— ์ฐธ์—ฌํ›„ ํ•™์Šตํ•œ ๋‚ด์šฉ๊ณผ ์†Œ๊ฐ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค.


๊ฐœ์š”

  • AWSKRUG(AWSํ•œ๊ตญ์‚ฌ์šฉ์ž๋ชจ์ž„)์—์„œ ์ฃผ์ตœํ•œ Agentic/MCP for EKS ํ•ธ์ฆˆ์˜จ๋žฉ ๊ฐ•์˜ ์ด๋‹ค.
  • Amazon Q Developer์™€ ์—ฐ๊ณ„๋œ AI์—์ด์ „ํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ k8s๊ธฐ๋ฐ˜ ์šด์˜์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š”์ง€.
  • ์ฝ”๋“œ ์ƒ์„ฑ + ์‹คํ–‰ + ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์ด ํ•˜๋‚˜์˜ ํ๋ฆ„์œผ๋กœ ์—ฐ๊ฒฐ๋˜๋Š” Agentic Workflow๊ฐ€ ์–ด๋–ค ๋ชจ์Šต์ธ์ง€.
  • ์‹ค์ œ Git ๊ธฐ๋ฐ˜ ์„ค์ • ํŒŒ์ผ๊ณผ EKS ๋ฆฌ์†Œ์Šค๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑยท๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€.



Agentic/MCP for EKS

๊ฐ๊ฐ์˜ ๋‹จ์–ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.


1๏ธโƒฃ Agentic (Agentic AI)

  • Agentic๋Š” ์ž์œจ์„ฑ์— ๊ด€ํ•œ ์œ ํ˜• ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
  • Agent๋Š” ์ฃผ๋กœ ์ž์œจ์ ์œผ๋กœ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ณ , ์ƒํ™ฉ์„ ์ธ์‹ํ•˜๋ฉฐ, ์˜์‚ฌ๊ฒฐ์ •์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋…๋ฆฝ ์‹คํ–‰ ๋‹จ์œ„๋ฅผ ๋งํ•œ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, AI Agentic ์‹œ์Šคํ…œ์€ ๋‹จ์ˆœํžˆ ๋ช…๋ น๋งŒ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ์Šค์Šค๋กœ ๋‹ค์Œ ํ–‰๋™์„ ๊ณ„ํšํ•˜๊ณ  ์‹คํ–‰ ํ๋ฆ„์„ ์ œ์–ดํ•œ๋‹ค.
  • DevOps ๋งฅ๋ฝ์—์„œ๋Š” ์šด์˜ ์ž๋™ํ™” ์—์ด์ „ํŠธ, ์ž์œจ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜, ์ž๊ธฐ ๋ณต๊ตฌ(Self-Healing) ์‹œ์Šคํ…œ ๊ฐ™์€ ๋ฐ์—์„œ Agentic ๊ฐœ๋…์ด ์“ฐ์ธ๋‹ค.

2๏ธโƒฃ MCP (Model Context Protocol)

  • MCP๋Š” ๋ณดํ†ต Model Context Protocol์˜ ์ค„์ž„๋ง๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
  • 2024๋…„ 11์›” AI๊ธฐ์—… Anthrophic์ด ์˜คํ”ˆ์†Œ์Šค๋กœ ๊ณต๊ฐœํ•œ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ  ํ‘œ์ค€์ด๋‹ค.
  • AI๊ฐ€ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ์™€ ๋„๊ตฌ๋ฅผ ํ†ตํ•ฉํ•ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ(๊ทœ์•ฝ), ์—ฐ๊ฒฐ ๊ทœ์น™์ด๋‹ค.
  • ex) Google, MongoDB, Obsidian ๋“ฑ MCP๋ฅผ ํ™œ์šฉํ•˜๋ฉด CLIํ”„๋กฌํ”„ํŠธ ํ•œ๋ฒˆ์œผ๋กœ ์—ฌ๋Ÿฌ์ž‘์—…์„ ๋ชจ๋‘ ai์ฒ˜๋ฆฌ์— ๋งก๊ธธ ์ˆ˜ ์žˆ์Œ(์ฝ๊ธฐ,์“ฐ๊ธฐ ๋ชจ๋‘ ๊ฐ€๋Šฅ)

3๏ธโƒฃ EKS (Elastic Kubernetes Service)

  • EKS๋Š” Elastic Kubernetes Service์˜ ์•ฝ์ž.
  • AWS๊ฐ€ ์ œ๊ณตํ•˜๋Š” Managed Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ์„œ๋น„์Šค์ด๋‹ค.
  • ์‚ฌ์šฉ์ž๋Š” ์ง์ ‘ Kubernetes Control Plane์„ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์œ ์ง€๋ณด์ˆ˜ํ•˜์ง€ ์•Š๊ณ ,
    • AWS๊ฐ€ API Server, etcd, Control Plane ํ™•์žฅ ๋“ฑ์„ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌ.
  • ์‚ฌ์šฉ์ž๋Š” ์›Œ์ปค ๋…ธ๋“œ(Node Group)๋งŒ ๊ตฌ์„ฑํ•ด์„œ Pod์„ ๋ฐฐํฌํ•˜๋ฉด ๋œ๋‹ค.
  • EKS๋Š” AWS IAM, VPC, ELB, CloudWatch ๊ฐ™์€ AWS ์„œ๋น„์Šค์™€ ํ†ตํ•ฉ๋œ๋‹ค.
  • ์˜จํ”„๋ ˆ๋ฏธ์Šค์—์„œ ์ง์ ‘ Kubernetes ์šด์˜ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์šด์˜ ๋ณต์žก์„ฑ์ด ๋‚ฎ์•„์ง„๋‹ค.

์ฆ‰, Agentic for EKS๋Š” Amazon Q Developer CLI์™€ MCP์„ ํ™œ์šฉํ•˜์—ฌ Amazon EKS ํ™˜๊ฒฝ์—์„œ ์—์ด์ „ํŠธ ๊ธฐ๋ฐ˜ ์ž๋™ํ™”์™€ ์šด์˜ ํšจ์œจํ™”๋ฅผ ์‹คํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.



Amazon Q Developer CLI Basics


์œ„ ๊ณผ์ •์€ Q CLI๋ฅผ ์…‹ํŒ…ํ•˜๋Š” ๊ฒƒ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.

curl --proto '=https' --tlsv1.2 -sSf \
  "https://desktop-release.q.us-east-1.amazonaws.com/latest/q-x86_64-linux.zip" \
  -o "q.zip"
  
โœ” Do you want q to modify your shell config? โ†’ Yes
โœ” Select login method โ†’ Use for Free with Builder ID

Confirm the following code in the browser:
Code: xxxx-xxxx  
Open this URL: https://view.awsapps.com/start/#/device?user_code=xxxx-xxxx

To learn more about MCP safety, see https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-mcp-security.html

Welcome to 

 โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ•—     โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— 
โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ•šโ•โ•โ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•‘    โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•—
โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ–ˆโ•”โ• โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘    โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘
โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ–ˆโ•”โ•  โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘    โ–ˆโ–ˆโ•‘โ–„โ–„ โ–ˆโ–ˆโ•‘
โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ•šโ•โ• โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘ โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ•‘    โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•
โ•šโ•โ•  โ•šโ•โ•โ•šโ•โ•     โ•šโ•โ•โ•šโ•โ•  โ•šโ•โ•โ•šโ•โ•โ•โ•โ•โ•โ• โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ•  โ•šโ•โ•โ•โ•     โ•šโ•โ•โ–€โ–€โ•โ• 
                                                        
  • Q CLI๋Š” ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰๋˜๋Š” ai๊ธฐ๋ฐ˜ ๋„์šฐ๋ฏธ์ด๋‹ค.
  • AWSํ™˜๊ฒฝ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” CLI๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์งˆ๋ฌธ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

โ€œEKS ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?โ€

---

EKS ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

1. ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ
   โ€ข ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท์— ์›Œ์ปค ๋…ธ๋“œ ๋ฐฐ์น˜
   โ€ข ๋ณด์•ˆ ๊ทธ๋ฃน์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ ์ œํ•œ
   โ€ข AWS PrivateLink ๋˜๋Š” VPC ์—”๋“œํฌ์ธํŠธ ์‚ฌ์šฉ

2. IAM ๋ฐ RBAC ๊ตฌ์„ฑ
   โ€ข ์ตœ์†Œ ๊ถŒํ•œ ์›์น™ ์ ์šฉ
   โ€ข IAM ์—ญํ• ๊ณผ Kubernetes RBAC ํ†ตํ•ฉ
   โ€ข ์„œ๋น„์Šค ๊ณ„์ •์— IAM ์—ญํ•  ์‚ฌ์šฉ (IRSA)

3. ์•”ํ˜ธํ™” ๋ฐ ๋ณด์•ˆ ์„ค์ •
   โ€ข EKS ํด๋Ÿฌ์Šคํ„ฐ ๋ฐ EBS ๋ณผ๋ฅจ์— ๋Œ€ํ•œ ์•”ํ˜ธํ™” ํ™œ์„ฑํ™”
   โ€ข Secrets ์•”ํ˜ธํ™” ๊ตฌํ˜„
   โ€ข AWS KMS ํ‚ค ์‚ฌ์šฉ

4. ์ปจํ…Œ์ด๋„ˆ ๋ณด์•ˆ
   โ€ข ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฏธ์ง€๋งŒ ์‚ฌ์šฉ
   โ€ข ์ด๋ฏธ์ง€ ์Šค์บ๋‹ ๊ตฌํ˜„ (ECR ์Šค์บ๋‹ ๋˜๋Š” ์„œ๋“œํŒŒํ‹ฐ ๋„๊ตฌ)
   โ€ข ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์‹œ ๋ฃจํŠธ ๊ถŒํ•œ ์ œํ•œ

... ์ƒ๋žต

์ด๋Ÿฌํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด EKS ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ณด์•ˆ ํƒœ์„ธ๋ฅผ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ธํ”„๋ผ ์…‹ํŒ… ํŒŒ์ผ ์ƒ์„ฑ ๋˜ํ•œ ๊ฐ€๋Šฅํ•˜๋‹ค.

~/environment/myeks ๋””๋ ‰ํ† ๋ฆฌ์— nginx-deployment.yaml์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๊ธฐ๋ณธ Kubernetes nginx ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ YAML ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”.

---

Kubernetes nginx ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ YAML ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ› ๏ธ  Using tool: fs_write
 โ‹ฎ 
 โ— Path: /home/ec2-user/nginx-deployment.yaml

+     1: apiVersion: apps/v1
+     2: kind: Deployment
+     3: metadata:
+     4:   name: nginx-deployment
+     5:   labels:
+     6:     app: nginx
+     7: spec:
+     8:   replicas: 3
+     9:   selector:
+    10:     matchLabels:
+    11:       app: nginx

... ์ค‘๋žต
+    35:   selector:
+    36:     app: nginx
+    37:   ports:
+    38:   - port: 80
+    39:     targetPort: 80
+    40:   type: ClusterIP


Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> t
Creating: /home/ec2-user/nginx-deployment.yaml

 โ‹ฎ 
 โ— Completed in 0.0s


nginx-deployment.yaml ํŒŒ์ผ์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์—๋Š” ๋‹ค์Œ ๋‚ด์šฉ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค:

1. Deployment ๋ฆฌ์†Œ์Šค:
   โ€ข 3๊ฐœ์˜ ๋ณต์ œ๋ณธ(replicas)
   โ€ข nginx:1.14.2 ์ด๋ฏธ์ง€ ์‚ฌ์šฉ
   โ€ข ํฌํŠธ 80 ๋…ธ์ถœ
   โ€ข ๋ฆฌ์†Œ์Šค ์ œํ•œ ์„ค์ •:
     โ€ข CPU ์ œํ•œ: 0.5 ์ฝ”์–ด, ์š”์ฒญ: 0.2 ์ฝ”์–ด
     โ€ข ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ: 512Mi, ์š”์ฒญ: 256Mi

2. Service ๋ฆฌ์†Œ์Šค:
   โ€ข ClusterIP ํƒ€์ž… ์„œ๋น„์Šค
   โ€ข ํฌํŠธ 80์„ ํ†ตํ•ด Deployment์— ์—ฐ๊ฒฐ

  1. docker image ๋‹ค์šด๋กœ๋“œ
  2. ์…‹ํŒ… ymlํŒŒ์ผ ์ž‘์„ฑ
  3. ๊ถŒํ•œ๋ถ€์—ฌ
  4. ๋ฆฌ์†Œ์Šค ์ฐจํŠธ ์ž‘์„ฑ
  5. ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
  6. ํ…Œ์ŠคํŠธ

์ „ ๊ณผ์ •์„ ์ž์—ฐ์–ด ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ, ์œ„ ๊ณผ์ •์€ ์•„์ฃผ ๋‹จํŽธ์ ์ธ ๊ธฐ๋Šฅ์ผ ๋ฟ ํ™œ์šฉ๋„๋Š” ๋ฌด๊ถ๋ฌด์ง„ ํ•˜๋ฉฐ ์บ์‹œ๋ฐ์ดํ„ฐ๋กœ ํ•™์Šต์ด ์ง€์†์ ์œผ๋กœ ์ด๋ฃจ์–ด์กŒ์„ ๋•Œ๋Š” ์„ฑ๋Šฅ์ด ๋”์šฑ ๋†’์•„์งˆ ์—ฌ์ง€๊ฐ€ ์ถฉ๋ถ„ํ•˜๋‹ค.



Q CLI / MCP Architecture ์˜ ๊ตฌ์กฐ์™€ ๋™์ž‘๋ฐฉ์‹


โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”       โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”       โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  ํ„ฐ๋ฏธ๋„ ์ž…๋ ฅโ”‚ โ”€โ–ถ    โ”‚ Q CLI      โ”‚โ”€โ–ถ     โ”‚ MCP Client โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
		                                          โ”‚
		                           JSON-RPC over stdio/stdout
		                                          โ”‚
		                                  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
		                                  โ”‚ MCP Server โ”‚
		                                  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
		                                          โ”‚
		                                  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
		                                  โ”‚ ๋กœ์ปฌ Tools โ”‚
		                                  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

์‹คํ–‰ ํ”„๋กœ์„ธ์Šค

  1. ์‚ฌ์šฉ์ž ์ž…๋ ฅ
  2. Q CLI ์ž…๋ ฅ ์ฒ˜๋ฆฌ
  3. ์ปจํ…์ŠคํŠธ ์ˆ˜์ง‘ ์‹œ์ž‘
  4. ์ปจํ…์ŠคํŠธ ์ˆ˜์ง‘ ์™„๋ฃŒ
  5. MCP Client ์ดˆ๊ธฐํ™”
  6. ๋„๊ตฌ ๋ฐœ๊ฒฌ
  7. LLM ํŽ˜์ด๋กœ๋“œ ๊ตฌ์„ฑ
  8. LLM ๋ถ„์„ ์š”์ฒญ
  9. LLM ๋ถ„์„ ์™„๋ฃŒ
  10. ๋„๊ตฌ ์‹คํ–‰ ์‹œ์ž‘
  11. kubectl ๋ช…๋ น ์‹คํ–‰
  12. ๊ฒฐ๊ณผ ๋ถ„์„ ๋ฐ ์‘๋‹ต ์ƒ์„ฑ
  13. ์‚ฌ์šฉ์ž์—๊ฒŒ ์‘๋‹ต ์ „๋‹ฌ

์™œ AWS Q CLI ์—์„œ ๋™์ž‘์‹œํ‚ฌ๊นŒ?

  1. ๋ณด์•ˆ
    • ๋ฏผ๊ฐํ•œ AWS ์ž๊ฒฉ์ฆ๋ช…์„ ๋กœ์ปฌ์—์„œ๋งŒ ์ฒ˜๋ฆฌ โ†’ ๋ฏผ๊ฐ์ •๋ณด๊ฐ€ ๋กœ์ปฌ์„ ๋ฒ—์–ด๋‚  ๋•Œ์—๋Š” ์ž์ฒด ๋งˆ์Šคํ‚น ์ฒ˜๋ฆฌ
    • Kubeconfig ๊ฐ™์€ ํด๋Ÿฌ์Šคํ„ฐ ์ ‘๊ทผ์ •๋ณด ๋ณดํ˜ธ
  2. ์„ฑ๋Šฅ
    • ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ ‘๊ทผ ๋น ๋ฆ„
    • ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ ์ตœ์†Œํ™”
  3. ์ผ๊ด€์„ฑ
    • ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ ๋งž์ถค ์ปจํ…์ŠคํŠธ ์ž๋™ ์ˆ˜์ง‘ โ†’ ์œ„์—์„œ ๊ธฐ์ˆ ํ•œ ๋Œ€๋กœ, ํ•™์Šตํ•˜์—ฌ ์„ฑ๋Šฅ์ด ๋”์šฑ ๊ฐœ์„ (์ตœ์ ํ™”) ๋  ์ˆ˜ ์žˆ๋‹ค.
  4. ์‹ค์ œ ์‹ค๋ฌด ํŒŒ์ผ
    • AWS ํ”„๋กœํŒŒ์ผ, ์ž๊ฒฉ์ฆ๋ช…, K8s ์„ค์ •, ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ ์‚ฌ์šฉ

ํ•˜์ง€๋งŒ Q CLI๋„ ๋งŒ๋Šฅ์€ ์•„๋‹ˆ๋‹ค.

์งˆ๋ฌธ์ž์˜ ์—ญ๋Ÿ‰์— ๋”ฐ๋ผ์„œ, ๋ถˆํ•„์š”ํ•œ ๋ฐ˜๋ณต ์—ญ์งˆ๋ฌธ๊ณผ ๊ฐ™์ด ํ† ํฐ์„ ์†Œ๋ชจํ•˜๊ฑฐ๋‚˜, ๋ณด์•ˆ/์šด์˜์ƒ์˜ ํฐ ์œ„ํ—˜์š”์†Œ๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฅผ ๋ฏธ์—ฐ์— ๋ฐฉ์ง€ํ•˜๊ณ , ์ตœ์ ํ™” ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋ฐ”๋กœ ํ”„๋กœํŒŒ์ผ๊ณผ ์ปจํ…์ŠคํŠธ์ด๋‹ค.




ํ”„๋กœํŒŒ์ผ๊ณผ ์ปจํ…์ŠคํŠธ


์ปจํ…์ŠคํŠธ๋ฅผ ํ™œ์šฉํ•˜์—ฌ Amazon Q๊ฐ€ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ๋” ํšจ๊ณผ์ ์œผ๋กœ ๋„์™€์ค„ ์ˆ˜ ์žˆ๋‹ค.

์ปจํ…์ŠคํŠธ(Context):

  • ๊ฐœ๋ฐœ ๊ทœ์น™, ํ”„๋กœ์ ํŠธ ์„ธ๋ถ€์‚ฌํ•ญ, ์ฝ”๋”ฉ ํ‘œ์ค€ ๋“ฑ์„ ํฌํ•จํ•œ ์ •๋ณด
  • Amazon Q์˜ ์‘๋‹ต์„ ๋” ์ •ํ™•ํ•˜๊ณ  ๋งž์ถคํ™”๋˜๊ฒŒ ๋งŒ๋“ ๋‹ค.

ํ”„๋กœํŒŒ์ผ(Profile):

  • Amazon Q๊ฐ€ ์‚ฌ์šฉ์ž์™€ ์‹œ์Šคํ…œ์— ๋งž์ถฐ ๋ฐ˜์‘ํ•˜๋„๋ก ์„ค์ •๋œ ์ปจํ…์ŠคํŠธ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค.

๊ธ€๋กœ๋ฒŒ ์ปจํ…์ŠคํŠธ(Global context):

  • ๋ชจ๋“  ํ”„๋กœํŒŒ์ผ์— ๊ณตํ†ต์ ์œผ๋กœ ์ ์šฉ๋˜๋Š” ๊ทœ์น™

์›Œํฌ์ŠคํŽ˜์ด์Šค ์ปจํ…์ŠคํŠธ(Workspace context):

  • ํŠน์ • ํ”„๋กœํŒŒ์ผ์—๋งŒ ์ ์šฉ๋˜๋Š” ๊ทœ์น™

์ปจํ…์ŠคํŠธ ํŒŒ์ผ์€ ์ผ๋ฐ˜์ ์œผ๋กœ Markdown ํ˜•์‹์ด๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ ์š”๊ตฌ์‚ฌํ•ญ
  • ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ผ์ธ
  • ๋ณด์•ˆ ์ •์ฑ…
  • ๋ฐฐํฌ ํ‘œ์ค€ ๋“ฑ

ex)

# shell ์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
cat > ~/environment/myeks/kubernetes_standards.md << 'EOF'
# Kubernetes ๋ฐฐํฌ ํ‘œ์ค€

## ์ผ๋ฐ˜ ๊ฐ€์ด๋“œ๋ผ์ธ
- ๋ชจ๋“  Kubernetes ๋ฆฌ์†Œ์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ผ๋ฒจ์„ ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
  - app: {์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„}
  - environment: {dev|staging|prod}
  - team: platform-engineering
  - cost-center: cc-12345

## ๋ฐฐํฌ ๊ตฌ์„ฑ
- ๋ฆฌ์†Œ์Šค ์š”์ฒญ(requests) ๋ฐ ์ œํ•œ(limits)์„ ๋ฐ˜๋“œ์‹œ ๋ช…์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
- CPU ์š”์ฒญ: ์ตœ์†Œ 100m, ์ตœ๋Œ€ 1000m
- ๋ฉ”๋ชจ๋ฆฌ ์š”์ฒญ: ์ตœ์†Œ 128Mi, ์ตœ๋Œ€ 1Gi
- ๋ฐฐํฌ ์ „๋žต์€ ๋กค๋ง ์—…๋ฐ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, maxSurge๋Š” 25%, maxUnavailable๋„ 25%๋กœ ์„ค์ •
- ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์— readiness ๋ฐ liveness probe๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
- ์ด๋ฏธ์ง€ ํ’€ ์ •์ฑ…์€ "IfNotPresent"๋กœ ์„ค์ •ํ•  ๊ฒƒ

## ์ปจํ…Œ์ด๋„ˆ ๋ณด์•ˆ
- ์ปจํ…Œ์ด๋„ˆ๋Š” root๊ฐ€ ์•„๋‹Œ ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•จ (runAsNonRoot: true)
- ๊ฐ€๋Šฅํ•˜๋ฉด ์ฝ๊ธฐ ์ „์šฉ ๋ฃจํŠธ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•  ๊ฒƒ (readOnlyRootFilesystem: true)
- ๊ถŒํ•œ ์ƒ์Šน ํ—ˆ์šฉ์€ false๋กœ ์„ค์ • (allowPrivilegeEscalation: false)
- ๋ชจ๋“  capabilities๋Š” ์ œ๊ฑฐํ•˜๊ณ  ํ•„์š”ํ•œ ํ•ญ๋ชฉ๋งŒ ๋ช…์‹œ์ ์œผ๋กœ ์ถ”๊ฐ€

## ๋„คํŠธ์›Œํ‚น
- ์„œ๋น„์Šค ํฌํŠธ๋Š” ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ผ ๋ช…ํ™•ํžˆ ์ด๋ฆ„ ์ง€์ • (์˜ˆ: http, https, grpc)
- Ingress ๋ฆฌ์†Œ์Šค๋Š” TLS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , HTTP ์š”์ฒญ์€ HTTPS๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•ด์•ผ ํ•จ
- ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ฐ„ ํŠธ๋ž˜ํ”ฝ ์ œํ•œ์„ ์œ„ํ•ด NetworkPolicy ์‚ฌ์šฉ

## ์˜ˆ์‹œ: ์ปจํ…Œ์ด๋„ˆ ํฌํŠธ ์„ค์ •
yaml
ports:
โ€ข name: http
  containerPort: 8080
  protocol: TCP
EOF

์ผ๋ จ์˜ ๊ณผ์ •์„ ํ†ตํ•ด์„œ ๊ฐ ์„œ๋น„์Šค ๋งˆ๋‹ค์˜ ํ”„๋กœํŒŒ์ผ์„ ์ตœ์ ์œผ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค๋ฉด,

์—…๋ฌด ํšจ์œจ์€ ์–ด๋งˆ์–ด๋งˆ ํ• ๊ฒƒ ๊ฐ™๋‹ค.


ํ›„๊ธฐ


์ด์ „, claude ๋ฅผ ์‚ฌ์šฉํ•ด fileSystem, git, obsidian MCP๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ํฌ์ŠคํŒ… ์ž๋™ํ™” ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•œ ๊ฒฝํ—˜์ด ์žˆ๋‹ค.

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

๋ณดํ†ต์˜ ๊ฒฝ์šฐ์—” ์ปจํŠธ๋กคํ•˜์ง€ ๋ชปํ•˜๋Š” ์˜์—ญ๊นŒ์ง€ ai์˜ ๋ฒ”์œ„๊ฐ€ ๋„“์–ด์กŒ๊ณ , ์–‘์งˆ์˜ ์ •๋ณด๋งŒ์„ ์„ ํƒ์ ์œผ๋กœ ํ•™์Šตํ•œ ์ „๋ฌธ์ ์ธ ai์†”๋ฃจ์…˜์ด ๋‚˜์˜ด์— ๋”ฐ๋ผ

์‚ฌ์šฉ ๊ฒฝํ—˜์ด ์ด์ „๊ณผ๋Š” ํ™•์—ฐํ•˜๊ฒŒ ๋‹ฌ๋ผ์ง์„ ๋А๊ผˆ๋‹ค. ์•ž์œผ๋กœ๋Š” AI๋กœ ์ธํ•˜์—ฌ, ์—…๋ฌด ํ•™์Šต๋ฐฉ๋ฒ•์ด ์ด์ „๊ณผ๋Š” ํฌ๊ฒŒ ๋‹ฌ๋ผ์งˆ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐ๋œ๋‹ค.

์ฝ”๋”ฉ(ํ–‰์œ„)์ด ์•„๋‹Œ ๊ฐœ๋…๊ณผ ์•„ํ‚คํ…์ฒ˜๋กœ?

์ด๋Š” ๋น„๋‹จ, AWS์˜ Q CLI๋ฟ ์•„๋‹ˆ๋ผ ๋ชจ๋“  AI ์—์ด์ „ํŠธ์— ํ•ด๋‹น๋˜๋Š” ์‚ฌํ•ญ์ผ ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ AI๋Š” ์—ฌ์ „ํžˆ ์ƒ์‚ฐ์„ฑ์„ ๋†’์—ฌ์ฃผ๋Š” ๋ณด์กฐ๋„๊ตฌ์ผ ๋ฟ, ์ „์ฒด์ ์ธ ์‹œ์Šคํ…œ๊ณผ ์„ธ๋ถ€ ๋‚ด์šฉ๋“ค์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ณ  ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์œ„ํ—˜ํ•œ ๋ฌด๊ธฐ๊ฐ€ ๋  ์ˆ˜ ๋„์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋•Œ๋ฌธ์— ๋‹ค๋ฐฉ๋ฉด์œผ๋กœ ๋„“์€ ์ง€์‹์„ ์Œ“์„ ํ•„์š”๊ฐ€ ์ƒ๊ฒผ๋‹ค.