κ°λ°μ νλλ° μμ΄ μ»¨ν μ΄λλ λ μ΄μ λΉ μ§ μ μμ λ§νΌ μ€μν κ°λ μ΄ λμμ΅λλ€. κ·Έλ¦¬κ³ Docker λ 컨ν μ΄λ 맀λμ§ ν΄ μ€ κ°μ₯ λνμ μ΄λΌκ³ λ³Ό μ μμ£ . 컨ν μ΄λλ₯Ό μ€ννκΈ° μν΄μ μ΄λ―Έμ§κ° νμνκ³ λ³΄νΈμ μΌλ‘ Docker λ₯Ό ν΅ν΄ μ΄λ―Έμ§λ₯Ό λ§λ€κ² λ©λλ€. Dockerfile μ μμ± ν ν Docker 컀맨λλ₯Ό μ΄μ©νλ©΄ μ΄λ―Έμ§κ° λ§λ€μ΄μ§κ³ μμ£Ό μ½κ² 컨ν μ΄λλ₯Ό μ€νν μ μμ΅λλ€. μ΄λ―Έμ§λ₯Ό λΉλ νλ λ° μμ΄μ λ¬Όλ‘ κ²½λνλ μ€μνμ§λ§, κ·Έ λͺ»μ§ μκ² μ΄λ―Έμ§ 보μλ μ€μν©λλ€. --previliged κΆνμ λΆμ¬νλ κ±Έ μ§μνκ³ , Dockerfile μ μ§μ μ μΌλ‘ crendentials κ΄λ ¨ν μ 보λ₯Ό μΆκ°(COPY) νλ κ±Έ μ£Όμν΄μΌ ν©λλ€. trivy λ₯Ό μ΄μ©νλ©΄ μμ½κ² μ΄λ―Έμ§μ μ·¨μ½μ κ²μ¬..
μΏ λ²λ€ν°μ€ ν΄λ¬μ€ν°μλ 3κ°μ§μ AutoScaler κ° μμ΅λλ€. HPA, VPA, CA μ£ . κ°λ¨ν μ€λͺ ν΄λ³΄μλ©΄, HPA : Horizontal Pod Autoscaler μ μ€μλ§λ‘, νλμ κ°―μλ₯Ό νμ₯/μΆμ ν΄μ€ VPA : Vertical Pod Autoscaler μ μ€μλ§λ‘, νλμ κ°―μκ° μλ μ§μ λ 리μμ€λ₯Ό νμ₯/μΆμ ν΄μ€ CA : Cluster Autoscaler μ μ€μλ§λ‘, λ Έλμ κ°―μλ₯Ό νμ₯/μΆμ ν΄μ€ HPA, VPA λ Metrics Server κ° μ€μΉλμ΄ μμ΄μΌ νλ©°, λ VPC κ°μ κ²½μ°λ λ°λ‘ μ€μΉν΄μ£Όμ΄μΌ ν©λλ€. κ·Έλ¦¬κ³ CA λ λ³΄ν΅ Karpenter λ₯Ό μ¬μ©ν©λλ€. μ΄λ² κΈμμλ HPA μ λν΄ λ€λ€λ³΄κ³ μ νλλ°, μ¬μ€ HPA λ μ΄λ €μ΄ κ°λ μ΄ ν¬κ² μλ€κ³ μκ°ν©λλ€. λ°..
ν λΌνΌμ μ²μ μμνλ©΄ ν·κ°λ¦¬λ λͺ λ Ήμ΄ μ΅μ μ΄ μμ΅λλ€. λ°λ‘ terraform init λͺ λ Ήμ΄μ -migrate-state μ -reconfigure μ£ . λ³΄ν΅ backend ꡬμ±μ λ³κ²½νλ©΄ ν΄λΉ μ΅μ μ μ¬μ©νλΌλ λͺ λ Ήμ΄λ₯Ό λ³Ό μ μμ΅λλ€. λ‘κ·Έμμ -migrate-state μ -reconfigure μ λν μ€λͺ μ΄ λμμμ§λ§ λ±ν μλΏμ§λ μμ΅λλ€. tfstate μ λ°©ν₯μ±μ μ’μ§μ°μ§ νλ μ΅μ μ΄κΈ° λλ¬Έμ μλͺ» μΌλ€κ° μΈνλΌκ° κΌ¬μΌ μλ μμ΅λλ€. μλ₯Ό λ€μ΄, λΆλͺ λ³κ²½(0 to change)νλ κ±΄λ° μλ‘κ²(1 to add) μμ±νλ€λ 문ꡬλ₯Ό λ³Ό μ μμ£ . μ΄λ° κ²½μ°λ λ³΄ν΅ backend ꡬμ±μ λ³κ²½νκ³ , -reconfigure λ₯Ό μ¬μ©νμ λ λ°μν©λλ€. μμ μ¬μ λ± νλμ state λ§ μ‘΄μ¬ν..
μΏ λ²λ€ν°μ€ λ΄λΆλΌλ¦¬ ν΅μ μ ν λ λ³΄ν΅ μλΉμ€μ λλ©μΈ svc.cluster.local μ μ΄μ©νμ¬ ν΅μ νκ² λ©λλ€. μΈλΆμμ λ΄λΆλ‘ λ€μ΄μ€λ ν΅μ μ λν΄μλ Ingress λ₯Ό μ΄μ©ν΄ https ν΅μ μ νκ²λμ£ . νμ§λ§ Ingress λ λ΄λΆ ν΅μ μ λν΄μλ https ν΅μ μ 보μ₯ν΄μ£Όμ§ μμ£ . μ΄ λΆλΆμ λν΄μλ Istio μ mTLS λ₯Ό μ΄μ©ν΄μ νλμμ ν΅μ μ λͺ¨λ https ν΅μ μ νκ² ν μ μμ΅λλ€. Istio μ mTLS κ° κΆκΈνλ€λ©΄? [Istio] μΏ! μ°λ¦¬λ§μ λΉλ°μ΄μΌ - mTLS (νμΈνΈ) [Istio] μΏ! μ°λ¦¬λ§μ λΉλ°μ΄μΌ - mTLS (κ²μ¦νΈ) κ·Έλ λ€λ©΄ mTLS λ₯Ό μ΄μ©νμ§ μκ³ λ΄λΆ ν΅μ μ μ΄λ»κ² https ν΅μ μ ν μ μμκΉμ? μ λ΅μ κ°λ¨ν©λλ€. νλ λ§λ€ certifica..
EKS μ κ°μ ν΄λΌμ°λκ° μ 곡ν΄μ£Όλ μΏ λ²λ€ν°μ€κ° μλ, μ¨νλ λ―Έμ€ νκ²½μμ μΏ λ²λ€ν°μ€λ₯Ό μ€μΉνλ€κ³ νλ©΄ λ³΄ν΅ kubeadm μ΄λΌλ ν΄μ μ΄μ©ν΄μ ꡬμ±νκ² λ©λλ€. Control Plane μ kubeadm init λ₯Ό ν΅ν΄ ꡬμ±λκ³ , Data Plane μ kubeadm join μ ν΅ν΄ μΏ λ²λ€ν°μ€μ μ‘°μΈνκ² λ©λλ€. kubeadm ν΄ νλλ©΄ API Server, Scheduler, Control Manager, ETCD λ± Control Plane μ νμν λͺ¨λ κ²λ€μ΄ λ§λ²μ²λΌ μλμΌλ‘ ꡬμ±λμ£ . λ¬Όλ‘ kubelet κ·Έλ¦¬κ³ containerd μ κ°μ cri-ꡬν체λ μ΄λ―Έ μ€νλκ³ μμ΄μΌ ν©λλ€! μλμ΄λ κ²μ΄ νμ€ν νΈμμ±μ μ 곡ν΄μ£ΌκΈ΄ νμ§λ§, μλμΌλ‘ ꡬμ±λκΈ° λλ¬Έμ κ·Έ μμμ λ¬΄μ¨ μΌμ΄ μΌμ΄..
μμ λΆν° μΏ λ²λ€ν°μ€λ₯Ό κ΄λ¦¬νλ λ° μμ΄μ κΆκΈν μ μ΄ μμμ΅λλ€. "μμ² λκ² λ§μ λ‘κ·Έλ₯Ό μμ±νλ μ ν리μΌμ΄μ λ€λ‘ μΈν΄ λ Έλμ λμ€ν¬κ° λΆμ‘±ν΄μ§λ©΄ μ΄λ‘νμ§?" "κ³μ μλ‘μ΄ μ»¨ν μ΄λ μ΄λ―Έμ§λ₯Ό λ€μ΄ λ°μμ κ·Έλ‘ μΈν΄ λ Έλμ λμ€ν¬κ° λΆμ‘±ν΄μ§λ©΄ μ΄λ‘νμ§?" λ Έλμ λμ€ν¬κ° λΆμ‘±νκ² λλ©΄ λ Έλμμ DiskPressure λΌλ λ©μμ§λ₯Ό λ±κ² λ κ²μ λλ€. κ·Έλ°λ° κΆκΈν μμ μ λμ€ν¬κ° λΆμ‘±ν λ "μ΄λ»κ² ν΄κ²°νλ" κ° μλκ³ "μ΄λ»κ² μλ°©νλ" μ λλ€. κ·Έλμ μ΄λ² κΈμμλ μλ°©νλ λ°©λ²μ λν΄ μμλ³΄κ³ μ ν©λλ€. λ μΈ λλμ½λ~ μ λ κ°μΈμ μΌλ‘ μΏ λ²λ€ν°μ€λ₯Ό κ΄λ¦¬νλ©΄μ κ°μ₯ μ€μμνκ² μκ°νλ ν€μλκ° μμ΅λλ€. λ°λ‘ μΌμμ (empheral) κ³Ό λμ (Dynamic) μ λλ€. μλ₯Ό λ€μ΄, μΏ λ²λ€ν°μ€μ κ°μ₯ κΈ°λ³Έ..
μΏ λ²λ€ν°μ€ νκ²½μμ ARC λ₯Ό μ΄μ©νλ©΄ μ΄λ ΅μ§ μκ² λ€μν OS μμ μ€ν μ€μΌμΌλ§μ κΈ°λ°ν Runner ꡬνμ΄ κ°λ₯ν©λλ€. Karpenter μ ν¨κ»λΌλ©΄ λ ν¨μ¨μ μ΄μ£ . (Karpenter κ³Ό κΆκΈνλ€λ©΄ μ¬κΈ° μ°Έκ³ , ARC κ° κΆκΈνλ€λ©΄ μ¬κΈ° μ°Έκ³ ) λν EKS μμ Linux μ Windows κΈ°λ°μ λ Έλλ₯Ό μ§μν΄μ£ΌκΈ° λλ¬Έμ λμ°κΈ°λ§ νλ€λ©΄ νλ λ¨μλ‘ Runner λ₯Ό λ°°ν¬ν μ μμ΅λλ€. (EKS μμ Windows λ₯Ό νμ±ν νλ λ°©λ²μ΄ κΆκΈνλ€λ©΄ μ¬κΈ° μ°Έκ³ ) νμ§λ§ MacOS λ μκΈ°κ° λ¬λΌμ.. EKS μμ μ§μμ μν΄μ€λλ€.. κ·Έλμ λ§μ½ MacOS κΈ°λ°μ μ컀 λ Έλλ₯Ό νλ‘λΉμ λ νλ €κ³ νλ€λ©΄, μλ§ MacOS κΈ°λ°μ μΈμ€ν΄μ€λ₯Ό λμ΄ ν κ±°κΈ°μ μλμΌλ‘ EKS ν΄λ¬μ€ν°μ μ‘°μΈν΄μΌ ν κ²μ λλ€...
λ€μ΄κ°κΈ° μμ μ λ Windows λ₯Ό λ§μ΄ λ€λ€λ³΄μ§ μμκΈ° λλ¬Έμ λΆμ‘±νκ±°λ νλ¦° λΆλΆμ΄ μμ μ μμ΅λλ€! μΏ λ²λ€ν°μ€λ v1.23 λ²μ , Karpenter λ v0.31 λ²μ μ λλ€. μΏ λ²λ€ν°μ€(EKS) νκ²½μ μλμ°μ Karpenter λ₯Ό νμ±ν νλ λ°©λ²μ λν΄μ μ¬κΈ°λ₯Ό μ°Έκ³ νμΈμ. Karpenter μ λν΄ κΆκΈνλ€λ©΄ μ¬κΈ°λ₯Ό μ°Έκ³ νμΈμ. κ·ΈλΌ λ μΈ λλμ½λ~ μ°λ¦¬κ° μΏ λ²λ€ν°μ€λ₯Ό μ¬μ©νλ λ°©λ²μ λ°λ‘ μ€μΌμ€νΈλ μ΄μ μ μν¨μ΄μ£ . νλμ λ§μ€ν° νλ μΈμΌλ‘ μ¬λ¬ λ Έλμ μ¬λ¬ νλλ₯Ό μ’ λ μ½κ² κ΄λ¦¬νκΈ° μν΄μμ λλ€. Action Runner μμ μμΈλ μλμ£ . Action Runner Controller λ₯Ό μ΄μ©νλ©΄ μ½κ² μΏ λ²λ€ν°μ€ νκ²½μμ νλ λ¨μμ Runner λ°°ν¬κ° κ°λ₯ν©λλ€. 맨 μ²μ Action..
μ°λ¦¬λ λ³΄ν΅ EKS μ μ컀 λ Έλλ‘ x86 μ΄λ , arm64 μ΄λ 리λ μ€λ₯Ό μ¬μ©ν©λλ€. νΉν EKS νκ²½μ΄λΌλ©΄ μλ§μ‘΄ 리λ μ€2λ₯Ό μ¬μ©νκ² μ§μ. κ·Όλ° κ°νΉ μ컀 λ Έλλ‘ μλμ°λ₯Ό νμλ‘ νλ κ²½μ°κ° μμ΅λλ€. μλ₯Ό λ€μ΄ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ§λ€μλλ°, 리λ μ€ λΏλ§ μλλΌ μλμ° νκ²½μμλ μ΄ λΌμ΄λΈλ¬λ¦¬λ₯Ό νμλ‘ ν©λλ€. κ·Έλ λ€λ©΄ μ΄ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ΄λ―Έμ§λ‘ λΉλνλ €λ©΄ 리λ μ€κ° μλ μλμ° νκ²½μμ λ§λ€μ΄μΌ νμ£ . λ€νν EKS λ μλμ°λ₯Ό μ§μν΄μ€λλ€. λν Karpenter μμλ μλμ°λ₯Ό μ§μν΄μ£Όμ£ . κ·ΈλΌ μ΄λ»κ² EKS νκ²½μμ μλμ°λ₯Ό νμ±ν νλμ§, μ΄ν Karpenter μμ μλμ°λ₯Ό μ΄λ»κ² νλ‘λΉμ λ νλμ§ νλ² μμ보λλ‘ νμ£ . μ°Έκ³ λ‘ μ§νν μΏ λ²λ€ν°μ€ λ²μ μ 1.23 μ΄κ³ , Karpenter λ 0.31..
κ°λ°μ νλ€λ³΄λ©΄ νκ°μ§ λ²μ λΏλ§ μλλΌ λ€μν λ²μ μ μ§μν΄μ€μΌ ν©λλ€. μλ₯Ό λ€μ΄ νμ΄μ¬μ μ¬μ©νλ€λ©΄ 3.8, 3.9, 3.10 λ²μ λͺ¨λ μ§μν΄μ£Όμ΄μΌ νμ£ . λ²μ λΏλ§ OS λ Linux x86, arm, Window, MacOS λ± λ€μνκ² μ§μν΄μ£Όμ΄μΌ ν©λλ€. C/C++ λ‘ λ§λ€μ΄μ§ νλ‘μ νΈλ₯Ό swig λ₯Ό ν΅ν΄ νμ΄μ¬, μλ°, Go λ± λ€μν μΈμ΄κ³Ό λ€μν λ²μ μμ μ¬μ©ν μ μλ ν¨ν€μ§λ₯Ό λ§λ€μ΄μΌ νλ μ μ΄ μμ΅λλ€. C/C++ νλ‘μ νΈμ μ¬μ©λλ CMakeLists.txt(cmake) μ Github Action μ matrix λ₯Ό μ΄μ©νλ©΄ μ΄λ ΅μ§ μκ² λ€μν λ²μ μ ν¨ν€μ§λ₯Ό λ§λ€ μ μμ κ±° κ°μ΅λλ€. μ΄λ² κΈμμλ νμ΄μ¬κ³Ό Linux x86 λ§ λ€λ£¨λ©°, 3.8, 3.9, 3.10 λ²μ μ νμ΄..
C/C++ κΈ°λ°μ νλ‘μ νΈλ₯Ό λΉλνλλ° μμ΄ λ³΄ν΅ cmake μ make λ₯Ό μ΄μ©ν΄μ λΉλλ₯Ό νκ² λ©λλ€. κ°λ΅νκ² cmake λ CMakeList.txt λ₯Ό κΈ°λ°μΌλ‘ Makefile λ₯Ό λ§λ€μ΄μ£Όκ³ , make λ Makefile λ₯Ό ν΅ν΄ νλ‘μ νΈλ₯Ό λΉλν©λλ€. cmake λ λΉλλ₯Ό μν νλ‘μΈμ€μ΄κ³ , make λ μ€μ λ‘ λΉλλ₯Ό ν΄μ£Όλ νλ‘μΈμ€μΈ μ μ΄μ£ . κ·Έλ°λ° C/C++ νλ‘μ νΈλ₯Ό λΉλνλλ°, λΉλ μκ°μ΄ λλ΅ 1μκ° μ λ μλͺ¨λ©λλ€. λ무 μ€λκ±Έλ €μ.. μ§νν runner λ 2GB Memory μ μΈμ€ν΄μ€μ λλ€. λΉλ μκ°μ λ¨μΆμν€κ³ μΆμ΅λλ€. λΉλ μκ°μ λ¨μΆμν€κΈ° μν λ°©λ²μΌλ‘ κ°μ₯ λ¨Όμ λ μ€λ₯΄λ κ²μ λ°λ‘ μΊμ± μ λλ€. λ§€λ² κ°μ΄ νμΌμ λΉλνμ§ λ§κ³ , λ°λ³΅λλ λΉλ νμΌμ μΊμ±ν΄λμΌλ©΄ μκ°μ΄..
μ§λ κΈμμ Cloudflare μμ μμ±ν λλ©μΈκ³Ό Let's Encrypt λ₯Ό μ΄μ©ν΄μ TLS λ₯Ό httpbin μ μ μ©νμμ΅λλ€. μ΄λ²μλ Cloudflare λ³΄λ€ λ λμ€μ μΈ Route53 μμ μμ±ν λλ©μΈμλ TLS λ₯Ό μ μ©ν΄λ³΄κ³ μ ν©λλ€. Route53 μμ ꡬ맀ν λλ©μΈμ λν΄μλ AWS ACM μ μ΄μ©ν΄μ 무λ£λ‘ TLS λ₯Ό λ°κΈλ°μ μ μμ΅λλ€. κ·Έλ¦¬κ³ λ°κΈλ°μ TLS λ₯Ό AWS ALB μ λ°λ‘ μ μ©νκ² λλ©΄ μμ£Ό μ½κ² TLS ν΅μ μ΄ κ°λ₯ν©λλ€. κ·Έλμ ALB μ Istio λ₯Ό μ΄μ©νκ² λλ©΄ λλ΅ μλ κ·Έλ¦Όκ³Ό κ°μ£ . νμ§λ§ μΈλΆλ§ TLS λ₯Ό ν΅μ μ΄ κ°λ₯νλ―λ‘ λ΄λΆμμ TLS ν΅μ μ΄ λΆκ°λ₯ν©λλ€. ACM μ ν΅ν΄ λλ©μΈμ λν Cert λ₯Ό λ°κΈλ°μ μ μλλ°, μ΄ κ°μ λ€μ΄λ°μμ μ¬μ©λΆκ°λ₯..
μ΄ κΈμ TLS μ λν κΈ°μ΄μ μΈ κ°λ μ΄ νμν©λλ€. μ΅μν HTTPS κ° μ΄λ»κ² λμνλ©°, CA, CSR, tls.cert λ±κ³Ό κ°μ κ²μ΄ 무μμΈμ§ μμμΌ ν©λλ€. λ―Έλ PC μμ μΏ λ²λ€ν°μ€ ν΄λ¬μ€ν°λ₯Ό ꡬμ±νμ¬ μ΄κ²μ κ² ν΄λ³΄κ³ μλλ°, λ νλ λ§μμ 걸리λ κ²μ΄ μμμ΅λλ€. λ°λ‘ λλ©μΈκ³Ό TLS μ λλ€! λλ©μΈ κ°μ κ²½μ° λ§₯ /etc/host μ μΆκ°ν΄μ μ¬μ©νκ³ μμκ³ , TLS κ° μ μ©λμ§ μλ€λ³΄λ λ μ£Όμ μν¨μ λ¬κ³ μμμ£ . AWS ALB λ₯Ό μ¬μ©νλ©΄ Route53 κ³Ό ACM μ ν΅ν΄μ TLS μ μ©νκΈ° μ½μ§λ§, AWS μμ΄ TLS λ₯Ό μ μ©νλ €λ©΄ κ²°κ΅ TLS λ₯Ό ꡬ맀ν΄μΌ ν©λλ€. TLS λ λ³΄ν΅ μ λ£μΈλ°, Let's Ecrypt λ 무λ£λ‘ TLS μ μ 곡ν΄μ£ΌκΈ° λλ¬Έμ μ΄λ² κΈμμλ λ‘컬 νκ²½μμ ..
μ§λ κΈμμ Istio mTLS μ λν΄ μμ보μκ³ , μ μ©λ ν΄λ΄€μ΅λλ€. λ Kiali λ₯Ό ν΅ν΄μ μ€μ mTLS κ° μ μ© λμλ μ§λ μμλ΄€μ£ . Kiali μμ mTLS κ° μ μ©λλ€κ³ μμ΄μ½μΌλ‘ νμλ₯Ό ν΄μ£ΌκΈ΄ νλλ° μ λμΌλ‘ μ§μ μνΈνκ° λλμ§ νμΈνκ³ μΆμ΅λλ€. κ·Έλμ μ΄λ² κΈμμλ Istio 곡μ λ¬Έμμμ μ 곡ν΄μ£Όλ μμ μ tcpdump λ₯Ό μ΄μ©ν΄μ νλ² νμΈν΄λ³΄μ£ ! λ μΈ λλμ½λ~ λ€μ΄κ°κΈ° μμ μ£Όμν μ μ΄ μμ΅λλ€! istio-proxy container μμ tcpdump λ₯Ό μ¬μ©νλ €λ©΄ sudo λ₯Ό κΆνμ κ°μ§ μ μλλ‘ privilege λ₯Ό true λ‘ μ£Όμ΄μΌ ν©λλ€. λ°λΌμ μλ λͺ λ Ήμ΄λ₯Ό ν΅ν΄ istio λ₯Ό μ€μΉν©λλ€. $ istioctl install --set values.global...
μ€ν 리μ§μ κ΄λ ¨λ μΏ λ²λ€ν°μ€ 리μμ€μλ StorageClass, PersistentVolume μ΄ μμ΅λλ€. λ³΄ν΅ λμ μΈ μ€ν 리μ§λ μνλ€λ©΄ StorageClass (μ΄ν SC) λ₯Ό, μ μ μΈ μ€ν 리μ§λ₯Ό μνλ€λ©΄ PersistentVolume (μ΄ν PV) μ μ¬μ©ν©λλ€. ννΈ, νλμμ μ€ν λ¦¬μ§ μ°κ²°μ νλ €λ©΄ PersistentVolumeClaim (μ΄ν PVC) μ μ΄μ©ν΄μ SC λ PV λ₯Ό Bound ν΄μ£Όμ΄μΌ ν©λλ€. AWS EBS λ₯Ό μ¬μ©νκ² λ ν λ°, EBS λ§μΌλ‘λ νκ³κ° μμ΅λλ€. λ°λ‘ νλμ EBS λ λ€μ€ μΈμ€ν΄μ€ μ°κ²°μ΄ λμ§ μλλ€λ μ μ΄μ£ . μλ₯Ό λ€μ΄ EBS μ λ°μ΄ν°λ₯Ό μ μ₯νλ μ ν리μΌμ΄μ μ Deployment Replica 2 λ‘ λ°°ν¬νλ€κ³ κ°μ ν΄λ³΄μ£ . κ·Έλ¦¬κ³ νλλ€μ μλ‘ λ€λ₯Έ μ..
μΏ λ²λ€ν°μ€ μμλ λ€μν μλΉμ€λ€μ΄ μ‘΄μ¬ν©λλ€. μ΄ μλΉμ€λ€μ΄ νλνλ μ겨λλ€ λ³΄λ©΄ μ΄λ μ λͺ λ°±κ°, λͺ μ²κ°μ μλΉμ€λ€μ΄ μ‘΄μ¬νκ² λ©λλ€. μ΄λ° μλΉμ€λ€μ μ½κ² κ΄λ¦¬νκΈ° μν΄μ μ΄μ€ν°μ€λ₯Ό μ¬μ©ν©λλ€. μ΄μ€ν°μ€λ μλΉμ€ λ©μ¬ μλΉμ€ λΌλ νμ΄νμ κ±Έλ§κ² λ€μν κΈ°λ₯λ€μ μ 곡ν΄μ£Όλλ° μ΄λ² κΈμμλ κ·Έ μ€ ν΅μ¬ κΈ°λ₯ μ€ νλμΈ mTLS (Mutual TLS) μ λν΄ μμλ³΄κ³ μ ν©λλ€. λ¨Όμ mTLS κ° λ¬΄μμΈμ§ μμ보기 μ μ μ νμνμ§ λΆν° μμλ³΄μ£ . μ΄μ€ν°μ€ μΈκ·Έλ μ€ κ²μ΄νΈμ¨μ΄λ₯Ό ν΅ν΄ μ°λ¦¬λ μΏ λ²λ€ν°μ€ λ΄λΆμ μ κ·Όμ΄ κ°λ₯ν©λλ€. ν΄λΌμ΄μΈνΈκ° λ°μ΄ν°λ₯Ό μ μ‘ν λ μνΈνλ₯Ό ν ν μ μ‘νκ² λλλ° (HTTPS), λ¬Έμ λ μΈκ·Έλ μ€ κ²μ΄νΈμ¨μ΄ κΉμ§λ§ λ°μ΄ν°κ° μνΈνκ° λκ³ μΏ λ²λ€ν°μ€ λ΄λΆμμλ HTTPS κ°..
Karpenter λ AWS μμ μ§ν μ€μΈ μ€ν μμ€ νλ‘μ νΈλ‘ μΏ λ²λ€ν°μ€μμ AWS ASG λ³΄λ€ ν μ°¨μ λμ μμ€μ μ€μΌμΌλ§μ μ 곡ν΄μ€λλ€. Karpenter κ° λ¬΄μμΈμ§ λͺ¨λ₯΄κ² λ€λ©΄ μ¬κΈ°λ₯Ό μ°Έκ³ ! Karpenter λ₯Ό μ΄μ©νλ©΄ CPU μΈμ€ν΄μ€ λΏλ§ μλλΌ GPU μΈμ€ν΄μ€ λν μ λ§μ λ§ μ λμ μΌλ‘ νλ‘λΉμ λ ν μ μμ΅λλ€. Karpenter λ₯Ό μ°λ©΄ μΈ μλ‘ "μ μ΄κ±° μ§μ§ 짱μΈλ°?" λΌλ μκ°μ΄ λ§μ΄ λλλ€. μμ£Ό μ μ©ν νλ‘μ νΈμΈκ±° κ°μμ. CPU μΈμ€ν΄μ€ κ°μ κ²½μ°μλ Karpenter λ§ μ€μΉνλ©΄ νλ‘λΉμ λ, λνλ‘λΉμ λ λͺ¨λ μ λμν©λλ€. νμ§λ§ GPU μΈμ€ν΄μ€ κ²½μ° νλ‘λΉμ λμ μλμ§λ§, λνλ‘λΉμ λμ λμνμ§ μμμ. μ²μμλ μμ§ λ©μ΄μ λ²μ μ΄λΌμ GPU κ΄λ ¨ν κΈ°λ₯μ΄ κ°λ°μ΄ μλ ..
μ§λ κΈμμλ Action Controller Runner (μ΄ν ARC) λ₯Ό μ¬μ©ν λ AWS EFS λ₯Ό λ§μ΄νΈν΄μ νΉμ κ²½λ‘μ build μ νμν λ°μ΄ν°λ₯Ό μΊμ±νμ΅λλ€. κ·Όλ° λ§μ½ AWS EFS μ κ°μ λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ μ€ν 리μ§κ° μλ€λ©΄ μ΄λ¨κΉμ? λ€νν μΆ©λΆν μ’μ λμ± μμ΄ μμ΅λλ€. λ°λ‘ Github Action μμ μ 곡ν΄μ£Όλ Action Cache μ΄λΌλ λ μμ λλ€. Github Action μ μ¬μ©νλ€λ©΄ μλ§ μ΄λ―Έ λ€λ€ μ μμ€ μλ μκ² κ΅°μ. Action Cache λ μ’μμ 3.7k λ₯Ό λ°μ λ§νΌ λ§μ μ¬λ?μ λ°κ³ μλ μ‘μ μ€μ νλμ λλ€. λνλ¨ΌνΈλ₯Ό 보면 κ½€ μμΈνκ² μ€λͺ μ΄ λμ΄μμ΅λλ€. μμ μ½λλ μ‘΄μ¬νλ©°, κ° νμν with μ λν΄μλ μΉμ νκ² μ€λͺ ν΄μ£Όκ³ μμ΅λλ€...
Istio (μ΄ν μ΄μ€ν°μ€) λ μΏ λ²λ€ν°μ€μ λνμ μΈ μλΉμ€ λ©μ¬ μμ€μ λλ€. λΏλ§ μλλΌ μ΄μ€ν°μ€λ μΈκ·Έλ μ€ μ»¨νΈλ‘€λ¬λ μ 곡ν΄μ£ΌκΈ° λλ¬Έμ Nginx μ κ°μ λ³λμ μΈκ·Έλ μ€ μ»¨νΈλ‘€λ¬κ° νμ μμ΄μ. μ΄λ² κΈμμ Istio μ ν΅μ¬ μμμΈ IngressGateway μ TLS λ₯Ό μ μ©μμΌ λ³΄κ³ μ ν©λλ€! Istio λ₯Ό μ€λͺ νλ κΈμ΄ μλκΈ° λλ¬Έμ Gateway, VirtualService μ κ°μ 리μμ€μ λν μ€λͺ μ νμ§ μκ² μ΅λλ€. κ·ΈλΌ λ μΈ λλμ½λ~ μ€μ΅ νκ²½μ μλμ κ°μμ. μΏ λ²λ€ν°μ€ v1.26.2 μ΄μ€ν°μ€ v1.17.2 곡μ λ¬Έμμ λμμλ μμ λ λΆνμν λ΄μ©μ΄ λ§μμ λ± νμν λΆλΆλ§ μ€μ΅νλ €κ³ ν©λλ€. λ§μ½ λ μμΈν μ λ³΄κ° κΆκΈνλ€λ©΄ μ¬κΈ°λ₯Ό μ°Έκ³ ν΄μ£ΌμΈμ. TLS λ₯Ό μ μ© ν κ²μ΄κΈ° λλ¬Έ..
맀μ°λ§€μ°λ§€μ° μ€μ! Karpenter v0.32 λ²μ λΆν° 리μμ€ μ΄λ¦λ€μ΄ λ³κ²½λμ΄ μ°Έκ³ λ°λλλ€. κ°λ μ λκ°μ΅λλ€. (ex. Provisioners -> NodePools) Karpenter μ κ°λ μ μκ³ μΆλ€λ©΄ μ¬κΈ° μ°Έκ³ ! Karpenter λ₯Ό νλ©΄ νμλ‘ μ λ§ μ μ©ν μ€νμμ€μΈκ±° κ°μμ. ASG λ₯Ό λμ΄μ ν¨μ¬ ν¨μ¨μ μ΄κ³ μ λμ μΌλ‘ λ Έλμ νλλ₯Ό κ΄λ¦¬ν μ μκ² ν΄μ£Όκ±°λ μ. μ€μΌμ€λ§ μμ€ν μ κ°λ°νκ³ μλλ°, Karpenter κ° μμλ€λ©΄ λ§μ΄ νλ€μμ κ²λλ€... μ΄λ² κΈμμλ Karpenter μ Deprovisioning μ λν΄ μμλ³΄λ €κ³ ν©λλ€. κ°μ₯ ν΅μ¬μ΄λΌκ³ λ³Ό μ μμ£ . Deprovisioning κ΄λ ¨ μ΅μ μ ν¬κ² 2κ°μ§λ‘ λλ μ μμ΄μ. - ttlSecondsAfterEmpty ..
μΏ λ²λ€ν°μ€μμ λ―Όκ°ν λ°μ΄ν°λ μν¬λ¦Ώμ ν΅ν΄ κ΄λ¦¬λ©λλ€. μμ±λ μν¬λ¦Ώμ mount fs λλ env var μ ν΅ν΄μ νλμ μν¬λ¦Ώ λ°μ΄ν°λ₯Ό λκ²¨μ€ μ μμ£ . μν¬λ¦Ώμ μμ±ν ν, kubectl create secret generic secret1 --from-literal user=admin kubectl create secret generic secret2 --from-literal user=12345678 μλμ κ°μ΄ yaml μ μμ±ν΄μ μ¬μ©ν μ μμ£ . apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: pod name: pod spec: containers: - image: nginx name: pod resourc..
μΏ λ²λ€ν°μ€μμ μ€ν μ€μΈ νλμ λ΄μ©μ μμ νλ €λ©΄ kubectl exec -it pod -- ... λ₯Ό ν΅ν΄ μμ ν©λλ€. λ§μ½ nginx λ₯Ό μ€ν μ€μΈ νλκ° μκ³ , nginx μ index.html μ μμ νκ³ μΆλ€λ©΄, μλμ κ°μ΄ μ§νμ ν κ²μ λλ€. # pod λΌλ μ΄λ¦μ κ°μ§ νλλ₯Ό nginx μ΄λ―Έμ§λ₯Ό μ΄μ©ν΄μ μμ± kubectl run pod --image nginx # bash λ₯Ό ν΅ν΄ 컨ν μ΄λ λ΄λΆ μ μ kubectl exec -it pod -- bash # index.html μ κ²μ find ./ -type f -iname "*.html" # μμΉλ₯Ό μ°Ύμ ν vim μ ν΅ν΄ μμ vim ./usr/share/nginx/html/index.html index.html μ I'm kingbj..
μΏ λ²λ€ν°μ€μμλ νκ²½ λ³μλ μλ‘κ² μμ±ν νμΌμ 컨ν μ΄λ λ΄λΆμ μ λ¬ν΄μ£ΌκΈ° μν΄μ Configmap, Secret μ μ¬μ©ν©λλ€. μ΄λ¦μμ μ μΆν μ μλ― Configmap μ 보μμ μΌλ‘ μ€μμΉ μμ λ°μ΄ν°λ€μ μ¬μ©ν λ, Secret μ 보μμ μΌλ‘ μ€μν λ°μ΄ν°λ₯Ό μ¬μ©ν λ μ¬μ©ν©λλ€. λ°λΌμ Configmap μ Plain Text λ‘ λ°μ΄ν°κ° μ μ₯λλ λ°λ©΄, Secret μ μΈμ½λ© λμ΄ μ μ₯λ©λλ€. κ·Έλμ μ΄λ² κΈμμλ Secret μ μμ± ν μ΄λ»κ² νλμκ² μ λ¬νλ μ§λ₯Ό μμλ³΄λ €κ³ ν©λλ€. μ¬λ΄μΌλ‘ Secret μ μΈμ½λ© λλ λ°©λ²μ μ¬μ€ λμ½λ© νλ©΄ μ΄λ€ κ°μΈμ§ μ μ μκΈ° λλ¬Έμ 보μμ μΌλ‘ μμ νμ§λ μμ΅λλ€. μΏ λ²λ€ν°μ€λ μ΄λ κ² κ΅³μ΄ Secret μ κ°μ μΈμ½λ©ν΄μ μ μ₯νλ μ΄μ λ ν΄μ»€μ..
μΏ λ²λ€ν°μ€ 보μ κ΄λ ¨ λͺ¨λ² μ¬λ‘λ₯Ό μ΄ν΄λ³΄λ©΄ μλ§ κ°μ₯ κΈ°λ³Έμ μ΄κ³ , κ°μ₯ λ§μ΄ 보μ΄λ κ²μ΄ νλ μμ΅λλ€. μλ§ μΏ λ²λ€ν°μ€ λΏλ§ μλλΌ μ»¨ν μ΄λλ₯Ό μ¬μ©νλ νκ²½μ΄λΌλ©΄ λͺ¨λκ° μ κ²½μ¨μΌ νλ λΆλΆμ΄μ£ . λ°λ‘ λ£¨νΈ κ³μ λΉνμ±ν μ λλ€. μ¦, 컨ν μ΄λ λ΄ νλ‘μΈμ€μμ λ£¨νΈ κΆνμ λͺ¨λ λΉνμ±ν νλ κ²μ΄μ£ . 컨ν μ΄λ λ΄λΆμμ μ무λ λ£¨νΈ κΆνμ μ¬μ©νκ² νλ€λ κ²μ λͺ¨λ₯΄λ μ¬λμκ² μ§ λΉλ°λ²νΈλ₯Ό μλ €μ£Όλ κ²κ³Ό λ€λ¦μ΄ μμ΅λλ€. μλ₯Ό λ€μ΄ 컨ν μ΄λμ μ μν ν uname -a λͺ λ Ήμ΄λ₯Ό μ³λ³΄λ©΄ νΈμ€νΈμ OS λ²μ μ λ³Ό μ μμ΅λλ€. λ£¨νΈ κΆν λΉνμ±νλ μ΄λ―Έμ§λ₯Ό λ§λ€ λλ μ€μ ν μ μκ³ , k8s λ‘ νλλ₯Ό λ°°ν¬ν λλ μ€μ ν μ μμ΅λλ€. μ΄λ² κΈμμλ μ΄λ»κ² λ£¨νΈ κ³μ μ λΉνμ±ννκ³ μμ ν νλλ₯Ό λ§λλμ§ μμ..
μΏ λ²λ€ν°μ€μλ Audit μ΄λΌλ κΈ°λ₯μ΄ μμ΅λλ€. λ€λ€ λμΉ μ±μ ¨κ² μ§λ§, Kube Api Server μ μ΄λ€ API λ₯Ό νΈμΆνλμ§ κ°μνλ κΈ°λ₯μ΄μ£ . μΏ λ²λ€ν°μ€λ₯Ό μ€μΉνλ©΄ κΈ°λ³Έμ μΌλ‘ μ 곡 λμ§ μκΈ° λλ¬Έμ μΆκ°μ μΌλ‘ Audit κΈ°λ₯μ νμ±ν ν΄μ£Όμ΄μΌ ν©λλ€. κ·Έλμ μ΄λ² κΈμμλ Audit κΈ°λ₯μ νμ±νν΄μ λκ°, μ΄λ€ νμλ‘, μ΄λ€ 리μμ€λ₯Ό νΈμΆ νλμ§ κ°μν΄λ³΄κ² μ΅λλ€! λ μΈ λλμ½λ! Audit κΈ°λ₯ νμ±ν control plane & data plane v1.26.1 μμ μ§νλμμ΅λλ€ μΏ λ²λ€ν°μ€ 곡μ λ¬Έμλ₯Ό μ΄λν ν Audit μ κ²μν΄μ€λλ€. κ·Έλ¦¬κ³ ν΄λ¦ν΄μ λ¬Έμλ₯Ό νμΈν©λλ€. λ°μΌλ‘ μμ λ΄λ €μ λ‘κ·Έ λ°±μλ μΉμ μΌλ‘ μ΄λν©λλ€. /etc/kubernetes/manifests/kube-apis..
맀μ°λ§€μ°λ§€μ° μ€μ! Karpenter v0.32 λ²μ λΆν° 리μμ€ μ΄λ¦λ€μ΄ λ³κ²½λμ΄ μ°Έκ³ λ°λλλ€. κ°λ μ λκ°μ΅λλ€. (ex. Provisioners -> NodePools) AWS EKS λ₯Ό ν΅ν΄ ν΄λ¬μ€ν°λ₯Ό ꡬμΆνλ©΄ Data Plane (μ΄ν Node) λ₯Ό λ€μν λ°©μμΌλ‘ ꡬμΆν μ μμ΅λλ€. Managed Node Group, Fargate κ·Έλ¦¬κ³ μ΄λ¬ν 리μμ€λ₯Ό μ μ°νκ² κ΄λ¦¬ν μ μκ² ν΄μ£Όλ AWS Auto Scaling, Karpenter κ° μμ΅λλ€. μ΄λ² κΈμμλ Karpenter λ₯Ό ν΅ν΄ AWS Auto Scaling λ³΄λ€ μ μ°νκ² Node λ₯Ό κ΄λ¦¬νλ λ°©λ²μ μμλ³΄κ³ μ ν©λλ€. μ°μ κ°λ¨νκ² μμ보λλ‘ νμ£ . λ μΈ λλμ½λ! Karpenter κ° λμ£ ? μ¬κΈ°μ λ§νλ λ Έλ == μΈμ€ν΄μ€ ..
λꡬλ νλ² μ―€μ μλ’°λ©κ±°μ κ³ μμ΄μ λν΄μ λ€μκ±°λ κ΄λ ¨ λ°μ λ³΄μ ¨μ κ²λλ€. κ·Έλλ νΉμ λͺ¨λ₯΄μλ λΆλ€μ μν΄ κ°λ¨ν μλ €λλ¦¬μ£ . κ³ μμ΄λ₯Ό 보μ΄μ§ μλ μμμ λ£κ³ , κ·Έ μμ 50:50 νλ₯ λ‘ κ³ μμ΄λ₯Ό μ£½μ΄λ λ κ·Ήλ¬Όμ λ£μμ λ κ³ μμ΄λ μ£½μκΉμ? μ΄κΉμ? μΌλ° μΈκ³μμλ μ£½μλ€, μ΄μλ€ λΌκ³ νννμ§λ§ μμμν μΈκ³μμλ μ΄λ₯Ό μ£½μκ³Ό μΆμ΄ μ€μ²©λ μνλΌκ³ ννν©λλ€. μ¦, μ΄μμμΌλ©΄μ μ£½μ΄μλ€ λΌκ³ ν©λλ€. μ€λ κΈμμ μκ°ν Fargate (νκ²μ΄νΈ) λν μλ’°λ©κ±°μ κ³ μμ΄μ λΉμ·ν κ°λ μ λλ€. (λλ§ κ·Έλ κ² μκ°ν μλ..) Fargate λ 무μμΌκΉ? μ°λ¦¬λ λ³΄ν΅ AWS λ₯Ό μ΄μ©ν΄μ μ ν리μΌμ΄μ μ λ°°ν¬νλ€κ³ νλ©΄ EC2 λ₯Ό ν΅ν΄ μΈμ€ν΄μ€λ₯Ό μμ±νκ³ , κ·Έ μΈμ€ν΄μ€ λ΄λΆμ 컨ν μ΄λλ μ§μ νλ‘μΈμ€λ‘..
μ€μ!! ARC κ° Github Official νλ‘μ νΈκ° λ¨μ λ°λΌ μλμμ 보μ¬λλ¦° ARC κ΄λ ¨ν 리μμ€λ€μ μ λΆ κ΅¬ λ²μ μ λλ€. μ¬κΈ°λ₯Ό μ°Έκ³ ν΄μ£ΌμΈμ! Action Controller Runner (μ΄ν ARC) λ νλ λ¨μ Self Hosted Runner μ λλ€. μ¦, μΏ λ²λ€ν°μ€ νκ²½μμ νλλ₯Ό Self Hosted Runner λ‘ μ§μ ν μ μκ² ν΄μ£Όλ μ€νμμ€μ£ . ARC μ λν μ 보λ μ¬κΈ°λ₯Ό νμΈν΄μ£ΌμΈμ. κ·Όλ° ARC λ₯Ό μ¬μ©νλ κ²½μ° νλ κ³ λ €ν΄μΌ ν μ¬νμ΄ μμ΅λλ€. λ°λ‘ ARC μ μν΄ λ§λ€μ΄μ§λ νλλ Github Action μ Job μ΄ μ’ λ£λ κ²½μ° μ κ±°λκ³ λ€μ μμ±λ©λλ€. λ°λΌμ HostPath λ EFS λ₯Ό μ¬μ©νμ§ μμΌλ©΄ Job μ μ€νν λ μμ±νλ Java SDK, N..
νΌλΈλ¦ ν΄λΌμ°λ νκ²½μμ μΏ λ²λ€ν°μ€λ₯Ό μ΄μν λ μ¨νλ‘λ―Έμ€λ³΄λ€ νΈν μ μ€ νλκ° λ°λ‘ λ³Όλ₯¨ κ΄λ¦¬ λΌκ³ μκ°ν©λλ€. EBS CSI Driver λ₯Ό μ€μΉ ν Storage Class, PV κ·Έλ¦¬κ³ PVC λ₯Ό ν΅ν΄ μ½κ² AWS EBS λ₯Ό ν΅ν΄ λ³Όλ₯¨μ μΈμ μ΄λμλ κ°μ Έλ€ μΈ μ μμ£ . ννΈ, μΏ λ²λ€ν°μ€μμ λ€μν λ°©λ²μΌλ‘ λ³Όλ₯¨μ μ¬μ©ν μ μλλ°μ. 컨ν μ΄λκ° κ³΅μ λ₯Ό κ°λ₯μΌ ν΄μ£Όλ EmptyDir, λ Έλμ λ³Όλ₯¨μ ν΅ν΄ νλκ° κ³΅μ λ₯Ό κ°λ₯μΌ ν΄μ£Όλ HostPath, NFS μλ²λ₯Ό μ¬μ©νλ NFS κΈ°λ₯ λ±μ΄ μμ΅λλ€. κ·ΈλΌνλλ₯Ό λ Έλμ λ°°ν¬ν λ, κ·ΈλΌνλμ μ€μ νμΌμ κ·ΈλΌνλκ° λ°°ν¬λ λ Έλμ λ³Όλ₯¨μ μ μ₯μ΄ λ©λλ€. λ°λΌμ λ§μ½ κ·ΈλΌνλ νλκ° λ€λ₯Έ λ Έλμ λ°°ν¬κ° λ κ²½μ° μ΄μ μ κ°μ§κ³ μλ κ·ΈλΌνλ μ€μ μ ..
Istio λ νν K8S ν΄λ¬μ€ν° λ΄μμ μλΉμ€ λ©μ μν μ ν΄μ€λλ€. μλΉμ€ λ©μ λΏλ§ μλλΌ Nginx Ingress, ELB Ingress μ²λΌ Ingress μν λν ν΄μ€λλ€. Istio Ingress Gateway κ° μ μ λͺ μΉμ΄λ μ½κ² Istio Ingress λ‘ μ§μΉνλλ‘ νμ£ π€ EKS μ κ°μ νΌλΈλ¦ ν΄λΌμ°λλ₯Ό μ΄μ©ν΄μ Load Balancer Service λ₯Ό μμ±ν΄μ£Όλ©΄ μλμΌλ‘ CLB κ° ν λΉλ©λλ€. λ°λΌμ Istio Ingress λν CLB λ‘ ν λΉμ΄ λ©λλ€. CLB λ μμΌλ‘ AWS μμ deprecated λκΈ° λλ¬Έμ Network Load Balancer(μ΄ν NLB) λ Application Load Balancer(μ΄ν ALB) λ‘ λ체λμ΄μΌ ν©λλ€. κ·Έλμ μ΄λ² κΈμ..