아키텍처NCP 환경Bastion VM : 1EANKS Cluster : Control Plane 1EA, NodePool 1EANat Gateway : 1EA## 디렉토리 tree├── bastion.tf├── data.tf├── nks.tf├── output.tf├── security.tf├── terraform.tfvars├── user_data.sh├── variables.tf├── version.tf└── vpc.tf## terraform.tfvarsvpc_name = "my-vpc"vpc_cidr = "10.10.0.0/16"subnet = [ "10.10.1.0/24", "10.10.10.0/24", "10.10.30.0/24" , "10.10.35.0/24", "10.10.50.0/24" ]..
Cloud
실습환경 Jenkins, gogs 컨테이너 생성# 작업 디렉토리 생성 후 이동mkdir cicd-labscd cicd-labs# cat docker-compose.yamlservices: jenkins: container_name: jenkins image: jenkins/jenkins restart: unless-stopped networks: - cicd-network ports: - "8080:8080" - "50000:50000" volumes: - /var/run/docker.sock:/var/run/docker.sock - jenkins_home:/var/jenkins_home gogs: container_..
GitHub ActionsGitHub Actions를 사용하여 레포지토리에서 바로 소프트웨어 개발 워크플로를 자동화, 사영자 지정 및 실행합니다.CI/CD를 포함하여 하는 작업을 수행하기 위한 작업을 검색, 생성 및 공유하고 완전히 사용자 정의된 워크플로에서 작업을 결합할 수 있습니다. [GitHub Action] - CI/CD를 포함하여 원하는 작업을 수행하기 위한 작업을 검색, 생성 및 공유하고 완전히 사용자 정의된 워크플로에서 작업을 결합할 수 있습니다. 실습 환경CSP : AWSSpec : t3.smallVM : EC2 1eaOS : Ubuntu 22.04 Python 코드 실행from http.server import ThreadingHTTPServer, BaseHTTPRequestHand..
CI/CDCI/CD는 Continuous Integration(지속적 통합)과 Continuous Deployment(지속적 배포)의 약자입니다.CI는 개발자들이 코드 변경사항을 메인 저장소에 병합하고 자동으로 테스트하는 과정을 의미하고,CD는 검증된 코드를 자동으로 개발/검증/운영 환경에 배포하는 괒어을 말합니다. 이를 통해 소프트웨어 개발의 속도와 품질을 높일 수 있습니다.특히 CI/CD는 MSA 환경에서 없어서는 안되는 하나의 프로세스로 현재 클라우드 기술에 애용되고 있습니다. CI / CD에는 여러 툴들이 존재하지만 이번 글에서는 Docker에 Jenkins와 Gogs로 테스트하도록 하겠습니다. Docker 맛보기1) 소스를 배포하기 위해 간단한 Python 파일을 만들고, Docker Imag..
Karpenter AWS에서 개발한 오픈소스 K8s의 worker node 오토스케일러Cluster Autoscaler (CA)와 비슷한 역할을 수행하지만, AWS 리소스에 의존성이 없어 JIT(Just In-Time) 배포가 가능Cluster Autoscaler은 asg 의존도가 높고, 노드 재배포 시 rolling 되고, 진행 중 작업자 개입이 어렵고, OS Userdata 설정이 필요할 경우 Launch template을 별도 설정해야함.오픈소스이기 때문에 주요 CSP 및 on-prem 환경을 포함함Karpenter 동작 방식운영 부담 절감신속한 Node 추가와 제거자동 Node 롤링 (TTL)다양한 인스턴스 타임을 쉽게 적용빠른 버전 업데이트AWS 의존성을 제거함Auto scaling group ..
환경 구성구성 : VPC 1ea, Pub Subnet 3ea, Priv Subnet 3ea, EKS (Worker node 3ea) AWS VPC CNI참고 URL : https://trans.yonghochoi.com/translations/aws_vpc_cni_increase_pods_per_node_limits.ko- K8s CNI는 Container Network Interface로 Kubernetes 환경의 네트워크를 위한 구성이다.이를 통해 다양한 플러그인, 오브젝트간의 통신 같은 네트워크 통신이 이뤄진다. AWS VPC CNI는 VPC Container Network Interface로 Kubernetes의 오브젝트들이 VPC 대역의 IP를 갖을 수 있도록 해주는,플러그인입니다. 파드 내부는..
노드 간 파드 통신 확인 파드 생성 및 확인apiVersion: v1kind: Podmetadata: name: netpod labels: app: netpodspec: nodeName: k8s-s containers: - name: netshoot-pod image: nicolaka/netshoot command: ["tail"] args: ["-f", "/dev/null"] terminationGracePeriodSeconds: 0---apiVersion: v1kind: Podmetadata: name: webpod1 labels: app: webpodspec: nodeName: k8s-w1 containers: - name: container i..
Cilium 이란?Cilium은 eBPF(Berkeley Packet Filter)를 기반으로 구성된 CNI Plugin입니다.Kubernetes 클러스터와 같은 컨테이너 환경을 위해 뛰어난 확장성과 효율적인 네트워크 및 보안 정책을 제공합니다. Cilium eBPF는 추가적인 App 이나 설정 변경 없이 리눅스 커널을 자유롭게 프로그래밍하여 동작 할 수 있습니다.또, Cilium은 iptables를 이용한 Kubernetes 트래픽 라우팅의 단점을 보완하여 네트워크 성능을 높혀줍니다. 일반적인 Linux Network Stack은 Process에서 시스템 콜을 날리면 소캣을 타고 유저 네임스페이스를 통해 네트워크 디바이스로 나갔습니다. 하지만 eBPF는 Kernel에 Sandbox 형태로 설치되기 때문..
동작 소개 : 클라이언트 PC → Istio ingressgateway 파드 → (Gateway, VirtualService + DestinationRule) → Cluster - Gateway : 지정한 인그레스 게이트웨이로부터 트래픽이 인입, 프로토콜 및 포트, Hosts, Proxy 등 설정 가능- VirtualService : 인입 처리할 Hosts 설정, L7 Path 별 라우팅, 목적지에 대한 정책 설정 가능 - Docs- VirtualService 는 DestinationRule 에서 설정된 Subset을 사용하여 트래픽 컨트롤을 할 수 있다.- Routing rules : HTTP의 경우 - Match 필드, Destination(Istio/envoy 에 등록된 대상, Subnet에 Des..
Bookinfo- ProductPage 페이지에서 요청을 받으면, 도서 리뷰를 보여주는 Reviews 서비스와 도서 상세 정보를 보여주는 Details 서비스에 접속- ProductPage는 reviews와 Details 결과를 사용자에게 응답한다.- Reviews 서비스는 v1, v2, v3 세 개의 버전이 있고 v2, v3 버전의 경우 Ratings 서비스에 접소갛여 도서에 대한 5단계 평가를 가져옴- Reviews 서비스의 차이는, v1은 Rating 이없고, v2는 검은색 별로 Ratings 가 표시되며, v3는 색깔이 있는 별로 Ratings 가 표시 실습 시작예제 yaml은 istioctl 설치 시 포함되어 있는 bookinfo 예제입니다.# 모니터링$ watch -d 'kubectl get ..