분류 전체보기 1191

[k8s] Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict 에러

현상 관리하던 쿠버네티스 클러스터에는 리소스 모니터링을 위한 그라파나/프로메테우스가 kube-prometheus-stack helm chart로 설치되어 있다. 다만 persistence 설정 변경, ingress 설정 변경, 관리 용이성을 위한 helm-operator 적용 등을 위해 설치한 release를 삭제 후 재설치하고자 했다. 그러나 release 삭제 후 재설치하려고 했더니, 조금 더 정확히 따져서 다음과 같은 과정 후 helm delete kubectl apply -f helmRelease.yaml kubectl delete hr 재설치 시 아래와 같은 에러가 발생하면서 설치에 실패했다. Error: rendered manifests contain a resource that already..

Kubernetes/삽질 2022.07.11

[MySQL] 날짜형 데이터 기본값 설정

개요 데이블에 데이터를 추가할 때 값을 지정하지 않은 컬럼이 존재하는 경우, 기본적으로 NULL로 추가된다. 다만 필요시 데이터 추가 시 기본값을 지정할 수 있는데, DATE, DATETIME과 같은 날짜형 데이터를 사용하는 테이블에 데이터를 추가할 때 데이터 추가 시의 시각을 기본값으로 사용하고자 한다. DEFAULT 테이블 스키마를 정의할 때 DEFAULT 절을 이용해 컬럼의 명시적 또는 암시적 기본값을 설정할 수 있다. 간단히 DFEAULT 키워드 뒤에 기본값에 해당하는 값을 정의하는 방식으로 설정한다. CREATE TABLE t1 ( -- DEFAULT i INT DEFAULT -1, c VARCHAR(10) DEFAULT '', price DOUBLE(16,2) DEFAULT 0.00 ); My..

Database 2022.07.10

[MySQL] SELECT INSERT

SELECT INSERT 특정 테이블에서 데이터를 조회한 결과를 다른 테이블에 삽입하는 걸 간단히 SELECT INSERT라고 한다. 컬럼 추가와 같이 많은 데이터가 저장된 테이블 스키마를 변경해야 하는 경우, 스키마를 변경하는 것보다 TO_BE 스키마를 가진 테이블을 생성하여 데이터를 복사한 후, 테이블 이름을 변경하는 것이 좀더 수행 시간을 절약할 수 있기 때문에 종종 사용하게 된다. INSERT INTO SELECT 구문이라고도 말한다. 한 테이블의 모든 열 복사 INSERT INTO table2 SELECT * FROM table1 WHERE condition; 예시 ) 아래와 같은 데이터가 저장된 Customers 테이블을 Suppliers라는 테이블로 복사하려고 한다. 테이블 스키마는 다음과 ..

Database 2022.07.09

[MySQL] SQL Error [1486] [HY000]: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed

개요 아래와 같은 구조의 product 테이블이 존재한다고 하자. CREATE TABLE product ( id INT NOT NULL, name TEXT, crt_date varchar(30) NOT NULL, PRIMARY KEY(ID, crt_date) ); 테이블의 crt_date는 "YYYY-MM-DD HH:MM:SS" 형식의 데이터로, 다음 SQL을 실행하여 crt_date을 기준으로 수평 파티셔닝(range)을 하려고 한다. ALTER TABLE product PARTITION BY RANGE(TO_DAYS(crt_date))( PARTITION p20201230 VALUES LESS THAN (TO_DAYS('2020-12-31')), PARTITION p20201231 VALUES LES..

Database 2022.07.08

[Git] 원격 브랜치 가져오기

원격 브랜치 가져오기 Git을 사용하다 보면 지금 사용하고 있는 브랜치가 아니라, 원격 저장소에는 존재하는 브랜치에서 작업해야 할 때가 있다. git pull이나 clone을 새로 해봐야 원격 저장소의 브랜치가 내려받아지지는 않으므로 아래와 같은 절차를 통해 원격 브랜치를 로컬로 가져와야 한다. 테스트 환경 원격 저장소에는 main 브랜치와 b20220627이라는 브랜치가 존재한다. 로컬 저장소에는 main 브랜치만 존재하는 상태이다. 이 상태에서 b20220627 브랜치를 로컬 저장소로 가져와서 작업하고자 한다. 로컬 저장소의 원격 브랜치 목록 확인 git branch # -r : --remotes. 원격지 브랜치 목록을 보여준다. # -a : --all. 원격지 브랜치 목록과 로컬 브랜치 목록을 모두..

Git | GitLab 2022.07.07

[Shell Script] Exit Status - 2

Exit Status 2022.07.05 - [Shell Script] Exit Status - 1 에 이어서 작성한다. pipe로 연결된 명령의 종료 상태 값 pipe로 여러 명령이 연결되어 실행될 때는 마지막 명령의 종료 상태 값이 사용된다. 아래 명령문의 경우 command1의 성공 여부와 상관없이 sed는 항상 참을 반환하기 때문에, 항상 종료 상태 값으로 0을 반환한다. command1 arg1 arg2 | sed -n '/:/,/^$/p' command1 명령 실패 시 비정상 종료 상태 값을 반환하려면, 파이프에 연결된 명령 중 하나라도 오류가 생길 경우 비정상 종료 상태 값을 반환하는 pipefail 옵션을 사용해야 한다. sh에서는 pipefail을 사용할 수 없으므로, 명령을 분리하거나 ..

Linux/Shell Script 2022.07.06

[Shell Script] Exit Status - 1

Exit Status 종료 상태 값은 명령이 정상적으로 실행을 완료했는지 아니면 오류가 발생했는지 판단할 수 있도록 한다. Shell에서 실행되는 모든 명령은 종료 상태 값을 반환하며 if, while, until, &&, ||은 종료 상태 값을 이용해서 참, 거짓을 판단한다. 명령이 정상적으로 종료된 경우, 0을 반환하고 그 이외의 값은 오류를 분류하는 용도로 사용된다. 명령의 종료 상태 값은 $? 변수로 알 수 있다. 앞선 명령이 정상 종료되어야 할 경우 앞서 실행된 명령에 오류가 발생했을 때 뒤의 명령이 실행되면 안 되는 경우, && 연산자를 이용해 명령을 연결하거나 test 명령을 이용하여 종료 상태를 확인한다. # && command1 ... && command2 # test command1 ...

Linux/Shell Script 2022.07.05

[functools] reduce 함수

functools high-order-function을 위해 고안된 것으로 다름 함수에 적용하거나 다른 함수를 반환하는 모듈이다. 💡 High-Order-Function (고차함수) 하나 이상의 함수를 인자로 받거나 함수를 결과로 반환하는 함수로, 쉽게 말해 함수를 다루는 함수라고 할 수 있다. 함수형 프로그래밍을 할 때 사용한다. HOF를 사용하면 유연하고 반복을 줄일 수 있는 코드를 작성할 수 있다. functools는 다음과 같은 함수를 제공한다. Iru_cached cmp_to_key total_ordering partial reduce 이 글에서는 functools가 제공하는 함수는 reduce에 대해서 정리한다. reduce() 여러 개의 데이터를 대상으로 주로 누적 집계를 내기 위해 사용한다..

Python 2022.07.04

[Shell Script] Functions - 2

Functions 2022.07.02 - [Shell Script] Functions - 1에 이어서 마저 작성한다. 함수 정의 방법 함수를 nesting 해서 작성 함수 안에 함수를 작성할 수 있다. shell에서 함수는 모두 전역 함수가 되지만, nesting 함수는 외부 함수가 실행되기 전에는 정의된 상태가 아니기 때문에 실행하기 위해서는 외부 함수가 먼저 실행되어야 한다. 함수에서 연산 결과를 리턴하는 방법 프로그래밍 언어와 다르게 shell에서 return문은 연산 결과를 반환하는 데 사용하지 않고, exit과 같이 함수 종료 상태를 지정하는 용도로 사용된다. shell에서 함수는 일반 명령과 동일하게 사용되므로, 실행 결과도 외부 명령을 사용한 것처럼 받는다. 함수에 인수를 전달하기 외부 명령..

Linux/Shell Script 2022.07.03

[Shell Script] Functions - 1

Functions { ;}, ()를 이용해 명령 그룹을 만들면 같은 context에서 실행되어 명령 그룹 전체가 하나의 명령처럼 실행되는 것과 같은 화가를 가진다. 따라서 명령 그룹에 이름을 붙임으로써 함수를 정의하면 일반 명령과 동일하게 사용할 수 있다. { ;}는 현재 shell에서, ()은 subshell에서 실행되므로 보통 { ;}를 사용하여 함수를 정의한다. # 파이프로 인해 subshell에서 실행되어 echo $var는 값이 표시되지 않는다. echo hello world | read var; echo "$var" # 명령 그룹을 만들면 read, echo 명령이 같은 context에서 실행되어 값이 표시된다. echo hello world | { read var; echo "$var" ;}..

Linux/Shell Script 2022.07.02