πŸ₯•
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
  • ConfigMap / secret
  • Env(File)
  • Volume Mount (File)
  • NameSpace / Resource Quota/ LimitRange
  • ResourceQuota
  • LimitRange
  1. DevOps
  2. Kubernetes

object

PreviouskubernetesNextpod

Last updated 3 years ago

ConfigMap / secret

μ»¨ν…Œμ΄λ„ˆμ—μ„œ νŠΉμ • μ„œλΉ„μŠ€λ“€μ„ μƒμ„±ν• λ•Œ νŠΉμ • ν™˜κ²½λ³€μˆ˜ ν•˜λ‚˜κ°€ 달라도 λ‹€λ₯Έ μ„œλΉ„μŠ€λ‘œ μ΄λŸ¬ν•œ μ„œλΉ„μŠ€λ“€μ„ 각각 λ‹€λ₯Έ Image둜 κ΄€λ¦¬ν•˜κ²Œ 되면 μ–΄λ§ˆμ–΄λ§ˆν•˜κ²Œ λ§Žμ€ image듀을 κ΄€λ¦¬ν•˜κ²Œ λ˜λŠ”λ°, μ΄λ•Œ 이런 값듀은 미리 μ •μ˜ν•΄λ‘κ³  ν™˜κ²½λ³€μˆ˜κ°€ λΉ„μ–΄μžˆλŠ” 이미지 ν•œκ°œλ§Œ 관리λ₯Όν•΄λ„ 이 μ„€μ •νŒŒμΌμ„ 같이 μ„œλΉ„μŠ€λ₯Ό μƒμ„±ν•˜κ²Œ 되면 μ—¬λŸ¬ μ„œλΉ„μŠ€λ“€μ„ 생성할 수 μžˆκ²Œλœλ‹€. μ΄λ•Œ configMapκ³Ό secret을 μ‚¬μš©ν•œλ‹€.

secret은 데이터가 λ©”λͺ¨λ¦¬μ— μ €μž₯되기 λ•Œλ¬Έμ— λ³΄μ•ˆμ— μœ λ¦¬ν•˜μ§€λ§Œ μ‹œν¬λ¦Ώλ‹Ή μ΅œλŒ€ 1MκΉŒμ§€λ§Œ μ €μž₯이 κ°€λŠ₯ν•˜λ‹€.

μ΄λ•Œ ν™˜κ²½λ³€μˆ˜λ₯Ό μ—¬λŸ¬ ν˜•νƒœλ‘œ λ„£μ–΄ μ‚¬μš©ν•  수 μžˆλ‹€.

Env(Literal)

ConfigMap을 톡해 ν•„μš”ν•œ 값을 μƒμˆ˜λ‘œ 섀정해두고 μ»¨ν…Œμ΄λ„ˆμ—μ„œ 값듀을 μ‚¬μš©ν•  수 있고 secret은 μ£Όμš”ν•œ 정보λ₯Ό μ €μž₯ν•˜λŠ”λ° μ΄λ•Œ secret의 valueλŠ” base64둜 μΈμ½”λ”©ν•΄μ„œ 값을 λ„£μ–΄μ£Όμ–΄μ•Όν•œλ‹€. νŒŒλ“œλ‘œ 값이 μ£Όμž…μ΄ λ λ•ŒλŠ” μžλ™μ μœΌλ‘œ 디코딩이 λ˜μ–΄ μ‚¬μš©λœλ‹€.

일반적인 object값듀은 k8s db에 μ €μž₯이 λ˜λŠ”λ° secret은 λ©”λͺ¨λ¦¬μ— μ €μž₯이 되고 configMap은 key/valueλ₯Ό λ¬΄ν•œνžˆ 생성할 수 μžˆμ§€λ§Œ secret은 1mbyte만 μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.

apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-dev
data:
  SSH: 'false'
  User: dev
apiVersion: v1
kind: Secret
metadata:
  name: sec-dev
data:
  Key: MTIzNA==
apiVersion: v1
kind: Pod
metadata:
  name: pod-1
spec:
  containers:
    - name: container
      image: kubetm/init
      envFrom:
        - configMapRef:
            name: cm-dev
        - secretRef:
            name: sec-dev

Env(File)

κ°’μœΌλ‘œ μƒμˆ˜κ°€ μ•„λ‹Œ νŒŒμΌμ„ μ •μ˜ν• λ•ŒλŠ” λŒ€μ‹œλ³΄λ“œμ—μ„œ μ œκ³΅ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 직접 cli둜 configMap/secret에 value둜 값을 λ„£μ–΄μ£Όμ–΄μ•Ό ν•œλ‹€.

echo "Content" >> file-c.txt
kubectl create configmap cm-file --from-file=./file-c.txt
echo "Content" >> file-s.txt
kubectl create secret generic sec-file --from-file=./file-s.txt
apiVersion: v1
kind: Pod
metadata:
  name: pod-file
spec:
  containers:
    - name: container
      image: kubetm/init
      env:
        - name: file-c
          valueFrom:
            configMapKeyRef:
              name: cm-file
              key: file-c.txt
        - name: file-s
          valueFrom:
            secretKeyRef:
              name: sec-file
              key: file-s.txt

Volume Mount (File)

apiVersion: v1
kind: Pod
metadata:
  name: pod-mount
spec:
  containers:
    - name: container
      image: kubetm/init
      volumeMounts:
        - name: file-volume
          mountPath: /mount
  volumes:
    - name: file-volume
      configMap:
        name: cm-file

ν™˜κ²½λ³€μˆ˜ 방식은 ν•œλ²ˆ μ£Όμž…ν•˜λ©΄ 끝이기 λ•Œλ¬Έμ— ν™˜κ²½λ³€μˆ˜ 값이 λ³€κ²½λ˜μ–΄λ„ 이λ₯Ό μ‚¬μš©ν•˜κ³ μžˆλŠ” νŒŒλ“œλŠ” μž¬μ£Όμž…ν•˜μ§€ μ•Šμ€ 이상 변경이 λ˜μ§€ μ•Šμ§€λ§Œ, λ§ˆμš΄νŠΈλ°©μ‹μ€ λ§κ·ΈλŒ€λ‘œ 마운트λ₯Ό ν•΄μ„œ μ‚¬μš©ν•˜κΈ°λ•Œλ¬Έμ— νŒŒμΌκ°’μ΄ λ³€κ²½λ˜λ©΄ 이λ₯Ό μ‚¬μš©ν•˜κ³  μžˆλŠ” νŒŒλ“œλŠ” 바뀐 값을 μ‚¬μš©ν•˜κ²Œ λœλ‹€.

NameSpace / Resource Quota/ LimitRange

ν•œ ν΄λŸ¬μŠ€ν„° λ‚΄μ—μ„œλŠ” μ—¬λŸ¬ λ„€μž„μŠ€νŽ˜μ΄μŠ€λ“€μ„ λ§Œλ“€ 수 있고 λ„€μž„μŠ€νŽ˜μ΄μŠ€ λ‚΄μ—μ„œλŠ” μ—¬λŸ¬ νŒŒλ“œλ“€μ„ λ§Œλ“€μ–΄ μ‚¬μš©ν•  수 μžˆλ‹€. μ΄λ•Œ ν•œ λ„€μž„μŠ€νŽ˜μ΄μŠ€μ˜ νŒŒλ“œκ°€ μ„œλ²„μ˜ λͺ¨λ“  μžμ›μ„ μ‚¬μš©ν•˜κ²Œ 되면 λ‹€λ₯Έ νŒŒλ“œλ“€μ—μ„œ λ¬Έμ œκ°€ λ°œμƒν•  수 있기 λ•Œλ¬Έμ— λ„€μž„μŠ€νŽ˜μ΄μŠ€λ“€λ§ˆλ‹€ μ΅œλŒ€ μžμ›λŸ‰μ„ μ œν•œν•˜λŠ” Resource Quotaλ₯Ό λ‘˜ 수 있고 ν•œ λ„€μž„μŠ€νŽ˜μ΄μŠ€λ‚΄μ—μ„œ ν•œκ°œμ˜ νŒŒλ“œκ°€ λͺ¨λ“  Resource Quotaλ§ŒνΌμ„ μ‚¬μš©ν•˜κ³ μžˆλ‹€λ©΄ λ‹€λ₯Έ νŒŒλ“œλ“€μ΄ λ“€μ–΄μ˜¬ 수 μ—†κΈ° λ•Œλ¬Έμ— ν•œνŒŒλ“œλ‹Ή 생성될 수 μžˆλŠ” μžμ›λŸ‰μ„ μ œν•œν•  수 μžˆλŠ” LimitRangeκ°€ μ‘΄μž¬ν•œλ‹€.

NameSpace

ν•œ λ„€μž„μŠ€νŽ˜μ΄μŠ€μ—μ„œλŠ” 같은 μ΄λ¦„μ˜ νŒŒλ“œλ“€μ„ μ€‘λ³΅ν•΄μ„œ 생성할 μˆ˜μ—†κ³ , 타 λ„€μž„μŠ€νŽ˜μ΄μŠ€ λ“€κ³ΌλŠ” λΆ„λ¦¬λ˜μ–΄ κ΄€λ¦¬λ˜κΈ° λ•Œλ¬Έμ— μ„œλ‘œ λ‹€λ₯Έ λ„€μž„μŠ€νŽ˜μ΄μŠ€λΌλ©΄ ν•œ μ„œλΉ„μŠ€μ—μ„œ λ‹€λ₯Έ νŒŒλ“œλ“€μ„ μ—°κ²°ν•  수 μ—†λ‹€. 그리고 λ„€μž„μŠ€νŽ˜μ΄μŠ€λ₯Ό μ§€μš°κ²Œ 되면 κ·Έ μ•ˆμ— λͺ¨λ“  μžμ›μ€ 같이 μ§€μ›Œμ§€κ²Œ λœλ‹€.

λ¬Όλ‘ , PVλ‚˜ nodeλ₯Ό μ΄μš©ν•˜μ—¬ 연결을 ν•  μˆ˜λŠ” 있고 연결은 λ˜μ§€ μ•Šμ§€λ§Œ, 각 νŒŒλ“œκ°€ κ°€μ§€κ³ μžˆλŠ” λ‚΄λΆ€ ipμ£Όμ†Œλ₯Ό μ΄μš©ν•΄μ„œ μ ‘κ·Όκ³Ό 연결은 κ°€λŠ₯ν•˜κ³  nodePort도 λ§ˆμ°¬κ°€μ§€μ΄λ‹€. μ΄λŠ”

apiVersion: v1
kind: Namespace
metadata:
  name: nm-1
apiVersion: v1
kind: Pod
metadata:
  name: pod-1
  namespace: nm-1
# nm-3의 Namespace에 μžˆλŠ” ResourceQuotaλ“€μ˜ 상세 쑰회
kubectl describe resourcequotas --namespace=nm-3
# nm-5의 Namespace에 μžˆλŠ” LimitRangeλ“€μ˜ 상세 쑰회
kubectl describe limitranges --namespace=nm-5

ResourceQuota

λ„€μž„μŠ€νŽ˜μ΄μŠ€μ˜ μžμ›μ„ μ œν•œν•˜κΈ° μœ„ν•œ object둜 ResourceQuotaλ₯Ό λͺ…μ‹œν•œ λ„€μž„μŠ€νŽ˜μ΄μŠ€μ— νŒŒλ“œλ₯Ό μƒμ„±ν•˜λ €κ³ ν• λ•Œ νŒŒλ“œμ˜ μžμ›λŸ‰μ„ λͺ…μ‹œν•΄μ£Όμ§€ μ•ŠμœΌλ©΄ μƒˆλ‘œ 생성할 수 μ—†κ³  ν˜„μž¬ μžμ›μ„ μ΄ˆκ³Όν•΄λ„ 생성이 λ˜μ§€ μ•ŠλŠ”λ‹€.

λ„€μž„μŠ€νŽ˜μ΄μŠ€λ§κ³ λ„ ν΄λŸ¬μŠ€ν„° 전체에 λΆ€μ—¬ν•  수 μžˆλŠ” κΆŒν•œμ΄λ‹€.

apiVersion: v1
kind: ResourceQuota
metadata:
  name: rq-1
  namespace: nm-1
spec:
  hard:
    requests.memory: 3Gi
    limits.memory: 6Gi

memory 뿐만이 μ•„λ‹ˆλΌ cpu, storage도 μ œν•œ ν•  수 있으며 objectλ“€μ˜ μˆ«μžλ„ μ œν•œν•  수 μžˆμ§€λ§Œ k8sλ²„μ „λ§ˆλ‹€ μ œν•œν•  수 μžˆλŠ” objectμ’…λ₯˜λŠ” μƒμ΄ν•˜λ‹€.

apiVersion: v1
kind: Pod
metadata:
  name: pod-2
spec:
  continers:
    - name: container
      image: tmkube/app
  resources:
    requests:
      memory: 2Gi
    limits:
      memory: 2Gi

LimitRange

각각의 νŒŒλ“œλ§ˆλ‹€ λ„€μž„μŠ€νŽ˜μ΄μŠ€μ— λ“€μ–΄κ°ˆ 수 μžˆλŠ”μ§€ μ²΄ν¬ν•˜κΈ° μœ„ν•œ object

μ΄λŠ” resourceQuota와 달리 λ„€μž„μŠ€νŽ˜μ΄μŠ€λ‚΄μ—μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•œ object이닀.

apiVersion: v1
kind: LimitRange
metadata:
  name: lr-1
spec:
  limits:
    - type: Container
      min:
        memory: 0.1Gi
      max:
        memory: 0.4Gi
      maxLimitRequestRatio:
        memory: 3
      defaultRequest:
        memory: 0.1Gi
      default:
        memory: 0.2Gi
kubectl describe limitranges --namespace=nm-5


Reference

μΈν”„λŸ°-κΉ€νƒœλ―Όλ‹˜ κ°•μ˜
use case
env
object2
namespace