분류 전체보기 1185

API Deprecations

하나의 API Group은 여러 개의 API Version을 지원한다. 그렇다면 여러 버전을 지원해야 하는 이유는 무엇이며, 몇 가지 버전을 지원해야 하는가? 더 이상 사용하지 않는 오래된 버전은 어느 시점에 제거할 수 있는가? 이 글에서는 위와 같은 부분을 위한 Kubernetes API Deprecations(지원 중단 정책)에 대해 정리한다. Deprecations 정책 1. API 요소는 API Group의 버전을 증가시키는 방법으로만 제거할 수 있다. 즉, v1alphav1의 요소는 v1alphav2 이상의 버전에서 삭제할 수 있다. 2. API 개체는 일부 버전에 존재하지 않는 전체 REST 리소스를 제외하고, 특정 릴리스의 API 버전 간에 정보 손실 없이 변경할 수 있어야 한다. 즉, v1..

[boto3] 설치 및 자격 증명 구성

boto3 Python용 AWS SDK EC2, S3와 같은 AWS 서비스 개체를 생성 및 관리할 수 있다. SDK 소프트웨어 개발 키트 (Software Development Kit) 소프트웨어 기술자가 사용하여 특정한 소프트웨어 꾸러미, 소프트웨어 프레임워크, 하드웨어 플랫폼, 컴퓨터 시스템, 게임기, 운영 체제 등을 위한 응용 프로그램 등을 만들 수 있게 해주는 개발 도구의 집합 이 글에서는 리눅스 환경에서 boto3을 설치하고 자격 증명을 구성하는 방법에 대해 정리한다. 설치 요구 조건 : Python 3.6 이상 Python 3.5 이하는 지원이 중단되었다. pip를 통해 설치할 수 있으며, ==, >=, =1.15.0 pip3 install boto3 [매뉴얼] Boto3가 AWS의 자격증명(..

AWS 2022.01.15

API Versions

각 API Group의 버전은 크게 세 가지 버전이 존재하며 그 종류는 아래와 같다. 버전 /v1alpha1 : alpha 개발 후 Kubernetes에 처음으로 release 된 API다. 테스트 부족으로 치명적인 버그가 존재할 수 있다. 예고 없이 삭제될 수 있으며 이후 release에서 사용할 수 있다는 보장 자체가 없다. 기본적으로 활성화되지 않아 사용을 위해서는 내부적으로 활성화가 필요하다. API Group 테스트 및 피드백에 관심이 있는 사용자를 위한 API다. /v1beta1 : beta alpha 버전의 주요 버그 수정 및 end to end 테스트가 완료된 API 버전이다. /v1으로 이동될 가능성이 존재해 기본적으로 활성화되어 있으나, 마이너한 버그는 여전히 존재할 수 있기 때문에 피..

[BOJ] 2839 - 설탕 배달

문제 https://www.acmicpc.net/problem/2839 설탕 공장에서 사탕 가게로 설탕을 배달하는 상근이는 정확하게 nkg를 배달해야 한다. 설탕은 3kg, 5kg 용량의 봉지에 담겨지는데, 최대한 적은 수의 봉지로 배달하고자 한다. 배달해야 하는 설탕 무게를 입력 받아 배달할 봉지의 수를 구하는 프로그램을 작성하라. 두 종류의 봉지로 배달해야 하는 설탕 무게를 만들 수 없다면 -1을 출력하라. 입력과 출력은 다음과 같다. 설탕 무게 봉지 수 18 4 5 * 3 + 3 * 1 4 -1 6 2 5 * 0 + 3 * 2 9 3 5 * 0 + 3 * 3 11 3 5 * 1 + 3 * 2 풀이 남아있는 설탕의 무게가 5의 배수인 경우, 현재 봉지의 수에서 5kg 봉지의 수를 더한 수가 최소 배달..

Algorithm/백준 2022.01.13

Validating & Mutating Admission Controllers

Validating Admission Controller 요청을 검증하는 검증 승인 컨트롤러 예시 ) NamespaceExist NamespaceLifecycle 요청 내용의 네임스페이스가 존재하는지 확인하고 없으면 요청을 거부한다. Mutating Admission Controller 요청 수행 전에 요청 내용을 변경할 수 있다. 예시 ) DefaultStorageClass : 기본 활성화 플러그인으로, PVC 생성 요청을 확인하여 PVC에 StorageClass 설정이 존재하는지 확인한다. StorageClass 설정이 없는 경우, default StorageClass로 구성하도록 StorageClasss 설정을 수정한다. Admission Controller는 요청을 검증하는 Validating a..

[Windows 10] Nifi 설치 및 실행

Nifi를 다룰 일이 생겨서 테스트하던 서버(AWS EC2/Linux2 AMI)에서 동작시키려고 했는데, 네트워크 관련 설정에 문제가 있는지 연결이 되지 않았다……. 크게 설정 구성할 것 없이 테스트할 목적이기 때문에 로컬 컴퓨터(Window 10)에 설치하여 동작시키려고 한다. 따라서 이 글에서는 Windows 10 환경에서 Nifi를 설치하고 동작시키는 방법을 정리해둔다. 사전 준비 Nifi는 Java로 개발되었기 때문에, 동작시킬 환경에 Java가 설치되어 있어야 한다. 공식 사이트에 의하면 Java 8 또는 11 설치가 요구된다. 로컬 컴퓨터에는 Oracle JDK 1.8.0_301을 설치했다. NIfi 설치 방법 1. Nifi 다운로드 공식 사이트로 접속하여 Downloads>Download N..

Apache Nifi 2022.01.11

Admission Controllers

kube-apiserver에 요청이 도착하면, 요청을 수행하고 그 정보를 ETCD database에 저장된다. 요청을 수행하기 전에는 인증 과정(Authentication)이 필요하다. kubectl을 통해 요청이 전송되었다면 인증서가 구성된 kubeconfig 파일의 정보를 이용해 사용자를 식별하고, 유효한 사용자인지 확인한다. 인증 과정 후에는 사용자가 요청한 작업을 수행할 수 있는 권한이 있는지 확인하는 권한 부여 과정(Authorizaition)을 거치며, 이 과정에는 보통 역할 기반 접근 제어(RBAC)를 사용한다. RBAC 여러 개체의 제어를 허용하거나 거부하는 역할을 사용자에게 부여하여 접근을 제한하는 방법이다. 특정 리소스(resourceName)만을 허용하거나 특정 네임스페이스의 접근만을..

[MySQL/MariaDB] 테이블 목록 확인

이 글에서는 데이터베이스의 테이블 목록 확인 방법을 정리해둔다. 방법 1. 현재 데이터베이스의 테이블 목록 확인 SHOW TABLES; 2. 테이블 이름으로 현재 데이터베이스의 테이블 목록 필터링 SHOW TABLES LIKE 'KEYWORD'; # 예시 SHOW TABLES LIKE 'P%'; SHOW TABLES LIKE 'p%'; 3. 다른 데이터베이스의 테이블 목록 확인 SHOW TABLES FROM ; # 예시 SHOW TABLES FROM information_schema; # 테이블명 필터링 예시 SHOW TABLES FROM information_schema LIKE 'TABLE%'; 4. 데이터베이스의 테이블 상태 정보 확인 SHOW TABLE STATUS; # 특정 데이터베이스의 테이블..

Database 2022.01.09

Cluster Role

Namespace Scope Resource Role과 RoleBinding 객체는 namespace 내에 생성되어 해당 namespace 내 자원에 대한 접근만을 제어한다. 생성 시 namespace를 지정하지 않으면 default namespace에 생성된다. namespace 내에 생성되는 자원은 Role, RoleBinding 외에도 Pod, ReplicaSet, Deployment, Job, Service, Secret 등이 존재하여, 그 외 해당되는 자원은 아래 명령어로 확인할 수 있다. Namespace Scope Resource 확인 kubectl api-resources --namespaced=true Cluster Scope Resource 특정 namespace에 한정되지 않는 clu..

[Python] find VS index

Python에서 문자열의 특정 문자나 문자열의 위치를 찾을 때 일반적으로 find, index 등의 함수를 사용한다. 이 글에서는 두 함수의 차이점을 정리한다. find 문자열에 매개변수로 받은 문자열의 위치(index)를 확인하여 반환한다. 매개변수로 받은 문자열이 중복하여 위치해도 처음 위치한 자리만을 반환한다. str.find(SEARCHING_STR, [start], [end]) # 예시 print('"ABCDEFGHIJA".find("A") : ', "ABCDEFGHIJA".find("A")) print('"ABCDEFGHIJA".find("A", 2) : ', "ABCDEFGHIJA".find("A", 2)) print('"ABCDEFGHIJA".find("Z") : ', "ABCDEFGHIJ..

Python 2022.01.07