no image
85일차) 2025-04-30(EKS 클러스터, NLB)
AWS CLI 구성 호스트네임 : aws-cli아이피 : 211.183.3.99/24curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" apt-get -y install unzipunzip awscliv2.zip./aws/install + ?region=ap-northeast-2 액세스키-시크릿키-리전을 메모장에 저장하고 아래대로 3가지 입력 aws configure 위 aws 계정정보가 들어있는 파일 root@aws-cli:~# cat ~/.aws/credentialseksctlEKS 클러스터 구축, 관리에 필요한 명령어(kubeadm과 비슷한 느낌)eksctl 명령어를 /tmp에 다운로드curl --sile..
2025.04.30
no image
81~84일차) 2025-04-24 ~ 2025-04-29 [3. k8s 팀 프로젝트] - 이스티오 실습(모니터링 - grafana, kiali)
prometheus & 이스티오 비교Loki 기반의 모니터링 및 로깅 환경 구성사용 기술 : Prometheus + Grafana + Loki 조합 ➡️ 가볍고 쿠버네티스 친화적 & 실시간 로그/메트릭 분석 👍주요 컴포넌트Node Exporter역할 : 노드(서버)의 시스템 레벨 메트릭 수집(CPU, 메모리, 디스크, 네트워크 등)사용 대상 : Prometheus특징OS 자원 상태를 노출하는 ExporterPrometheus가 /metrics 엔드포인트로 스크랩하여 수집Kubernetes 노드뿐 아니라 일반 리눅스 서버도 모니터링 가능Kube-State-Metrics역할 : 쿠버네티스 리소스들의 상태 정보 수집사용 대상 : Prometheus특징Node, Pod, Deployment, ReplicaSe..
2025.04.30
no image
81~84일차) 2025-04-24 ~ 2025-04-29 [3. k8s 팀 프로젝트] - 이스티오 실습(mTLS, authentication 구성, 시나리오)
🛡️ 1. mTLS 통신 암호화 (Mutual TLS)✅ 목적파드 간 통신을 자동으로 암호화 및 인증클러스터 내부에서도 패킷 스니핑 공격 방지서비스 A → B 통신 시, 양쪽 모두 신뢰할 수 있는 인증서로 자신을 증명함✅ Istio에서의 구성 방법Istio 설치 시 자동으로 Citadel 컴포넌트 생성istiod가 CA 역할 수행각 사이드카 Envoy에 자동으로 TLS 인증서 주입✅ 왜 중요한가?보안 요소 mTLS 적용 전 mTLS 적용 후트래픽 노출암호화되지 않음암호화됨인증 확인없음양방향 인증내부 위조 요청가능불가능 (인증서 검증 실패)🛂 2. Policy 기반 접근 제어 (AuthorizationPolicy)✅ 목적네임스페이스/서비스/사용자/경로/메서드 기반으로 접근 허용 또는 차단제로 트러스트 ..
2025.04.30
no image
81~84일차) 2025-04-24 ~ 2025-04-29 [3. k8s 팀 프로젝트] - 이스티오 실습(bookinfo, MSA, 장애복구)
🔁 마이크로서비스 확장 예시https://istio.io/latest/docs/examples/bookinfo/https://feellikeghandi.tistory.com/81✅ bookinfo-gateway.yamlapiVersion: networking.istio.io/v1kind: Gatewaymetadata: name: bookinfo-gatewayspec: # The selector matches the ingress gateway pod labels. # If you installed Istio using Helm following the standard documentation, this would be "istio=ingress" selector: istio: ingress..
2025.04.29
81~84일차) 2025-04-24 ~ 2025-04-29 [3. k8s 팀 프로젝트] - 이스티오 실습(book review)
📌book-serviceapp.pyfrom flask import Flask, jsonifyapp = Flask(__name__)@app.route('/books', methods=['GET'])def get_books(): books = [ {"id": 1, "title": "Clean Code"}, {"id": 2, "title": "The Pragmatic Programmer"}, {"id": 3, "title": "Refactoring"}, {"id": 4, "title": "Design Patterns"} ] return jsonify(books)if __name__ == '__main__': app.run(host='0...
2025.04.29
no image
81~84일차) 2025-04-24 ~ 2025-04-29 [3. k8s 팀 프로젝트] - 이스티오 실습(카나리 배포)
🚀 Istio 기반 Kubernetes 인프라 실습 아이디어✅ 1. 서비스 메시 기본 구성Istio 설치 (자동 사이드카 주입)기본적인 서비스 배포 (ex: nginx-v1, nginx-v2)Istio Ingress Gateway를 통해 외부 노출✅ 2. 트래픽 관리 (Canary 배포 시나리오)VirtualService / DestinationRule 사용90%/10% → 50%/50% → 100% rollout 시나리오 구현장애 유발 후 롤백 시나리오💡 nginx에 환경변수로 버전 문자열 넣어서 "v1 / v2 구분" 가능✅ 3. Observability - 모니터링 및 시각화Kiali: 서비스 메쉬 시각화Prometheus + Grafana: 트래픽, 에러율, 자원 사용량 모니터링Jaeger: ..
2025.04.29
81~84일차) 2025-04-24 ~ 2025-04-29 [3. k8s 팀 프로젝트] - 이스티오
MSA에서 istio사용하는 이유✅ MSA에서 Istio를 사용하는 이유MSA는 마이크로서비스가 분산되고 수많은 네트워크 호출을 하게 됨.👉 그걸 자동으로 통제, 보호, 관찰, 제어하기 위해 Istio 같은 Service Mesh가 필요함.📦 MSA 환경의 공통 문제점문제 예시💬 서비스 간 통신 복잡도 증가서비스 A → B → C → D 호출, 누가 실패하면 전체 영향🔐 보안 이슈서비스끼리 TLS 적용, 인증/인가가 복잡함🧪 A/B 테스트, canary 배포 어려움1%만 새 버전으로 보내야 하는데 라우팅 설정이 어렵다🔍 가시성 부족누가 누구에게 얼마나 요청했는지, 실패율은 얼마인지 알기 어려움⚠️ 복원력 설정 없음재시도, 타임아웃, Circuit Breaker를 개발자가 직접 구현해야 함✅ 그..
2025.04.29
no image
80일차) 2025-04-23(헬름 - 프로메테우스, 헬름 차트)
https://artifacthub.io/실습)릴리스를 통해 그라파나 - 프로메테우스를 구성하고 그라파나 대시보드에 접속해서 잘 되는지 확인 pro라는 별칭으로 레포 추가 root@master:~# helm repo add pro https://prometheus-community.github.io/helm-chartsroot@master:~# helm search repo stackroot@master:~# helm install pro pro/kube-prometheus-stackroot@master:~# kubectl get pod -o wide Grafana 접속을 위한 포트포워딩root@master:~# export POD_NAME=$(kubectl get pod -l "app.kubernete..
2025.04.23
no image
79일차) 2025-04-22(쿠버네티스 스케줄링 정책 - Node Selector, Affinity, taints & tolerations, 헬름 - nginx, apache, wp/db)
Node Selector노드에 key:value 형태의 label을 붙여놓고 파드를 띄울때 특정 라벨값을 충족하는 노드를 선택하는 기능라벨링 임의 지정root@master:~# kubectl label node worker-1 gpu=falseroot@master:~# kubectl label node worker-2 gpu=true라벨링 확인kubectl get nodes --show-labelsroot@master:~/mani# mkdir selectorroot@master:~/mani# cd /selectorroot@master:~/man/selectori# vi selector.yml apiVersion: apps/v1kind: Deploymentmetadata: name: my-depspec:..
2025.04.22