전체 글

·Cloud/Kubernetes
실습 환경은 Kind를 이용해서 진행했습니다. ServicePod 집합과 같은 어블리케이션에 접근 경로나 Service Discovery 제공Pod를 외부 네트워크에 연결하고, pod로의 연결을 로드밸런싱하는 네트워크 오브젝트하나의 Microservice 단위서비스이름.네임스페이스.svc.cluster.local 이라는 FQDN 생성껍데기만 있는 추상적인 객체Kubernetes의 Pod는 Lifecycle 혹은 어떤 이유에 따라 언제든 재시작이 발생할 수 있습니다.Computing 측면에서는 이를 방지하기 위해 Deployment가 그룹으로 Pod를 정의된 숫자만큼 보장하고 있습니다. 그렇다면 Computing resource 측면에서 Deployment가 이를 보장해준다면 Networking 측면에서는..
·Cloud/Kubernetes
IPIP 모드 IPIP는 위 그림과 같이 통신이 이뤄지며, 노드가 서로 다른 L3 네트워크에 있을 때 유용하고,원본 IP 패킷을 다른 IP 패킷 내에 캡슐화하여 사용합니다.또 거쳐가는 구간이 있어 약간의 오버헤드가 발생합니다. (tunl0, nic-nic) IPIP에 대한 실습은 이전 게시글에서 진행했으므로 아래 링크를 참고하시기 바랍니다.https://ssungz.tistory.com/43 Direct 모드 Direct mode는 calico가 노드 간에 직접 ip 라우팅을 사용합니다, 통신 플로우가 매우 단순하고 캡슐화가 없기 때문에 오버헤드가 거의 없기 때문에 IPIP에 비하면 빠른 편에 속합니다.캡슐화가 없기 때문에 목적지 pod에서 출발지 pod의 ip가 확인됩니다. AWS에서 다이렉트 모드를 ..
·Cloud/Kubernetes
Calico CNICalico는 쿠버네티스 뿐만 아니라 오픈시프트, 도커EE, 오픈 스택과 같은 서비스를 지원하는 Network 플러그인입니다.주로 대규모 클러스터에서 효율적으로 작동하고, 네트워크 정책을 통한 마이크로 세그맨테이션을 지원합니다.최근?에는 eBPF를 지원하므로 네트워킹 성능을 크게 향상 시켰습니다. eBPF의 장점은 네트워크 경로가 단순화되어 지연 시간이 감소하고, 처리량이 증가됩니다.더 세밀한 네트워크 정책 적용이 가능합니다.실습 환경 구성실습은 AWS 환경에서 EC2를 통해 진행했으며, 실습 구조는 아래와 같습니다.AWS 환경에서 테스트를 진행하므로 route 전용 노드는 제외했습니다.  CNI 설치가 아직 되지 않아, node의 상태가 NotReady로 되어있습니다.내부에서 ip 관..
·Cloud/Kubernetes
쿠버네티스 네트워킹 요구 사항쿠버네티스 네트워크 모델은 아래 4가지 요구사항이 있습니다.1. 모든 pod는 서로 통신할 수 있어야하고, 모든 pod는 nat없이 서로 직접 통신이 가능해야합니다.2. 모든 node는 nat없이 pod와 통신할 수 있어야 합니다.3. pod는 자신이 인식하는 자기의 ip와 다른 pod가 인식하는 자신의 ip가 동일해야 합니다. 또, 쿠버네티스는 아래 4가지의 문제를 해결해야합니다. 1. 컨테이너 간 루프백 통신2. 파드 간 통신3. 파드에서 서비스를 통한 통신4. 외부에서 서비스를 통한 통신 Flannel CNIFlannel은 단일 바이너리 에이전트 데몬이 각 노드에서 동작하며 주로 소~중 규모의 클러스터나 간단한 네트워킹이 필요할 때 사용합니다.Flannel은 UDP를 이..
·Cloud/Kubernetes
kind Kubernetes in Docker(Kind)는 로컬 개발 환경에서 Kubernetes 클러스터를 쉽게 실행할 수 있게 해주는 도구입니다.  Docker 컨테이너를 사용하여 전체 VM보다 적은 리소스 사용하며, 실제 Kubernetes와 유사하게 사용할 수 있습니다.또 여러 Kubernetes 버전 테스트 가능합니다. 단, LB와 영구 볼륨 사용에 제약이 있기도 합니다. 아래와 같은 목적으로 주로 사용됩니다. - 로컬 개발 환경에서 Kubernetes 애플리케이션 테스트- CI/CD 파이프라인에서 Kubernetes 배포 테스트- Kubernetes 관련 도구나 오퍼레이터 개발 및 테스트 퍼블릭 클라우드의 managed k8s 상품을 사용하기에 비용 부담이 있고,로컬에서 가상 환경을 통해 설치..
·Linux
이전 게시글에서는 Mount, pid, namespace, ipc, cgroup를 사용한 격리 방법에 대해 작성하였습니다.이번에는 네트워크 네임스페이스를 통해 격리하고 컨테이너 간의 통신 방법에 대해 작성하겠습니다. 네트워크 네임스페이스란?[BLOG]네트워크 네임스페이스는 논리적인 네트워크 네임스페이스를 만들고 라우팅, 가상IP 등 네트워크 구성요소를 조합하여 논리적으로 네트워크를 격리시킵니다. 네트워크를 논리적으로 격리시킴으로써 호스트 네트워크에 직접적인 영향을 최소화합니다.  RED BLUE 네트워크 네임스페이스 간 통신 Step 1) veth (가상 이더넷) 생성# veth 생성$ ip link add veth0 type veth peer name veth1# 생성한 veth를 확인합니다$ ip ..
·Linux
Docker?- 도커(Docker)는 가상실행 환경을 제공해주는 오픈소스 플랫폼입니다. 도커에서는 이 가상실행 환경을 '컨테이너(Container)'라고 합니다.  - 도커는 컨테이너라는 단위로 패키징되고, 가상화보다 가볍고 효율적이기도 합니다.- 또 MSA 환경에서 빼놓을 수 없는 개념입니다. Container?- Container는 어플리케이션과 그 실행에 필요한 의존성을 포함하는 경량화된 독립 실행 환경입니다.- 호스트 OS와 커널을 공유하면서도 프로세스, 파일 시스템, 네트워크를 다른 컨테이너와 격리하여 실행합니다.- 일관된 환경을 제공하여 개발, 테스트, 배포 과정에서 개발자들의 단골 멘트인 "내 컴퓨터에서는 작동했는데" 문제를 해결하고 이식성을 높입니다. Docker와 Container컨테이너..
·Python/Automation
개요프로젝트에 사용되는 계정 요금 확인이 주기적으로 필요했습니다.지원팀은 일반 사무직군으로 하나씩 접속해서 확인할 계획을 가지고 있었습니다.바로 옆자리에서 지켜보니 사람 손으로 확인하기에는 계정이 많아(대략 100개..?) 달에 한번만 확인하려 했습니다.옆에서 스트레스 받고 있는 걸 보니, 도움을 주고 싶어 자동화를 해보기로 결정했습니다. 동작 방식Naver Cloud에서 제공하는 API를 통해 비용을 가져와야 하기 때문에 각 계정에 API Key가 필요했습니다.먼저 엑셀에 아래와 같은 유형으로 계정명, accesskey, secretkey가 입력되어야 합니다. api key는 클라우드 운영에 있어서 매우 민감 정보로 문서에 암호를 지정하지 않을 수가 없었고,암호를 코드 내에서 해제하기로 하였습니다. 패..
·Python/MLAL
Numpy는?Numpy는 행렬이나 일반적으로 대규모 다차원 배열을 쉽게 처리할 수 있도록 지원하는 파이썬의 라이브러리이다.Numpy는 주로 데이터 분석, 데이터 처리, 선형 대수, 머신 러닝 등 여러 분야에서 사용되고 있습니다.Numpy 설치해보기Numpy는 Python 라이브러리이기 때문에 Python의 패키지 관리자인 pip을 통해 설치가 가능합니다.(pip가 설치되지 않았을 경우 pip를 먼저 설치합니다.)$ pip install numpy Numpy 배열 생성해보기Numpy에서 가장 기본 구조는 배열로 이루어져 있으며, 동일한 타입의 데이터를 담는 다차원 배열입니다.np.array 클래스를 통해 배열을 생성할 수 있습니다.import numpy as np# 1차원 배열 생성a = np.array(..
·Cloud/Terraform
OpenTofu는?https://opentofu.org/docs/Hashicorp에서 Terraform의 라이센스를 MPL(Mozilla Public License)에서 BUSL(Business Source License) 비오픈 라이센스로 변경하였고, 이에 대한 대응으로 탕생하게 되었습니다. 물론 이것이 Terraform의 인기를 반증한다고 할 수 있으며, Terraform을 포크한 오픈 소스이기 때문에 Terraform의 구성과 워크플로에 호환됩니다. 현재는 버전 차이가 크지 않아 업데이트에 잘 따라가고 있으나, 회사와 같은 기술 로드맵이 있지 않으며 업데이트가 늘어날 수록 기능에 차이가 생길 것으로 예상됩니다. Oracle 역시 기업용 제품 라인업에서 Terraform을 Opentofu로 대체되었습..
ssungz
끄적끄적 블로그