본문 바로가기
반응형

전체 글135

쿠버네티스 클러스터 구성(마스터 노드, 워커 노드) 1. 마스터 (노드) : 클러스터를 관리 - 노드들의 상태를 관리하고 제어한다. - 쿠버네티스의 데이터 저장소로 사용하는 etcd를 함께 설치하거나 별도 노드에 분리해서 설치하기도 한다. - 상용 서비스라면 보통 고가용성을 고려해 3대나 5대로 구성한다. (많다고 성능이 향상되는 건 아님) - kube-controller-manager가 활성화 상태로 동작할 수 있는 리더 마스터 노드는 1대 (나머지는 대기) - etcd, kube-apiserver, kube-scheduler, kube-controller-manager, kubelet, kube-proxy, docker 등의 컴포넌트가 실행됨 2. (워커) 노드 : 실제 컨테이너를 실행시킴 - 초기에는 미니언이라고 불림 - 마스터 노드의 명령을 받아 .. 2022. 12. 27.
클라우드 서비스에서 제공하는 쿠버네티스 도구 & 쿠버네티스 클러스터를 직접 구성하는 도구 각 클라우드 서비스에서 제공하는 관리형 쿠버네티스 도구는 쿠버네티스 클러스터를 전반적으로 관리(업그레이드, 백업, 복구 등)해주므로 번거로운 인프라 구성과 클러스터 관리를 신경 쓰지 않고 쿠버네티스의 기능만 사용하면 된다. 1. 구글 쿠버네티스 엔진 2. 아마존 쿠버네티스 일래스틱 컨테이너 서비스 3. 마이크로소프트 애저 쿠버네티스 서비스 사내 서버 자원에 쿠버네티스 클러스터를 직접 구성하거나, 규칙 준수 이슈를 해결할 때 활용하기 위해서 활용하는 도구들 1. Kubeadm : 쿠버네티스에서 공식 제공하는 클러스터 생성/관리 도구 Kubeadm 고가용성 분류 - 스택 etcd 여러 대의 마스터 노드를 구성하고 그 앞에 로드밸런서를 둔다. 워커 노드들이 마스터 노드에 접근할 때는 로드밸런서를 거쳐 접근한다.. 2022. 12. 27.
쿠버네티스 특징 1. 선언적 API - 컨테이너가 어떤 상태이길 원하는지만 쿠버네티스에 설정하면 지속해서 컨테이너의 상태를 확인하고 맞춘다. 2. 워크로드 분리 - 쿠버네티스는 운영체제처럼 분산된 프로세스의 관리를 추상화하는 레이어가 됨 3. 어디서나 실행 가능 - 개인 컴퓨터에 쿠버네티스를 설치해서 사용해 볼 수 있고, 퍼블리 클라우드에서도 실행할 수 있으며, 단순한 테스트는 웹에서 사용해볼 수 있다. 4. 커뮤니티 - Kubernetes-users / kr-users 2022. 12. 27.
컨테이너 오케스트레이션 시스템 여러 대의 서버를 이용해서 하나의 상용 서비스를 구성한다. 이런 상용 서비스 구성에서 컨테이너만 단독으로 사용한다면 서버에 장애가 발생했을 때 해당 서버의 컨테이너를 다른 서버로 옮기는 등의 작업이 필요해진다. 하지만 컨테이너 오케스트레이션 시스템을 사용하면 수동 제어 부분 모두를 자동화하므로 시스템 운영이 훨씬 수월해진다. 컨테이너 오케스트레이션 시스템으로 상용 서비스에 사용할 서버들을 클러스터로 구성하면 한 번의 명령으로 자동 배포할 수 있다. (클러스터 : 여러 대의 서버를 묶어 시스템 하나로 구성하는 방식) 그리고 사용 중인 클러스터 일부에 장애가 발생하면 오케스트레이션 시스템은 알아서 장애가 발생한 서버에 있는 컨테이너들을 정상 운영 중인 다른 서버로 옮겨서 실행시킨다. 2022. 12. 27.
가상 머신과 컨테이너 비교 기존에 가상화나 클라우드 컴퓨팅을 설명할 때는 가상 머신을 많이 언급했다. 하지만 요즘은 가상 머신 < 컨테이너 이다. 컨테이너로 구성한 애플리케이션 앱A 앱B 앱C 앱D 앱E 앱F 도커 호스트 운영체제 인프라스트럭처 가상 머신으로 구성한 애플리케이션 가상 머신 가상 머신 가상 머신 앱A 앱A 앱A 게스트 운영체제 게스트 운영체제 게스트 운영체제 하이퍼바이저 인프라스트럭처 컨테이너가 구조상 레이어가 더 간단하므로 가상머신보다 성능을 높이기 쉽다. 컨테이너가 새로운 것은 아니지만 도커가 컨테이너를 사용하기 편하게 만들면서 애플리케이션 개발 과정 전체에 혁신을 가져왔다. 컨테이너를 이용하면 개발 환경과 운영 환경의 차이 때문에 일어나는 많은 장애를 막을 수 있다. 2022. 12. 26.
2023년 주니어 개발자 목표 보호되어 있는 글 입니다. 2022. 12. 26.
적절한 인증 없는 중요기능 허용 - 안전하다고 확인된 라이브러리나 프레임워크를 사용한다. 즉, OpenSSL 이나 ESAPI의 보안기능을 사용한다. 안전하지 않은 코드 ▼ public void sendBankAccount(String accountNumber, double balance) { BankAccount account = new BankAccount(); account.setAccountNumber(accountNumber); account.setToPerson(toPerson); account.setBalance(balance); AccountManager.send(account); } 안전한 코드 ▼ public void sendBankAccount(HttpServletRequest request, HttpSession s.. 2022. 11. 21.
무결성 점검 없는 코드 다운로드 - 원격으로부터 소스 코드 또는 실행파일을 무결성 검사 없이 다운로드하고, 이를 실행하는 경우 host server의 변조, DNS spoofing 또는 전송 시의 코드 변조 등의 방법을 이용하여 공격자가 악의적인 코드를 실행할 수 있다. - SW의 자동 업데이트와 같이 다운로드될 코드를 제공할 때는 코드에 대한 암호화된 시그니처를 사용하고 클라이언트가 시그니처를 검증하도록 한다. 안전하지 않은 코드 ▼ URL[] classURLs = new URL[]{new URL("file:subdir/")}; URLClassLoader loader = new URLClassLoader(classURLs); Class loadedClass = Class.forName("MyClass",true,loader); 안전한.. 2022. 11. 21.
프로세스 제어 - 신뢰되지 않은 소스나 신뢰되지 않은 환경으로부터 라이브러리를 적재하거나 명령을 실행하면, 악의적인 코드가 실행될 수 있다. - 프로그램 내에서 라이브러리를 적재할 때 절대경로를 사용한다. 안전하지 않은 코드 ▼ Runtime.getRuntime().loadLibrary("libraryName"); 안전한 코드 ▼ Runtime.getRuntime().loadLibrary("/usr/lib/libraryName"); 해시테이블을 이용해 정해진 이름의 라이브러리만이 정해진 절대경로를 통해 로딩 가능하도록 설계 import java.io.*; import java.net.URLDecoder; import java.sql.*; import java.util.*; import javax.servlet.*; p.. 2022. 11. 18.
크로스 사이트 스크립트 공격 취약점: DOM - 외부에서 입력되는 스크립트 문자열이 웹페이지 생성에 사용되면 생성된 웹페이지를 열람하는 사용자에게 피해를 입힐 수 있다. - JSP의 document.write()메소드와 같이 JSP의 DOM 객체 출력을 수행하는 메소드의 인자값으로 외부의 입력을 사용할 경우 위험한 문자를 제거하는 과정이 수행되어야 한다. 1. 특수 문자 치환 String name = request.getParameter("name"); if( name != null ) { name = name.replaceAll("",">"); name = name.replaceAll("&","&"); name = name.replaceAll("\"","""); name = name.replaceAll("\'","&#x27;"); name = n.. 2022. 11. 18.
반응형