분류 전체보기 1173

Developing Network Policy

들어오는 트래픽을 허용하면, 허용된 트래픽에 대한 응답을 자동으로 허용하기 때문에 요청이 발생하는 방향만 고려하면 된다. 또한 Network Policy는 ingress, egress 규칙을 모두 가질 수 있다. 여러 경우 클러스터 내에 label은 같지만 namespace가 다른 포드가 여러 개 있는 경우 -> 모든 namespace에서 label이 일치하는 모든 포드의 연결이 허용된다. 특정 namespace의 포드만 허용하고 싶은 경우 -> namespaceSelector를 사용한다. podSelector가 없는 대신 namespaceSelector만 있는 경우 -> 설정된 namespace 내의 모든 포드와의 연결을 허용하며, 그 외의 포드는 허용하지 않는다. 클러스터 외부에서 포드에 연결하고 싶..

Network Policy

Ingress 서버 입장에서, 들어오는 트래픽 Egress 서버 입장에서, 보내는 트래픽 트래픽이 발생한 방향을 따져서 ingress와 egress를 정의하며, ingress와 egress를 정의하기 위해서는 트래픽 규칙이 필요하다. All allow 모든 포드에서 다른 포르 또는 서비스로 트래픽을 허용하는 규칙 쿠버네티스가 기본적으로 구성하는 규칙으로, 쿠버네티스는 어떤 솔루션을 구현하든 추가 설정 없이 포드 간에 통신이 가능해야 함을 전제한다. Network Policy 쿠버네티스의 개체 중 하나로, 하나 이상의 포드에 연결하여 policy 내에 트래픽 규칙을 정의할 수 있다. Network Policy를 생성하여 포드에 적용하면, 적용된 포드에서는 규칙에 해당하는 트래픽만 혀용하고 다른 트래픽은 차..

[Shell Script] 조건문

매번 구글링 해서 찾기 때문에 적어둔다. IF문 if [ 값1 조건식 값2 ] then 실행문 fi if [ 값1 조건식 값2 ] ; then 실행문 fi # 예시 if [ ${PATH} == "/" ] # == 은 문자열 비교 시 사용 then size=$(df -m | grep ${PATH} | awk '{ print $3 }') fi if [ ${PATH} == "/" ] ; then size=$(df -m | grep ${PATH} | awk '{ print $3 }') fi 대괄호와 값 사이에는 공백이 존재해야 한다. 변수를 참조할 때는 중괄호로 변수명을 감싸는 습관을 들이는 것이 좋다. if문은 fi로 끝낸다. IF-ELSE 문 if [ 값1 조건식 값2 ]; then 실행문 else 실행문 ..

Linux/Shell Script 2021.08.17

JAR - 압축/해제/디컴파일

JAR Java Archive 자바 클래스 파일과 클래스가 이용하는 리소스 및 메타데이터를 자바 플랫폼에 애플리케이션이나 라이브러리로 배포하기 위한 소프트웨어 패키지 파일 포맷 확장자는 .jar이며, 실제로는 zip 파일 포맷으로 이루어진 압축 파일이다. JDK에 포함된 jar 명령어를 이용해 jar 파일을 생성하거나 압축을 해제할 수 있다. jar 파일은 자바 런타임이 효율적으로 애플리케이션을 배포할 수 있는 수단이며, 요청 한 번으로 애플리케이션 전체를 다운로드할 수 있게 한다. 압축 jar -cvf # -c : 새 jar 패키지 파일 생성 # -v : 상세 정보 확인 # -f : jar 파일 이름 지정 PATH의 디렉터리를 FILENAME으로 압축한다. 압축 해제 반디집과 같은 일반 압축 해제 소프..

Java 2021.08.16

Ingress Networking

쿠버네티스 서비스 세 가지 유형 중 로드밸런서 유형은 온프레미스에서의 NodePort 유형의 서비스의 역할을 클라우드 환경에서 대체한다. 다른 애플리케이션 두 개가 클러스터 리소스를 공유할 수 있도록 하기 위해서는 같은 클러스터 내에 별도 Deployment로 배포해야 하는데, 이때 로드밸런서 유형의 서비스는 로드밸런서를 프로비저닝 하기 때문에 클라우드 비용도 증가할 수 있다. 로드밸런서 간의 트래픽을 URL 기반으로 전달하기 위해서는, URL 기반 트래픽을 다른 서비스로 리다이렉션 할 수 있는 프록시 또는 로드밸런서가 필요하다. 새 쿠버네티스 서비스를 구성할 때마다 로드밸런서를 재구성해야 한다. 때문에 구성이 다양해진 상황에서는 애플리케이션 확장 시 관리가 어려울 수 있고, 각 서비스마다 새 클라우드 ..

git 사용자 설정

git config Git의 사용 환경 설정의 내용을 확인하고 변경하는 도구 git 설치 후에는 사용자 설정 등의 환경을 설정해주어야 원격 저장소로 푸시를 하는 등의 작업을 진행할 수 있다. 설정 파일 /etc/gitconfig 시스템의 모든 사용자와 모든 저장소에 적용되는 설정 git config --system​ 설정 변경 시, root 권한이 필요하다. ~/.gitconfig, ~/.config/git/config 현재 사용자에게만 적용되는 설정 모든 저장소 설정에 적용된다. git config --global​ ./.git/config git 디렉터리에 위치하여 특정 저장소에만 적용된다. git config --local​ ./.git/config이 제일 우선적으로 적용된다. 사용자 정보 설정 g..

Git | GitLab 2021.08.14

특정 파일들의 총 용량 구하기

특정 디렉터리 내에 특정 파일들이 차지하는 총 용량을 구하려고 한다. 방법 - du 명령 du -ch # -c : --total. 총합 계산 현재 디렉터리의 python 코드의 총 용량을 계산한다. - 특정 파일들을 찾은 후, 용량의 총합을 계산 find -type f | grep | xargs ls -l | awk '{ result += $5 } END { print result }' # 예시 find ./* -type f | grep py$ | xargs ls -l | awk '{ result += $5 } END { print result }' 계산 과정 특정 디렉터리에서 특정 파일 찾기 해당 파일의 상세 정보 확인 xargs 명령어는 파이프 이전의 명령어를 인자로 받아 지정된 명령어를 실행한다. ..

Linux 2021.08.13

일반 사용자에게 sudo 권한 부여

sudo 일반 사용자가 루트 권한을 임시로 획득하여 특정 명령을 가능하게 하는 명령어 sudo 명령은 /etc/sudoers라는 설정 파일에 사용자가 등록되어 있어야 사용할 수 있다. /etc/sudoers 파일은 보안 상 아주 아주 중요하기 때문에 root 계정에도 읽기 권한만이 주어져 있다. /etc/sudoers를 편집하는 방법은 2가지가 존재한다. visudo 명령 사용 visudo​ 명령어 사용에는 sudo 권한이 필요하며, 사용 시 /etc/sudoers 파일에 접근할 수 있게 된다. /etc/sudoers 파일에 편집 권한 부여 chmod 명령어를 이용하여 편집 권한을 부여한다. chmod u+w /etc/sudoers #또는 chomde 640 /etc/sudoers 편집을 완료했으면 부여..

Linux 2021.08.12

Services - ClusterIP

모든 포드에는 IP 주소가 할당되어 있으나, 각 포드는 언제든지 종료되고 새로 생성될 수 있기 때문에 이러한 IP 주소는 정적이지 않다. 따라서 IP 주소를 이용해서 내부 통신을 하는 것을 어렵다. 이러한 문제를 해결하기 위해 쿠버네티스 서비스는 포드를 그룹화하고 그룹 내의 포드에 접근할 수 있는 단일 인터페이스를 제공한다. 서비스는 들어온 요청을 그룹 내의 포드 중 하나에 임의로 전달하게 된다. 이 유형의 서비스를 ClusterIP 서비스라고 하며, 서비스는 클러스터 내에서 IP와 다른 포드가 서비스 접근에 사용하는 이름이 할당된다. ClusterIP 서비스 개념에 의해 프런트엔드, 백엔드 등의 각 계층은 서비스 간의 통신에 영향받고 영향을 미치지 않고 필요에 따라 확장하거나 이동할 수 있다. 또한 마..

Services

Services Pod 집합에서 실행 중인 애플리케이션을 네트워크 서비스로 노출하는 추상화 방법 쿠버네티스 개체 중 하나로 애플리케이션 내부와 외부의 구성 요소 간의 통신을 가능하게 하며, 애플리케이션을 다른 애플리케이션 또는 사용자와 연결하는 데 사용한다. 포드 그룹 간의 연결을 가능하게 하며, 애플리케이션에서 마이크로서비스 간의 느슨한 연결을 생성한다. 타입 NodePort 노드의 특정 포트에 들어온 요청을 수신하여, 노드의 포드로 전달한다. 노드의 포트에서 노드 내의 포드에 접근할 수 있도록 노드의 포트를 포드의 포트에 매핑한다. - targetPort : 요청을 전달할 포드의 포트 - port : 서비스 자체의 포트 - nodePort : 노드 자체에서 외부와 통신하는 데 사용하는 포트로, 300..