본문 바로가기

전체 글

(30)
kubernetes rbac k8s 운영을 진행하면서 각팀별로 사용하는 namespace가 각각 존재A팀 - a namespace,B팀 - b namespace,...등등을 사용을 하는데,각 팀별로 본인의 팀의 namespace만 접근하여 작업을 진행해야 한다 운영 환경에서 A팀원이 B팀의 namespace에 접근하여 서비스 운영중인 pod에 접근하여 서비스를 죽이거나 그렇게 하면 안된다그래서 각 팀별로 설정을 진행해줘야 하는데, k8s에서는 rbac 으로 해당 설정을 진행한다 rbac 이란?role-based access control(rbac) 사용자, 그룹 또는 서비스 계정(SA)에 클러스터 내의 리소스에 대한 접근을 제어하는 방법'어떤 역할(Role)이 어디서(ns) 무엇을 어떻게(create, delete, ...) 하냐..
Kubernetes (5) CI/CD Jenkins + ArgoCD // jenkins 배포 // jenkins 배포 및 초기 설정// gogs 배포, 컨테이너 초기 설정 dev-app, ops-deploy // dev-app, ops-deploy 저장소 생성
Kubernetes PVC/PV kubernetes의 특징에서 '휘발성'이라는 점이다.즉, 파드는 언제든 죽거나 재시작 될수 있다. 이때 새로 재시작을 하면서 초기의 설정값을 가지고 시작하기 때문에, 기존에 실행하면서 만들어진 로그, 데이터, 설정, ... 등이 다 초기화가 된다는 것이다.그럼 파드에 DB를 띄웠다 라고 가정을 했을때, 만약 파드가 재기동 되면 어떻게 될까?파드가 재기동되면서 완전 새로운 DB의 파드가 띄워지고, 기존에 데이터들은 다 날라간다.운영환경에서는 엄청난 이슈이다. 그래서 이와 같은 문제를 해결 하기 위하여, PV(PersistentVolume), PVC(PersistentVolumeClaim)가 있다. Docker의 볼륨 마운트와 비슷한 개념이다. PV : 데이터를 저장할 볼륨. 사용할 스토리지를 생성하여 클..
OpenVPN 구축 현재 진행중인 규모가 큰 프로젝트에 투입되어서 진행중인데, 이 프로젝트에서 OpenVPN을 사용중이었다. OpenVPN은 단순 우회하는 용도로만 생각했었는데, 실무에서 사용하는 것을 보고 관심이 생겨 집에서 혼자 공부하며 구축을 진행해보려고 한다. OpenVPN 이란?가상사설망(VPN, Virtual Private Network)는 별도의 사설 전용망 없이도 암호 기술에 기반한 터널링(tunneling) 프로토콜을 이용해 지점간을 연결함으로써, 저렴한 비용으로 원거리 통신망(WAN)을 구축할 수 있는 네트워크 솔루션전송하는 데이터를 암호화하여 해커 등 공격자들이 정보를 훔쳐보지 못하게 함. sudo dnf install epel-release -ysudo dnf install openvpn easy-rs..
Kubernetes 환경 변수 설정(Configmap, Secret) Configmap애플리케이션의 설정 값을 컨테이너에 주입하고 싶을 때 사용하는 리소스데이터베이스 주소, 외부 api 엔드 포인트등을 별도로 관리 할수 있게 해주는 저장소 이다. Dockerfile에서 ENV 설정 하는것 처럼 kubernetes에서 Configmap에서 환경변수를 설정할 수 있다.차이는 Dockerfile에서의 ENV설정은 이미지 생성 시점에 환경변수 설정을 진행하고,Configmap은 컨테이너 실행 시점에 환경변수를 설정을 진행한다.Secret민감 정보를(사용자 이름, 암호 등)를 안전하게 괸라히고, 컨테이너에 파일 형태로 전달하는 역할.Configmap과 유사하지만, 보안이 필요한 데이터를 다룬다.Secret에 데이터를 저장하면, Kubernetes는 자동으로 해당 데이터를 Base6..
※ Kubernetes Probe 응용 Kubernetes Probe (CrashLoopBackOff) Kubernetes Pod에 자가치유(self-healing) 기능으로, pod 기동중에서 running 상태에 도달 하지 못하고 CrashLoopBackOff 상태로 빠져 무한 재기동에 빠지는 현상이 생기는 경우도 종종 있다. Startup Probe는 failureThreshold * periodSeconds 동안 검사를 시작한다.Startup Probe는 최초기동시 수행하며, 실패시 파드를 재시작 한다.이 과정이 계속 반복되면 무한 재기동(CrashLoopBackOff) 상태가 된다. apiVersion: apps/v1kind: Deploymentmetadata: name: startup-fail-examplespec: replic..
Kubernetes Probe 파드의 생명주기는 Pending, Running, Succeeded, Failed등이 있다.Pending파드가 쿠버네티스 클러스터에서 승인 되었지만, 하나 이상의 컨테이너가 설정되지 않았고 실행할 준비가 되지 않음.Running 파드가 노드에 바인딩되었고, 모든 컨테이너가 생성. 적어도 하나의 컨테이너가 아직 실행 중이거나, 시작 또는 재시작중Succeeded 파드에 있는 모든 컨테이너들이 성공적으로 종료되었고, 재시작되지 않은 상태Failed 파드에 있는 모든 컨테이너가 종료되었고, 적어도 하나 이상의 컨테이너가 실패로 종료. 해당 컨테이너는 non-zero 상태로 빠져왔거나(exited) 시스템에 의해서 종료. 쿠버네티스는 각 컨테이너의 상태를 주기적으로체크해서, 문제가 있는 컨테이너를 자동으로 재시..
Kubernetes Update Rolling Update strategy애플리케이션을 업데이트 하는 가장 단순한 방법은 현재 실행중인 버전을 중지하고 신버전을 시작한다.하지만 이렇게 진행하였을 경우 서비스 다운 타임이 발생합니다. 롤링 업데이트는 다운 타임을 없애기 위해 설계된 쿠버네티스의 배포 전략이다.쿠버네티스에서 실행중인 애플리케이션을 무중단 업데이트로, 새로운 버전을 점진적으로 업데이트를 진행하는 배포 전략이다.RollingUpdate의 목표는 지속적인 서비스 제공, 최소한의 컴퓨팅 리소스를 사용하는 것이다. 롤링 업데이트는 새 버전의 파드를 먼저 생성하고, 완료되면 이전 파드를 종료하는 것을 반복하여 진행이때, 주의하여야 할 부분이 업데이트 작업이 완료되기 전까지 두 버전이 공존예를 들어, v1의 파드 3개를 가지고 서비스를..