분류 전체보기 1185

[Jenkins] HelmRelease로 설치 시, curl: (60) SSL certificate problem: certificate has expired 에러

간단한 배경 지식(?) HelmRelease Helm에서 release란 chart를 이용해 애플리케이션을 설치된 결과를 말한다. 그리고 release를 보다 더 편리하게 관리하기 위해 쿠버네티스 리소스처럼 취급하기 위한 시도가 있었고, 그 결과로 HelmRelease라는 리소스로 release를 관리할 수 있게 되었다. 참고 : https://coffeewhale.com/kubernetes/gitops/helm/2020/05/13/helm-operator/ Init Container (초기화 컨테이너) Pod의 Runtime Container가 실행되기 전에 실행되는 컨테이너 이미지에 포함되지 않는 유틸리티, 설정 스크립트 등을 포함할 수 있다. Pod는 하나 이상의 Init Container를 가질 ..

Kubernetes/삽질 2022.03.07

[calico-node 0/1 running] calico/node is not ready: BIRD is not ready: BGP not established with 10.0.0.1

현상 쿠버네티스 클러스터 환경에서 동작하고 있는 서비스가 정상적으로 동작하고 있지 않아 확인하던 중, 포드 컨테이너에서 외부로 나가야 하는 트래픽이 막혀 있는 것이 원인이라는 것을 알게 되었다. 쿠버네티스 클러스터 환경은 온 프레미스에서 kubeadm을 이용해 구성되었으며, 네트워크 플러그인으로는 calico를 사용하고 있다. calico가 어떤 방식으로 쿠버네티스 환경에서 네트워크를 설정하는지, 관련해서는 어떤 조건이 필요한지는 잘 모르겠으나…… 일단은 kube-system namespace에서 각 노드에 배포된 calico-node pod가 정상적으로 동작해야 하는 것으로 보인다. 확인해보니, 최근 서버 재부팅 후 일부 calico-node pod가 정상적으로 동작하지 않고 있었다. 그리고 정상적이지..

Kubernetes/삽질 2022.03.06

[calico] calicoctl 설치 - k8s pod

calico 컨테이너, 가상 머신 및 기본 호스트 기반 워크로드를 위한 오픈 소스 네트워킹 및 네트워크 보안 솔루션. Linux 및 Windows에 대해 인터넷과 동일한 IP 네트워킹 원칙을 기반으로 Kubernetes 포드를 연결하기 위한 네트워킹 및 네트워크 정책 솔루션을 제공한다. 캡슐화 또는 오버레이 없이 구축되어 고성능의 대규모 데이터 센터 네트워킹을 제공할 수 있으며, 분산 방화벽을 통해 Kubernetes 포드에 대해 세분화된 의도 기반 네트워크 보안 정책을 제공한다. CNI Container Network Interface의 약어로 CNCF 프로젝트 중 하나이다. 컨테이너 간의 네트워크를 제어할 수 있는 플러그인을 만들기 위한 표준에 해당한다. 표준으로써의 역할을 할 뿐, 특정 서비스에 어..

Kubernetes 2022.03.05

[grep] 특정 문자열 제외

2022.03.03 - [grep] 대소문자 구분 없이 문자열 찾기 위 글에 이어 grep 명령어 사용법을 하나 더 적어둔다. grep 명령은 지정한 문자열을 포함한 행을 찾을 뿐만 아니라, 포함하지 않는 행을 찾아 반환하기도 한다. -v 옵션을 사용하면 된다. 명령어 grep -v PATTERN [FILE...] # -v, --invert-match : 입력받은 패턴과 일치하지 않는 행을 반환한다. # 예시 grep -v '#' docker/Dockerfile Dockerfile에서 '#'로 주석 처리한 행을 제외한 실제 실행 내용만을 확인할 수 있다. -i 옵션과 같이 사용하면 대소문자 구분 없이 입력 받은 패턴을 제외한 내용을 확인할 수 있다. grep -vi PATTERN [FILE]

Linux 2022.03.04

[grep] 대소문자 구분 없이 문자열 찾기

문자열을 찾을 때 사용하는 grep 명령어는 기본적으로 입력받은 정확한 문자열을 포함한 행을 찾아 반환한다. 예시 ) 하지만 대문자 입력의 경우 shift 키를 눌러야하거나, capsLock 키를 눌러야 하므로 빠르게 검색하기엔 조금 귀찮을 때가 많다. 다행히 grep 명령은 -i 옵션을 사용하면 대소문자를 구분하지 않고 원하는 문자열을 포함한 행을 검색할 수 있다. grep -i PATTERN [FILE...] # -i, --ignore-case : PATTERN과 입력 파일 모두에서 대소문자 구분을 무시한다. # 예시 grep -i run docker/Dockerfile

Linux 2022.03.03

[Docker] 사설 저장소 접속

공식 도커 이미지를 찾고, 다운로드하여 사용할 수 있는 저장소는 docker hub이다. docker에서 운영하는 docker hub는 docker 클라이언트와 기본적으로 연동되어 있으며, 아래와 같은 명령어로 터미널 환경에서 로그인할 수 있다. docker login 당연하지만 사람들은 공식 저장소만을 사용하지는 않는다. 회사의 경우 사내 보안을 위해서 사설 저장소를 제공하기도 한다. 그런 경우에는 docker login 명령어에 접속할 저장소의 주소를 적어주면 된다. docker login [OPTIONS] [SERVER] # -p : --password # -u : --username # --password-stdin : 표준입력으로 비밀번호 가져오기 # 예시 docker login localhos..

Docker 2022.03.02

[make] Makefile 실행

make Unix/Linux에 포함되어 있는 명령어로, 파일 관리 유틸리티 소프트웨어다. Makefile이라는 파일을 참조하여 컴파일러에 명령을 전달하며, 파일에 기술된 shell 명령어가 순차적으로 실행될 수 있도록 한다. 주로 컴파일 명령어를 기술하여, 여러 개의 소스파일을 대상으로 여러 단계의 컴파일 과정을 한 번에 진행한다. Makefile make 명령으로 실행할 명령을 기술한 파일 목적 파일, 재료 파일, 명령어와 매크로가 매크로가 기술되어 있다. 구조 CC = gcc # 매크로 정의. CC는 컴파일러를 뜻한다. # 타겟절. 규칙 정의 # 목적 파일 : 의존성 # 명령어 target 1 : dependency1 dependency2 cmd1 cmd2 target 2 : dependency3 d..

Linux 2022.03.01

[Ubuntu 14] update-rc.d - 서비스 비활성화

Ubuntu 18.04 이상 정도의 버전에서는 systemctl을 이용하여 서비스를 관리한다. 여기서 관리한다는 것은 서비스를 시작하거나 중지하거나, 부팅 시 자동 시작(enable)하도록 추가하거니, 부팅 시 자동 시작하도록 설정된 작업을 부팅 시 자동 시작에서 제외(disable)하는 등의 작업을 말한다. 명령어 # 부팅 시 자동 시작 systemctl enable # 부팅 시 자동 시작에서 제외 systemctl disable 그 이전의 버전에서는 service 명령어를 이용하여 서비스를 관리한다. 단, 서비스 명령은 /etc/init.d/ 아래의 서비스 스크립트에 정의된 인자값만을 지원하기 때문에, disable 또는 enable 인자를 사용할 수 없을 수도 있다. apache2를 그 예시로 들 ..

Linux 2022.02.28

[Python] smtplib.SMTPNotSupportedError: STARTTLS extension not supported by server.

현상 Python 코드로 메일을 전송하기 위해 아래와 같은 함수를 선언하여 사용하려고 한다. 메일 전송을 위한 smtp 서버를 선언하고, 로그인 정보를 이용하여 서버에 접근한 뒤 메일 전송까지 완료하는 함수이다. def send(self): recipients_list = self.recipient + self.email_cc server = smtplib.SMTP(self.email_server, self.email_server_port) server.starttls() server.ehlo() server.login(self.sender, self.passwd) server.sendmail(self.sender, recipients_list, self.msg.as_string()) server.qui..

Python 2022.02.27

[logging] Logger/Handler/Formatter

Logging 모듈 Python에서 로그를 출력하기 위한 기본 라이브러리 이 글에서는 Logging 모듈 사용 방법을 간단하게 정리한다. 사용 logging 모듈을 import 한 후, 출력할 로그 메시지를 전달하여 사용할 수 있다. import logging logging.debug("debug message") logging.info("info message") logging.warning("warning message") logging.error("error message") logging.critical("critical message") 아무 처리도 하지 않고 로그 메세지를 출력한 결과는 아래와 같다. 실행 결과 debug, info level에 해당하는 메시지는 출력하지 않았음을 확인할 수 있..

Python 2022.02.26