분류 전체보기 1188

[k8s] krew - kubectl 플러그인 관리자

Krew kubectl을 보다 편리하게 사용할 수 있도록 해주는 플러그인 관리 도구로, apt, brew와 비슷하게 kubectl 플러그인을 검색하고 설치할 수 있다. 현재(2023년 1월) 기준 210개의 kubectl 플러그인이 배포되어 있다. macOS, Linux, Windows에서 사용할 수 있으며 kubectl v1.12 이상의 버전에서 지원 가능하다. 이 글에서는 Krew를 설치하고 사용하는 방법을 소개하려고 한다. 설치 Linux 기준으로 방법을 정리한다. 1. git 설치 여부를 확인한다. 설치되어 있지 않으면 설치한다. git version # 설치 apt install git-all 2. 아래 명령어를 실행하여 krew를 설치한다. ( set -x; cd "$(mktemp -d)" &..

Kubernetes 2023.02.03

[k8s] 인증서 기반 Group User 생성

개요 Kubernetes에서 작업하는 사용자(User)와 서비스 계정(Service Accounts)은 Role-based access control(RBAC)에 의해 클러스터 내 리소스 접근을 제어받는다. Kubernetes 클러스터 관리자는 RoleBinding을 생성하여 User, Group, ServiceAccount에게 권한이 부여된 Role을 연결할 수 있는데, 이때 Group은 User의 집합을 의미한다. 2022.09.07 - [k8s] 인증서 기반 User 생성에서는 단순 User를 생성해 보았는데, 이 글에서는 특정 Group에 속한 User를 생성해 볼 것이다. 기본적으로 OpenSSL을 사용하여 CSR을 생성하는 것은 동일하다. + 인증서를 생성하는 도구로 꼭 OpenSSL을 사용할..

Kubernetes 2023.02.02

[Linux] OpenSSL - 사용법

개요 네트워크 데이터 통신에 사용되는 프로토콜인 TLS/SSL 오픈 소스 구현판으로, 기본적인 암호화 기능 및 여러 유틸리티 함수가 구현되어 있다. 거의 모든 버전의 유닉스 계열 운영 체제 및 윈도우에서 OpenSSL을 이용할 수 있다. 이 글에서는 간단히 개인 키 생성, 인증서 서명 요청 생성과 정보 확인을 위한 명령어를 정리한다. 개인 키(Private Key) 생성 genrsa 명령은 RSA 개인 키를 생성한다. 키를 생성할 때는 생성할 개인 키의 크기를 마지막으로 지정해야 한다. 기본값은 2048이다. openssl genrsa -out 2048 # -out : 키를 저장할 파일 경로 # -passout : 암호화 시 사용할 비밀번호 # 예시 openssl genrsa -out test_user...

Linux 2023.02.01

[Python] Pandas - DataFrame 컬럼 형변환

개요 Pandas DataFrame의 데이터 타입을 변환할 때는 astype 함수를 사용한다. astype 함수는 DataFrame 컬럼의 데이터 타입 변경할 때에도 사용하는데 방법을 적어둔다. 단일 컬럼 형변환 다음과 같이 object 형으로 구성된 DataFrame이 있다고 하자. df= pd.DataFrame({'col_str_1': ['1', '2', '3'], 'col_str_2': ['4', '5', '6'], 'col_str_3': ['7.0', '8.1', '9.2']}) df.dtypes # 실행 결과 col_str_1 object col_str_2 object col_str_3 object dtype: object 데이터 중 col_str_1 컬럼을 int 형으로 변경해 본다. 변경할 ..

[k8s] Released PV 재사용(Released to Available)

개요 kubernetes에서 사용이 끝난 PVC가 삭제되면 PVC가 사용 중이던 PV는 초기화(reclaim)하는 과정을 거친다. 초기화 정책은 3가지가 존재한다. Retain PVC가 삭제되면 PV를 Released 상태로 만들어 PV를 보존한다. PV 내 데이터는 유지되지만 PV를 재사용할 수 없다. PV에 연결되어 있던 외부 스토리지 볼륨을 삭제하려면 관리자가 작업해야 한다. 또한 볼륨을 재사용하기 위해서는 해당 볼륨을 이용하는 PV를 재생성하는 등의 작업이 필요하다. Delete PV 및 연결되어 있던 외부 스토리지 볼륨을 삭제한다. 동적 프로비저닝으로 생성된 PV는 Delete가 기본값이다. Recycle Reclaiming 시 새 PVC에서 사용할 수 있는 상태로 만든다. 과정 중 PV 내 데..

Kubernetes 2023.01.30

[Python] Github/GitLab에 저장된 파일 읽기

개요 Github/GitLab 저장되어 있는 파일을 Python을 이용해 읽어 들이려고 한다. 저장소를 별도 공간에 내려받지 않고 읽어보자. 예시 저장소 https://github.com/jinyuo/branch_test 에 저장되어 있는 test.csv 파일을 읽어본다. 저장소는 Public이라고 가정한다. 코드 http/https를 통해 파일에 접근할 수 있기 때문에 requests를 이용한다. 파일의 raw 데이터를 읽어야 하므로 사진의 Raw 버튼을 이용해 URL을 얻어야 한다. 예시 파일의 raw 데이터는 https://github.com/jinyuo/branch_test/raw/main/test.csv 에 저장되어 있다. 코드 접근할 URL에 http GET 요청을 한다. 요청한 데이터는 re..

Python 2023.01.29

[k8s] 사용자 전체 권한 확인 - 1

개요 2022.01.06 - RBAC에서 사용자가 특정 리소스에 대한 권한을 확인할 수 있는 can-i 명령을 살펴보았었다. 다만 현재 사용자에게 부여된 권한 전체를 확인할 필요성이 있어 추가로 정리한다. 사용자 권한 목록 확인 can-i 명령의 --list 옵션은 허용된 모든 action을 출력한다. 다만 --all-namespaces 옵션을 지원하지 않아 네임스페이스 별로 확인해야 한다. kubectl auth can-i --list 모든 권한을 부여받았는지 여부 can-i 명령에서 *는 모든 리소스 또는 모든 verb를 의미한다. 따라서 아래와 같은 방식으로 모든 리소스에 대한 모든 권한이 부여되어 있는지 확인할 수 있다. # 현재 네임스페이스 kubectl auth can-i '*' '*' # 모..

Kubernetes 2023.01.28

[Python] Pandas - DataFrame 랜덤 추출 (샘플링)

개요 2023.01.22 - [Python] 리스트 랜덤 추출 (샘플링)와 비슷하게 이 글에서는 DataFrame에서 데이터를 무작위로 추출하는 방법에 대해 알아본다. DataFrame.sample DataFrame에서 무작위로 몇 개의 값을 출력하는 함수이다. DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None, ignore_index=False) 매개변수는 다음과 같다. n : 추출할 개수. frac 매개변수와 동시에 사용할 수 없다. frac : 추출할 비율. 1 이하의 값을 설정하며 n과 동시에 사용할 수 없다. replace : 중복 샘플링 허용 여부. weight : 샘플링할 데..

[Python] Pandas - DataFrame 문자열 포함 여부 확인

개요 DataFrame에서 특정 문자열과 일치하거나 포함하는 데이터를 찾기 위한 방법을 정리한다. 예시 데이터는 다음과 같다. ## importing modules import numpy as np import pandas as pd ## creating a pandas DataFrame with strings, NaN, digit df = pd.DataFrame({ 'id': [1, 2, 3, 4, 5, 6, 7] , 'fruit': ['apple', 'PERSIMON', 'grapes', 'mango', 'peach and perl', np.NaN, '1004'] }) 문자열 일치 일치 여부는 비교 연산자 ==을 사용하여 확인할 수 있다. df['fruit'] == 'apple' # 실행 결과 0 T..

[Python] Pandas - 문자열 컬럼 분할 및 다중 컬럼 추가

개요 데이터를 전처리하다 보면 문자열 컬럼을 분할하여 컬럼을 여러 개 추가해야 하는 경우가 많다. 이 글에서는 아래 데이터를 이용해 주소 컬럼을 분할해 도시와 구로 추가하는 방법을 몇 가지 정리한다. df = pd.DataFrame( {"이름":["A", "B", "C", "D"], "나이":["10", "15", "42", "22"], "주소":["서울;강동구", "인천;연수구", "안양;동안구", "부산;수영구"]} ) 반복문 DataFrame 인덱서를 이용해 반복적으로 셀에 접근하여 데이터를 처리하는 방식이다. for i in df.index: df[['도시', '구']] = df.loc[i, '주소'].split(';') 데이터양이 적을 때는 사용해도 괜찮지만, 반복문으로 처리하기 때문에 데이터양..