분류 전체보기

    HTTPS와 SSL 인증서

    SSL 위에서 https 동작 SSL과 TLS는 같은 말이다. 하지만 TLS라는 이름보다 SSL이라는 이름이 훨씬 많이 사용되고 있다. SSL 동작방법 클라이언트가 서버로 데이터를 전송할 때는 서버가 제공한 공개키로 암호화해서 데이터 전송, 서버는 데이터를 받아서 자신이 가지고 있는 개인키로 복호화 하면 됨 공개키 방식은 암호화하고 복호화하는 방식에서 컴퓨팅파워를 많이사용하여 성능상 많은 단점이 있음 결론적으로 두가지 방식을 혼합하여 사용 (공개키 + 대칭키) 실제 데이터 : 대칭키 대칭키의 키 : 공개키 컴퓨터과 컴퓨터가 네트워크를 이용해서 통신을 할 때는 내부적으로 3가지 단계가 있다. 악수 -> 전송 -> 세션 종료 1. 악수(handshake) 사람과 사람이 소통을 할 때를 생각해보자. 인사를 통..

    공개키(Public Key)와 개인키(Private Key)

    공개키는 은행의 계좌번호화 유사하고, 개인키는 비밀번호 PIN과 유사하다. 대칭키(개인키)와 비대칭키(공개키) 대칭키 암호화 복호화 할 때 사용하는 키가 동일한 경우, 1개의 키 사용 내가 어떤 키로 암호화 했다면 수신자도 같은키를 갖고 있어야 한다. 예) 철수: 평문 -> 대칭키로 암호화 -> 암호문 / 영희 : 암호문 -> 대칭키로 복호화 -> 평문 비대칭키 사용하는 키와 복호화할 때 사용하는 키가 다른 경우 타인에게 절대 노출되어서는 안되는 비밀키(개인키), 비밀키를 토대로 만든 공개키가 쌍을 이룬 형태 2개의 키 사용 공개키 - 사람들에게 공개된 키이며 정보를 암호화할 수 있다. 비밀키 - 사용자만 알고 있는 암호를 풀 수 있는 키 예) 철수: 평문 -> 영희의 Public Key로 암호화 -> ..

    [kubernetes] Volume

    볼륨 컨테이너는 기본적으로 상태가 없는 앱 컨테이너를 사용한다. 상태가 없다는 것은 컨테이너에 문제가 있거나, 노드에 장애가 발생해서 컨테이너를 새로 실행했을 때 다른 노드로 자류옵게 옮길 수 있다는 뜻이다. 이것이 컨테이너의 장점이다. 하지만 어떤 이유로든 컨테이너가 실행되지 않거나 삭제되었을 때 현재까지 저장한 데이터가 사라진다는 단점이 있다. 앱의 특성에 따라서 컨테이너에 문제가 생기더라도 데이터를 보존해야 할 때가 있다. 대표적 수단으로 데이터를 파일로 저장한느 젠킨스가 있다. MySQL 같은 데이터베이스도 컨테이너를 종료하거나 재시작했더라도 데이터가 사라지면 안된다. 이런 상황에서 볼륨을 사용한다. 볼륨을 사용하면 컨테이너를 재시작하더라도 데이터를 유지한다. 퍼시스턴트 볼륨을 사용하면 데이터를 ..

    [kubernetes] 파드 스케줄링

    쿠버네티스에서는 파드를 어떤 노드에 실행할 것인지에 관한 다양한 옵션이 있다. 이 옵션을 조합해서 사용자가 원하는 구조대로 클러스터 안에 파드들을 배치할 수 잇다. 특정 파드들을 노드 하나에 모아두거나 특정 IP대역의 노드들에서만 실행할 수도 있고, 반대로도 설정할 수 있다. 같은 기능이 있는 파드들이 노드 하나에 몰려있지 않게 골고루 분산해서 실행할 수도 있다. 관리가 필요한 노드가 있을 때 해당 노드에 있는 파드들을 다른 노드로 옮길 수도 있다. 1. 노드 셀렉터 가장 간단한 스케줄링 옵션으로는 파드의.spec 필드에 설정할 수 있는 노드셀렉터가 있다. 용어 그대로 노드를 선택하는 기능 파드가 클러스터 안 어떤 노드에서 실행될지를 키-값 쌍으로 설정한다. kubectl get nodes --show-..

    [kubernetes] 사용자 권한 (keycloak)

    kubernetes 권한관리 ABAC (Attribute based access control) 속성 기반 권한 관리 사용할 수 있는 속성 : 사용자, 그룹, 요청 동사 권한 설정 내용을 파일로 관리하므로 권한을 변경하려면 직접 마스터에 접속해서 파일을 변경할 수 kube-apiserver 컴포넌트를 재시작해야 하므로 관리하기 번거롭다. RBAC (Role based access control) 역할 기반 권한 관리 대부분의 권한 관리 시스템에서 많이 사용 사용자와 역할을 별개로 선언한 후 두 가지를 조합해서 사용자에게 권한을 부여한다. ABAC처럼 마스터에 접근할 필요 없이 kubelet이나 API를 이용해 관리할 수 있다. 최근에는 ABAC는 거의 사용하지 않고 RBAC를 이용해 권한을 관리한다. R..

    [kubernetes] Jenkins vs Jenkins X

    Jenkins 개념 Java Runtime위에서 동작하는 자동화 서버 다양한 플러그인을 종합해서 CI/CD Pipeline을 만들어서 자동화 작업 개발 시 지속적으로 통합 서비스를 제공하는 CI툴. 젠킨스와 같은 CI툴이 등장하기 전에는 개발자들이 당일 작성한 소스들의 커밋이 모드 끝난 심야 시간대에 이러한 빌드가 타이머에 의해 집중적으로 진행되었는데, 이를 nightly-build라고 한다. 하지만 젠킨스는 정기적인 빌드에서 한발 나아가 Git과 같은 버전관리시스템과 연동하여 소스의 커밋을 감지하면 자동적으로 자동화 테스트가 포함된 빌드가 작동되도록 설정할 수 있다. Jenkins X 개념 Question 왜 Jenkins는 잘나가는 Jenkins 툴을 두고 새로운 툴을 개발하였을까? Answer 클라..

    [kubernetes] Tekton

    Tekton 이란? Tekton은 지속적 통합 및 배포(CI/CD) 시스템을 만들 수 있는 강력하면서도 유연한 Kubernetes 기반 오픈소스 프레임워크 쿠버네티스의 CRD(Custom Resource Definition)를 활용하여 쿠버네티스 제어판에서 파이프라인 태스크를 실행. 또한 Tekton은 Jenkins, Jenkins X, Skaffold, Knative와 같은 기존 CI/CD 툴과 효과적으로 연동 재사용 tekton의 모든 task들은 다른 pipeline과 완전히 독립적으로 사용할 수 있다. 모듈화가 잘 돼있어 여러 pipeline에서 필요한 task를 갖다 쓸 수 있다. 표준화 Tekton은 Kubernetes의 Custom Resource를 사용해 정의된다. 기능의 확장성 Tekto..

    [쿠버네티스] Helm

    쿠버네스 package managing tool이다. node.js 의 npm, python의 pip 과 비슷한 형태로 쿠버네티스 패키지 배포를 가능하게 하는 tool docker가 나오면서 container 혁신 -> container를 쉽게 관리하고 배포해주는 kubernetes 등장 -> kubernetes를 package로 관리해주는 것이 바로 helm이다. chart라고 부르는 package format을 사용하는데 chart는 쿠버네티스 리소스를 describe 하는 파일들의 집합이다.(파일들, 그 속에 속해있는 폴더의 집합) 특정 directory 하위에 모여있는 파일들을 통틀어서 chart라고 부르는데 좀 더 쉽게 예를들면, 가령 WordPress chart는 다음과 같은 구조를 가진다. ..