๐Ÿฅ•
TIL
  • [TIL] Studying tech / computer science knowledge
  • KeyMap
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ๋ณต์žก๋„ ๊ณ„์‚ฐ ( Computational Complexity )
    • DisjointSet-unionFind
    • Bellman-ford Algorithm
    • Dijkstra's Algorithm
    • DP ( Dynamic Programming , ๋™์  ๊ณ„ํš๋ฒ• )
    • ํ”Œ๋กœ์ด๋“œ-์›Œ์…œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Floyd-Warshall algorithm)
    • Kruskal's Algorithm
    • ์ตœ์žฅ ์ฆ๊ฐ€ ์ˆ˜์—ด (Longes Increasing Subsequence)
    • Prim's Algorithm
    • ์ •๋ ฌ
    • ์‹œ๊ฐ„๋ณต์žก๋„ ์™€ ๊ณต๊ฐ„๋ณต์žก๋„ ( Time Complexity & Space Complexity )
    • Topological Sort (์œ„์ƒ ์ •๋ ฌ)
  • ์ฑ… ์ฝ๊ณ ๋‚œ ํ›„ ์š”์•ฝ
    • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Œ€ํšŒ์—์„œ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ•ด๊ฒฐ ์ „๋žต
    • cleancode
    • ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐœ๋ฐœ
    • ์˜ค๋ธŒ์ ํŠธ
  • CDC
    • debzium
    • kafka
  • ๊ฐœ๋ฐœ ์ƒ์‹
    • asciidoctor
    • ์ปดํŒŒ์ผ๋Ÿฌ
    • ELK ์Šคํƒ
    • ์—”๋””์•ˆ
    • git
    • Gitmoji
    • ํ…Œ์ŠคํŠธ ์ข…๋ฅ˜
    • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ
    • ์ •๊ทœ ํ‘œํ˜„์‹
    • REST API
    • ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ / Blocking๊ณผ NonBlocking
    • Transaction Script์™€ Domain Model
    • ๋””์ž์ธ ํŒจํ„ด
      • ํ–‰๋™ ํŒจํ„ด
      • ๊ฐ์ฒด ์ƒ์„ฑ ํŒจํ„ด
        • ์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด
        • ๋นŒ๋” ํŒจํ„ด
        • ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด
        • [์ƒ์„ฑ ํŒจํ„ด] ํ”„๋กœํ†  ํƒ€์ž… (Prototype Parttern)
        • ์‹ฑ๊ธ€ํ†ค
      • ๊ตฌ์กฐ ํŒจํ„ด
        • ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด
        • ๋ธŒ๋ฆฟ์ง€ ํŒจํ„ด
        • ์ปดํฌ์ง“(Composite) ํŒจํ„ด
        • ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ
        • ํ”„๋ก์‹œ
    • refactoring
      • ์ค‘๋ณต ์ฝ”๋“œ
      • ์ „์—ญ ๋ฐ์ดํ„ฐ
      • ๊ธด ํ•จ์ˆ˜
      • ๊ธด ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก
      • ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ
      • ์ดํ•ดํ•˜๊ธฐ ํž˜๋“  ์ด๋ฆ„
  • ์ž๋ฃŒ๊ตฌ์กฐ
    • AVL Tree
    • Splay Tree
    • aaTree
    • array-list
    • ์ž๋ฃŒ๊ตฌ์กฐ ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„
    • ๊ทธ๋ž˜ํ”„
    • ํž™
    • Red Black Tree
    • stack-queue
    • ํŠธ๋ฆฌ ( Tree )
  • DevOps
    • MSA
    • Kubernetes
      • AccessingAPI
      • controller
      • dashboard
      • kubernetes
      • object
      • pod
      • service
      • volume
  • Java
    • ์–ด๋…ธํ…Œ์ด์…˜
    • ์ œ์–ด๋ฌธ
    • ๋ฐ์ดํ„ฐ ํƒ€์ž…
    • Enum
    • jvm
    • ์—ฐ์‚ฐ์ž
    • thread
    • Java8
      • CompletableFuture
      • Date/Time
      • ์–ด๋…ธํ…Œ์ด์…˜๊ณผ ๋ฉ”ํƒ€์ŠคํŽ˜์ด์Šค
      • ์ธํ„ฐํŽ˜์ด์Šค
      • ๋žŒ๋‹ค์‹
      • Optional
      • ์ŠคํŠธ๋ฆผ
  • JavaScript
    • moduleProject
    • webpack-babel
    • ์ฝ”์–ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
      • array
      • ํ•จ์ˆ˜ ๋ฐ”์ธ๋”ฉ
      • ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ์™€ ํฌ์›Œ๋”ฉ
      • Class
      • ๋น„๊ต ์—ฐ์‚ฐ์ž
      • Date ๋‚ด์žฅ ๊ฐ์ฒด
      • destructuring-assignment
      • function
      • ํ•จ์ˆ˜์˜ prototype ํ”„๋กœํผํ‹ฐ
      • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ( Garbage Collection )
      • JSON (JavaScript Object Notation)
      • map-set
      • ๋‚ด์žฅ ํ”„๋กœํ† ํƒ€์ž…
      • new์—ฐ์‚ฐ์ž์™€ ์ƒ์„ฑ์ž ํ•จ์ˆ˜
      • ๊ฐ์ฒด
      • Object.keys, values, entries
      • ์˜ต์…”๋„ ์ฒด์ด๋‹ '?.'
      • ํ”„๋กœํผํ‹ฐ ํ”Œ๋ž˜๊ทธ
      • ํ”„๋กœํผํ‹ฐ ์ข…๋ฅ˜
      • ํ”„๋กœํ†  ํƒ€์ž…
      • ํ˜ธ์ถœ ์Šค์ผ€์ค„๋ง ( scheduling a call )
      • scope
      • this
      • type-conversions
      • type
      • ํ•จ์ˆ˜์˜ ์ž๋ฃŒํ˜•
      • var_let_const
  • Linux
    • ๊ธฐ๋ณธ ๋ช…๋ น์–ด
    • ํŒŒ์ผ ์ข…๋ฅ˜
    • ๋ฆฌ๋ˆ…์Šค
  • ๋„คํŠธ์›Œํฌ
    • ์‘์šฉ ๊ณ„์ธต ( Application Layer )
    • ์˜ค๋ฅ˜ ๊ฒ€์ถœ๊ณผ ์˜ค๋ฅ˜ ์ •์ •
    • Http
    • Http Header
    • ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ๋ž€
    • ๋„คํŠธ์›Œํฌ ๊ณ„์ธต
    • ๋„คํŠธ์›Œํฌ ์ œ์–ด ์˜์—ญ
    • ์ „์†ก ๊ณ„์ธต ( Transport Layer )
  • PHP
    • Facade
    • composer
    • scopeResolutionOperator
    • Laravel
      • SocialProvider
      • architecture
      • blade
      • controller
      • db
      • dbArchitecture
      • debug
      • eloquent
      • email
      • event
      • exceptionHandling
      • middleware
      • model
      • modelFactory
      • pagingLoading
      • queryBuilder
      • route
      • scout
      • seeding
      • tntsearch
      • validate
      • view
  • React
    • Next.js
    • React ๋ž€?
  • Spring
    • Controller
    • ์š”์ฒญ์ด ๋“ค์–ด์™”์„๋•Œ ์Šคํ”„๋ง์ด ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• ( ๋‚ด๋ถ€๊ตฌ์กฐ )
    • ConfigurationProperties
    • Entity / DTO / VO
    • Maven
    • Repository์™€ DAO
    • ์Šคํ”„๋ง ๋นˆ
    • Spring Framework
    • MVC ํŒจํ„ด
    • ๋„๋ฉ”์ธ ์ž…๋ ฅ๊ฐ’ ๊ฒ€์ฆ
    • Spring Cloud
      • Spring Cloud
      • Eureka
    • Spring Data
      • JPA
      • JPA ์–ด๋…ธํ…Œ์ด์…˜
      • ์—”ํ‹ฐํ‹ฐ ๋น„๊ต
      • ๋ณตํ•ฉ ํ‚ค์™€ ์‹๋ณ„ ๊ด€๊ณ„ ๋งคํ•‘
      • JPA ์˜ˆ์™ธ์ฒ˜๋ฆฌ
      • ๊ฐ์ฒด์ง€ํ–ฅ ์ฟผ๋ฆฌ
      • EntityManagerFactory์™€ EntityManager
      • JPA ์ตœ์ ํ™”
      • ํ”„๋ก์‹œ์™€ ์—ฐ๊ด€๊ด€๊ณ„ ๋งตํ•‘
      • ์—ฐ๊ด€๊ด€๊ณ„
      • ์ƒ์†๊ด€๊ณ„ ๋งตํ•‘
      • ํŠธ๋žœ์žญ์…˜ ๋ฒ”์œ„์™€ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ
      • ๋ฐ์ดํ„ฐ ํƒ€์ž…
      • MySQL ์—ฐ๊ฒฐ
      • Pageable
    • Spring Project๋“ค๊ณผ library
      • Custom Serialize
      • Elasticsearch Index API
      • Spring HATEOAS
      • lombok (๋กฌ๋ณต)
      • Model Mapper
      • Object Mapper
      • Representation Model
      • Spring REST Docs
      • Spring Boot
    • Spring Security
      • Spring Security
      • Authentication
      • Authentication Filter
      • Authorization Filter
      • Filter Chain
      • SecurityContext
      • Spring OAuth2.0
    • Spring Test
      • AssertJ
      • Junit5
      • JunitParams
      • Mock Object
  • DataBase
    • ALIAS
    • CONCAT
    • CTE
    • Group By
    • HAVING
    • IFNULL
    • ์ธ๋ฑ์Šค
    • JOIN
    • ORDER BY
    • ROLLUP
    • SELECT
    • SELECT DISTINCT
    • SQL
    • WHERE
  • Web ์ƒ์‹
    • OAuth
    • WAS
    • HTTPํ†ต์‹  ๊ธฐ๋ฐ˜ ์ธ์ฆ
    • ๋ธŒ๋ผ์šฐ์ €
    • CSR ๊ณผ SSR
    • HTTPS
    • Web
Powered by GitBook
On this page
  • 1. Authentication
  • Authorization
  1. DevOps
  2. Kubernetes

AccessingAPI

PreviousKubernetesNextcontroller

Last updated 3 years ago

์šฐ๋ฆฌ๊ฐ€ k8s๋ฅผ ์„ค์น˜ํ• ๋•Œ kubectl์„ ์„ค์น˜ํ•˜์—ฌ cli๋ฅผ ํ†ตํ•ด ์ž์›์„ ์กฐํšŒํ•˜๋Š” ๊ฒƒ๋„ k8s api server์— ์ ‘๊ทผํ•˜์—ฌ ์กฐํšŒํ•˜๊ฒŒ ๋˜๋Š”๋ฐ cluster ๋ฐ–์˜ ๊ด€๋ฆฌ์ž๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•˜๊ณ ์ž ํ• ๋•Œ๋Š” ์ธ์ฆ์„œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ๋งŒ https๋กœ ์กฐํšŒ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ณ  ๊ด€๋ฆฌ์ž๊ฐ€ kubectl๋ช…๋ น์–ด๋กœ proxy๋ฅผ ์—ด์–ด์ฃผ์—ˆ๋‹ค๋ฉด http๋กœ ์ธ์ฆ์„œ ์—†์ด ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋˜ํ•œ, kubectl์„ cluster๋‚ด๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ ๋ฐ–์—์„œ๋„ ์„ค์น˜๊ฐ€ ๊ฐ€๋Šฅํ•œ๋ฐ Config๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ๊ฐœ์˜ cluster์— ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„๋“ค์„ User Account๋ผ๊ณ  ํ•œ๋‹ค.

๋งŒ์ผ pod์—์„œ api server์— ์ ‘๊ทผํ•˜๊ณ ์ž ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋ณด์•ˆ์ƒ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์— Service Account๋ฅผ ์ด์šฉํ•ด pod์—์„œ api server์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด ์™ธ๋ถ€ pod์—์„œ๋„ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

1. Authentication

1) X509 Client Certs

k8s ์„ค์น˜์‹œ์— kubeconfig๋ผ๋Š” ํ•ด๋‹น cluster์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ํŒŒ์ผ์ด ์กด์žฌํ•˜๊ณ  ์ธ์ฆ์„œ์™€ key๋“ฑ์˜ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด ์™ธ๋ถ€์—์„œ client crt/key ๋ฅผ ํฌํ•จํ•˜์—ฌ https์š”์ฒญ์œผ๋กœ api server์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋˜ํ•œ kubectl ์„ค์น˜์‹œ์— ๋‚ด๋ถ€์ ์œผ๋กœ kubeconfig๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์„ค์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— kubectl์„ ํ†ตํ•ด api server๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ณ  Proxy์˜ต์…˜์„ accept-hosts์ฃผ๋ฉด kubectl์ด ์ธ์ฆ์„œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๋Š” http์š”์ฒญ์œผ๋กœ ์ธ์ฆ์„œ์—†์ด ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

kubectl config setting

  1. kubeadm / kubectl / kubelet ์„ค์น˜ yum install -y --disableexcludes=kubernetes kubeadm-1.15.5-0.x86_64 kubectl-1.15.5-0.x86_64 kubelet-1.15.5-0.x86_64

  2. admin.conf ์ธ์ฆ์„œ ๋ณต์‚ฌ

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  1. proxy ๋„์šฐ๊ธฐ nohup kubectl proxy --port=8001 --address=192.168.0.30 --accept-hosts='^*$' >/dev/null 2>&1 &

2) kubectl

์™ธ๋ถ€์— kubectl์„ ์„ค์น˜ํ•˜์—ฌ ์—ฌ๋Ÿฌ๊ฐœ์˜ cluster์— ์ ‘๊ทผํ•˜๊ณ ์ž ํ• ๋•Œ ํ•ด๋‹น kubectl๋‚ด์˜ ๊ฐ cluster์˜ kubeconfigํŒŒ์ผ์ด ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.

kubeconfig์•ˆ์—๋Š” clusters, users, contexts๋“ฑ์˜ ์„ค์ •์ด ์กด์žฌํ•œ๋‹ค.

  • clusters : ํ•ด๋‹น ํ•ญ๋ชฉ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋“ฑ๋ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

    • name : ํด๋Ÿฌ์Šคํ„ฐ ์ด๋ฆ„

    • url : ์—ฐ๊ฒฐ์ •๋ณด ( ip )

    • ca : ์ธ์ฆ์„œ ํŒŒ์ผ

  • users : ํ•ด๋‹นํ•ญ๋ชฉ์œผ๋กœ ์‚ฌ์šฉ์ž๋ฅผ ๋“ฑ๋ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

    • name : ์‚ฌ์šฉ์ž ์ด๋ฆ„

    • crt : ์‚ฌ์šฉ์ž ์ธ์ฆ์„œ ํŒŒ์ผ

    • key : ๊ฐœ์ธ ํ‚ค

  • contexts : ํด๋Ÿฌ์Šคํ„ฐ์™€ user ์—ฐ๊ฒฐ ์ •๋ณด

    • name : ์ปจํ…์ŠคํŠธ ์ด๋ฆ„

    • cluster : ์—ฐ๊ฒฐํ•  ํด๋Ÿฌ์Šคํ„ฐ ์ด๋ฆ„

    • user : ์—ฐ๊ฒฐํ•  ์‚ฌ์šฉ์ž ์ด๋ฆ„

#kubeconfig
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1KVEUtLS0tLQo=
    server: https://192.168.0.30:6443
  name: cluster-a
- cluster:
    certificate-authority-data: LS0tLS1KVEUtLS0tLQo=
    server: https://192.168.0.50:6443
  name: cluster-b
contexts:
- context:
    cluster: cluster-a
    user: admin-a
  name: context-a
- context:
    cluster: cluster-b
    user: admin-b
  name: context-b
current-context: context-a
kind: Config
preferences: {}
users:
- name: admin-a
  user:
    client-certificate-data: LS0tLS1KVEUtLS0tLQo=
    client-key-data: LS0tLS1KVEUtLS0tLQo=
- name: admin-b
  user:
    client-certificate-data: LS0tLS1KVEUtLS0tLQo=
    client-key-data: LS0tLS1KVEUtLS0tLQo=
# ํŠน์ • context์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •
kubectl config user-context context-A

# node ์ •๋ณด ์กฐํšŒ
kubectl get nodes

3) Service Account

namespace๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด ํ•˜๋‚˜์˜ default๋ผ๋Š” ์ด๋ฆ„์˜ ServiceAccount๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ์ด ServiceAccount๋Š” ํ•˜๋‚˜์˜ Secret์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ ๋‚ด์šฉ์œผ๋กœ๋Š” ์ธ์ฆ์„œ์™€ token๊ฐ’์ด ํฌํ•จ๋˜์–ด์žˆ๋‹ค.

ํŒŒ๋“œ๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด ์ด ServiceAccount๊ฐ€ ์—ฐ๊ฒฐ์ด ๋˜๊ณ  Pod๋Š” ์ด token๊ฐ’์„ ํ†ตํ•ด์„œ api server์— ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ํ•ด๋‹น token๊ฐ’ ๋งŒ ์•ˆ๋‹ค๋ฉด ์™ธ๋ถ€์—์„œ๋„ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

#ServiceAccount ํ™•์ธ
kubectl describe -n nm-01 serviceaccounts
#Secret ํ™•์ธ
kubectl describe -n nm-01 secrets
#Pod ์ƒ์„ฑ
cat <<EOF | kubectl create -f -
apiVersion: v1
kind: Pod
metadata:
  name: pod-1
  namespace: nm-01
  labels:
     app: pod
spec:
  containers:
  - name: container
    image: kubetm/app
EOF

Authorization

k8s๊ฐ€ ์ž์›์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ์ง€์›ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค. (RBAC, ABAC, Webhok, Node)

1) RBAC

k8s์—๋Š” Node, PV, Namespace์™€ ๊ฐ™์ด cluster ๋‹จ์œ„๋กœ ๊ด€๋ฆฌ๋˜๋Š” ์ž์›๊ณผ Pod์™€ Service์™€ ๊ฐ™์ด namespace๋‹จ์œ„๋กœ ๊ด€๋ฆฌ๋˜๋Š” ์ž์›์ด ์กด์žฌํ•˜๊ณ  ServiceAccount, Role, RoleBinding๋„ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ServiceAccount์˜ Role๊ณผ RoleBinding์„ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ๊ฐ™์€ namespace์˜ ์ž์›๋งŒ ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ cluster์˜ ์ž์›์— ์ ‘๊ทผํ•˜๋„๋ก ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. Role์€ ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ  ๊ฐ Role์—๋Š” ์ฝ๊ธฐ/์“ฐ๊ธฐ ๊ถŒํ•œ์„ ์ค„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, RoleBinding์€ Role์„ ์ง€์ •ํ•˜๋Š” ์ž์›์œผ๋กœ์จ Role์€ ํ•œ๊ฐœ๋งŒ ์ง€์ •์ด ๊ฐ€๋Šฅํ•˜๊ณ  ServiceAccount๋Š” ์—ฌ๋Ÿฌ๊ฐœ ์ง€์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ServiceAccount์—์„œ cluster์ž์›์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ClusterRole๊ณผ clusterRoleBinding์ด ์ƒ์„ฑ๋˜์–ด์•ผ ๊ฐ€๋Šฅํ•˜๊ณ  ๊ธฐ๋Šฅ์€ role๊ณผ rolebinding๊ณผ ๋™์ผํ•˜๋‹ค. ํ•˜์ง€๋งŒ RoleBinding์—์„œ clusterRoleBinding์ด ์•„๋‹Œ ClusterRole๋ฅผ ์ง์ ‘ ์ง€์ •์ด ๊ฐ€๋Šฅํ•œ๋ฐ ์ด๊ฒฝ์šฐ์—๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์ž์›์—๋Š” ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ  ๊ฐ™์€ namespace์˜ ์ž์›๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ด๋Š” role์„ ๋งŒ๋“ค์–ด์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ๋ฐ ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ชจ๋“  namespace๋งˆ๋‹ค ๋˜‘๊ฐ™์€ role์„ ๋ถ€์—ฌํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์ƒํ™ฉ์—์„œ role์˜ ๋‚ด์šฉ์ด ๋ณ€๊ฒฝ์ด ๋˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ๋ชจ๋“  namespace๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ๋ณ€๊ฒฝํ•ด์ฃผ์–ด์•ผ ํ•˜์ง€๋งŒ ์ด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋ฉด clusterRole๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•œ๋‹ค.

2) Role, RoleBinding

Role๊ณผ RoleBinding์„ ํ†ตํ•ด ServiceAccount์™€ ์—ฐ๊ฒฐ์„ ํ•ด์ฃผ๊ฒŒ ๋˜๋ฉด ์™ธ๋ถ€์—์„œ Secret์˜ token๊ฐ’์„ ๊ฐ€์ง€๊ณ  API Server์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ , ํ•œ ํ† ํฐ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋‹จ์œ„์˜ ์ž์›์„ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ClusterRoler๊ณผ ClusterRoleBinding์„ ์ƒ์„ฑํ•˜์—ฌ ClusterRoleBinding์„ ServiceAccount์— ์—ฐ๊ฒฐํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

ํ•œ namespace๋‚ด ์ž์› ์ ‘๊ทผ

#Role
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: r-01
  namespace: nm-01
rules:
- apiGroups: [""]
  verbs: ["get", "list"]
  resources: ["pods"]

#RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: rb-01
  namespace: nm-01
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: r-01
subjects:
- kind: ServiceAccount
  name: default
  namespace: nm-01

#Service
apiVersion: v1
kind: Service
metadata:
  name: svc-1
spec:
  selector:
    app: pod
  ports:
  - port: 8080
    targetPort: 8080

ํ•œ cluster๋‚ด ์—ฌ๋Ÿฌ namespace ์ž์› ์ ‘๊ทผ

#namespace
apiVersion: v1
kind: Namespace
metadata:
  name: nm-02

#ServiceAccount
apiVersion: v1
kind: ServiceAccount
metadata:
  name: sa-02
  namespace: nm-02

#ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: cr-02
rules:
- apiGroups: ["*"]
  verbs: ["*"]
  resources: ["*"]

#ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: rb-02
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cr-02
subjects:
- kind: ServiceAccount
  name: sa-02
  namespace: nm-02

Reference

์ธํ”„๋Ÿฐ-๊น€ํƒœ๋ฏผ๋‹˜ ๊ฐ•์˜
accessing
authentication
rbac
role-rolebinding