eBPF(extended Berkeley Packet Filter)eBPF는 샌드박스(Sandbox) 기술을 사용해서 커널에서 안전하게 사용자 프로그램을 실행할 수 있도록 하는 기술입니다. eBPF 프로그램은 JIT(Just-In-Time) 컴파일러에 의해 런타임에서 프로그램을 커널에 로드하고, 빠르게 동작시킬 수 있습니다. 또한 JIT 컴파일러를 거치기 전에, Verifier를 통해 검증되기 때문에, 프로그램이 커널에 손상을 주거나 시스템을 불안정하게 만들 가능성을 줄입니다.얼마 전, 크라우드 스트라이크 사태에서도, 윈도우의 업데이트 패치에서 커널을 잘못건드려 전 세계 시스템이 마비가 된 적이 있습니다. 이처럼 커널을 제어하는 것은 매우 어려운 일이며, 안전하고 빠른 프로그램을 만들 수 있는 eBPF가..
Kubernetes
Kubernetes IngressIngress쿠버네티스 인그레스(Ingress)는 클러스터 외부의 트래픽을 내부 서비스로 라우팅하는 중요한 API 객체입니다.클러스터 내의 서비스에 외부에서 접근하기 위해 NodePort나 LoadBalancer를 사용할 수 있지만, Ingress를 이용하면 더 효율적이고 유연하게 트래픽을 관리할 수 있습니다.Ingress는 경로 기반 및 호스트 기반의 라우팅 규칙을 설정할 수 있습니다.TLS 인증서를 활용해 HTTPS 트래픽을 처리할 수 있어 복잡한 웹 애플리케이션 환경에서도 효과적인 트래픽 관리가 가능합니다.https://kubernetes.io/docs/concepts/services-networking/ingress/Ingress-Controller인그레스 컨트롤러..
Calico CNI란?Calico CNI는 컨테이너 오케스트레이션 플랫폼에서 사용되는 네트워크 및 보안 솔루션인Calico의 Container Network Interface(CNI) 플러그인입니다. 주로 Kubernetes와 같은 플랫폼에서 파드(Pod) 간의 네트워크 연결을 제공하고, 네트워크 정책을 통해 보안을 관리하는 데 사용됩니다. Calico 기본 통신 이해 1. 동일 노드 간 파드 통신 노드(k8s-w1)에 파드 2개 생성# node1-pod2.yamlapiVersion: v1kind: Podmetadata: name: pod1spec: nodeName: k8s-w1 containers: - name: pod1 image: nicolaka/netshoot command:..
1. K8S 인증/인가 K8S 인증/인가 쿠버네티스 API 서버에 대한 인증 및 인가에 대해 설명합니다. 인증(Authentication) 인증은 접근하려는 사용자의 신분을 확인하는 과정입니다. 쿠버네티스에서는 대표적으로 아래 3가지 방식의 인증을 지원합니다. X509 Client Certs kubectl Service Account X509 Client Certs kubeconfig에 CA crt(발급 기관 인증서) , Client crt(클라이언트 인증서) , Client key(클라이언트 개인키)를 통해 인증합니다. kubectl 러 클러스터(kubeconfig)를 관리 가능 - contexts 에 클러스터와 유저 및 인증서/키 참고합니다. Service Account 서비스 계정에 부여된 API ..
가시다님이 진행하시는 AEWS(AWS EKS Workshop Study) 내용 정리입니다. On-Premise Kubernetes 환경이 아닌 EKS(Managed Kubernetes)는 접해보지 못하였는데, 이번 기회에 학습할 수 있는 기회를 주신 가시다님에게 다시 한번 감사드립니다. EKS 설치 개요 실습 과정은 다음과 같습니다. CloudFomation을 통해 작업용 EC2(Bastion) 서버와 VPC, 보안그룹 등을 생성합니다. 1번 과정은 생략하겠습니다. 작업용EC2(Bastion) 서버에서 eksctl 명령어를 이용하여 EKS를 구축합니다. eksctl로 EKS 배포하기 커맨드 편의성 위해서 필요한 매개 변수들을 변수에 저장합니다. eksctl create cluster 명령어를 통해서 ek..
시험과 관련된 자세한 팁과 후기는 많은 분들이 남겨주셨기 때문에, 이번 포스팅은 시험에 대한 개인적인 회고에 대해 포스팅합니다. 할 일 미루지 않기1. 시험 플랫폼 변경2022년, 쿠버네티스를 업무에서 처음 사용하였을 무렵, 개념 공부를 위해 CKA 할인 기간에 결제를 해놓았었다. 그 당시 시험 환경에서는 쿠버네티스 공식문서를 북마크 할 수 있게 허용 해주어서, 시험범위에 나오는 공식문서 페이지들을 미리 북마크로 정리해놓을 수 있었다. 나 또한 그렇게 준비를 해놓고 있었는데, 바쁘단 핑계로 시험을 미루고 미루다가 결국 시험플랫폼이 변경되었고, 시험 방식이 달라져서 준비를 다시 해야했기 때문에 응시를 미루기로 하였다. 2. 시험 플랫폼의 SSO 로그인 문제 발생2023년, 다시 시험 예약을 하려고 하였는데..
개요 Harbor는 오픈소스 이미지 레지스트리로 쿠버네티스와 같은 컨테이너 환경에서 중요한 인프라이니 만큼 가용성이 중요하다. 고객의 Harbor의 가용성 요구사항을 위해 아래 두 가지 방법을 고려하였다. 1. 고가용성(HA) 구성 2. 예비(DR) 하버 구성 첫 번째 방법은 Harbor의 HA(고가용성)을 구성하는 것이다. Harbor는 컨테이너 형태의 docker-compose, Helm chart의 두 가지 설치만을 지원한다. 그렇기 때문에 Harbor에서 내부에서 사용되는 nginx와 같은 stateless 한 서비스들은 레플리카 수를 늘려 쉽게 이중화가 되지만, Harbor가 사용하는 Redis와 Postgres는 HA를 자체적으로 지원하지 않기 때문에 직접 구성하여 External Databa..
목표 ArgoCD Image Updater를 이용해서 GitOps가 아닌 RegistryOps CD를 구축합니다. Harbor(Private Registry)와 연동하여 Helm Application을 배포 해봅니다. ECR의 경우 포스팅을 잘해주셔서 아래 글을 참고하시면 될 것 같습니다 https://velog.io/@junsugi/Argo-CD-Image-Updater-사용하기-with.-AWS-EKS#결론 설치 argocd image updater를 설치합니다. kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj-labs/argocd-image-updater/stable/manifests/install.yaml # 설치 확인 ..