전체 글

공부, 스터디, 내용 정리 Linux / k8s / kubernets / c언어 등등
카테고리 없음

KANS 3기 - Pod & Pause 컨테이너

Pause 컨테이너 실습pause 컨테이너가 lo eth0 를 만들고, NET/MNT/UTS 네임스페이스를 공유한다. Pod 생성cat `crictl ps`명령어에는 pause 컨테이너가 없다. pstree 명령어로 확인 할 수 있다.       한개의 pod에 두개의 컨테이너 생성 후 확인apiVersion: v1kind: Podmetadata: name: myweb2spec: containers: - name: myweb2-nginx image: nginx ports: - containerPort: 80 protocol: TCP - name: myweb2-netshoot image: nicolaka/netshoot command: ["/bin/bash"] ..

카테고리 없음

KANS 3기 - KIND

KIND 실습https://kind.sigs.k8s.io/ Docker in Docker로 쿠버네티스 클러스터 환경을 구성  클러스터 설치root@kind:~# kind create cluster Node 정보Pod 정보 contol-plane 노드 1개만 존재 하는데, 배포가 될까요? control-plane에 Taints 설정이 되지 않아 배포가 된다!(⎈|kind-kind:N/A) root@kind:~# kubectl describe node | grep TaintsTaints:    워커노드를 추가해서 다시 생성 cat kind-2node.yaml # two node (one workers) cluster configkind: ClusterapiVersion: kind.x-..

카테고리 없음

KANS 3기 1주차 01

1. 프로세스1-1. 프로세스란?프로그램을 실행하면 메모리 같은 주기억장치로 옮겨오면서 CPU 자원을 할당 받아 실행 중인 프로그램을 "프로세스" 라고 한다. - 프로세스는 실행중인 프로그램의 인스턴스를 의미- 프로세스는 CPU와 메모리를 사용하는 기본 단위, OS 커널(cgroup) 에서 자원을 관리 함 1-2. 프로세스 정보 확인/proc/ 프로세스 번호에는 상세정보가 담겨 있음/proc/[PID]/cmdline해당 프로세스를 실행할 때 사용된 명령어와 인자를 포함/proc/[PID]/cwd프로세스의 현재 작업 디렉터리에 대한 심볼릭 링크ls -l로 확인하면 해당 프로세스가 현재 작업 중인 디렉터리를 알 수 있음/proc/[PID]/environ프로세스의 환경 변수를 나타냄각 변수는 NULL 문자로 ..

테라폼/T101[3기]

T101-6주차

복습) 테라폼 사용팁 정리 좋은 코드의 특징 잘 작동함 관리가 쉬움 읽기 쉬움 변경이 쉬움 모듈화됨 간결함 (명확함) 테스트 가능함 효율적임 보기 좋음 (우아함) IaC 도입의 긍정적인 측면 속도와 효율성 버전 관리 협업 재사용성 기술의 자산화 IaC 도입의 우려되는 측면 코드 문법 학습 파이프라인 통합 대상 인프라에 대한 이해 필요 테라폼 IaC 버전 관리 시맨틱 버전 관리 방식 Major 버전 : 내부 동작의 API가 변경 또는 삭제되거나 하위 호환이 되지 않는 버전 Minor 버전 : 신규 기능이 추가되거나 개선되고 하위 호환이 가능한 버전 Patch 버전 : 버그 및 일부 기능이 개선된 하위 호환이 가능한 버전 샘플코드 링크 https://registry.terraform.io/browse/pro..

테라폼/T101[3기]

T101 - 5주차 / 02

워크플로개인 워크플로 Write : 프로비저닝하려는 목적에 따라 테라폼 코드를 작성 개인 작업이더라도 반복적인 사용성을 고려 복잡하게 작성하여 가독성을 줄이는 행위는 지 Plan : 적용하기 위한 실행 계획을 통해 리뷰 테라폼의 Plan뿐 아니라, terraform fmt를 통해 코드 형태를 포멧팅하고 변경되는 리소스를 리뷰한다. 또한 테라폼과 함께 동작하는 tfsec이나 terrascan 같은 보안 취약성 점검 툴 등을 활용하는 것도 좋은 방안이다. Apply : 코드로 실제 인프라를 프로비저닝 실행 계획상으로는 정상이지만 실제 프로비저닝하는 단계에서 인수 값, 생성 순서, 종속성에 따라 오류가 발생할 수 있다. 성공적인 완료를 위해 Write > Plan > Apply 단계를 반복하고 성공하는 경우 ..

테라폼/T101[3기]

T101 - 5주차 / 01

목표 협업 방법에 대해 알아본다 TFC에 대해 알아다 협업 인프라 규모가 커지고 관리 팀원이 늘어날 수록 구성 코드 관리가 필요 → 서로 작성 코드 점검 및 협업 환경 구성 협업 방법 - VCS(Github), 중앙 저장소 도입 테라폼 코드 형상관리를 위한 중앙 저장소 (git) *.tf file State 백엔드 state file 이원화 관리 권장 실습 p219 ~ 233 깃허브 포크 깃허브는 포크 fork 기능을 제공해 기존 리모트 저장소를 본인 소유의 저장소로 복사할 수 있다 포크를 한다 git 공유 제외 대상 코드 파일 공유 시 깃 관리 대상 제외 → .gitignore 정의 .terraform 디렉터리 : init 실행 시 작성되므로 제외 .tfstate 파일 : 프로비저닝 결과 데이터 소스 ..

테라폼/T101[3기]

T101 - 4주차

State의 목적과 의미 Serial을 기준으로 State backup 관리하는 것을 확인 vpc.tf provider "aws" { region = "ap-northeast-2" } resource "aws_vpc" "myvpc" { cidr_block = "10.10.0.0/16" tags = { Name = "t101-study" } } terraform init && terraform plan && terraform apply -auto-approve 배포 이후 terraform.tfstate 파일이 생성 된 것을 확인 할 수 있다. 태그 수정 후 상태 파일을 확인해 보자! 백업 파일이 생성 되었고, terraform.tfstate, terraform.tfstate.backup 현재 tfstate..

테라폼/T101[3기]

T101 - 3주차

목표 기본 문법인 조건문, 함수, 프로비저너, null_resource, moved 블록, 환경변수에 대해서 알아본다. 프로바이더에 대해 알아본다. 조건문 조건식은 ? 기호를 기준으로 왼쪽은 조건이며, 오른쪽은 : 기호를 기준으로 왼쪽이 조건에 대해 true가 반환되는 경우이고 오른쪽이 false가 반환되는 경우다. 다음의 예에서 var.a가 빈 문자열이 아니라면 var.a를 나타내지만, 비어 있을 때는 “default-a”를 반환한다 # ? : var.a != "" ? var.a : "default-a" 명시적인 형태 작성을 권장 # 조건식 형태 권장 사항 var.example ? 12 : "hello" # 비권장 var.example ? "12" : "hello" # 권장 var.example ? t..

테라폼/T101[3기]

T101 - 2주차

목표 테라폼 기본 사용법에 대해 알아본다. 데이터소스, 변수, 로컬, 출력, 반복문에 대해서 알아 본다. 데이터 소스 데이터 소스는 테라폼으로 정의되지 않은 외부 리소스 또는 저장된 정보를 테라폼 내에서 참조할 때 사용한다 식별자는 동일한 유형에서 중복될 수 없다. 이름 뒤에는 데이터 소스 유형에 대한 구성 인수들은 { } 안에 선언한다. 인수가 필요하지 않은 유형도 있지만, 그때에도 { } 는 입력한다 데이터 소스를 정의할 때 사용 가능한 메타인수는 다음과 같다. depends_on : 종속성을 선언하며, 선언된 구성요소와의 생성 시점에 대해 정의 count : 선언된 개수에 따라 여러 리소스를 생성 for_each : map 또는 set 타입의 데이터 배열의 값을 기준으로 여러 리소스를 생성 life..

테라폼/T101[3기]

T101 - 1주차

1주차 목표 IaC와 테라폼을 이해하고 스터디에 필요한 실습 환경을 구성합니다. 테라폼 기본 명령 사용법을 알아봅니다. HCL을 이해하고 기본 활용 방법을 학습합니다. 샘플코드 작성 및 배포를 실습합니다. 목표1) 실습 환경 구성 윈도우11 WSL2 설치 WSL2란? https://learn.microsoft.com/ko-kr/windows/wsl/about WSL2 설치 완료 IDE 구성 및 확장 설치 HashiCorp HCL HashiCorp Terraform WSL WSL2 Ubuntu에 테라폼설치 https://developer.hashicorp.com/terraform/downloads [스터디 전용/실습1] AWS CLI 설치 및 자격증명 [스터디 전용/실습2] EC2 1대 배포 mkdir t..

c언어/시스템 프로그래밍

시스템프로그래밍 - 4일차

시스템프로그래밍 - 4일차 강의 링크 Duplicating FD - dup(2) / dup2(2) 복사하는 시스템 콜 $ man -s 2 dup #include int dup(int oldfd); int dup2(int oldfd, int newfd); oldfd (old file descriptor) 복사하려는 file descriptornewfd (old file descriptor) newfd (old file descriptor) 새로운 fd 지정 dup()의 경우 할당 가능한 fd 중 가장 작은 값 할당 Return: oldfd를 복사한 새로운 fd -1: error 예제 #include #include #include #include int main(void) { int fd, fd1; fd ..

스터디/PKOS

5주차 - 보안

5주차 - 보안 실습 준비 kops 원클릭 배포 - 링크 워커 노드 1대 EC2 메타데이터 보안 제거 노드 확인 (thumbup:N/A) [root@kops-ec2 ~]# kops get instances ID NTERNAL-IP INSTANCE-GROUP MACHINE-TYPE i-038c6921803a6372b 172.30.42.82 nodes-ap-northeast-2a.thumbup.click t3.medium i-06b9e0c9a0a7c02b4 172.30.84.99 nodes-ap-northeast-2c.thumbup.click t3.medium i-0e148bf6d66f76841 172.30.35.141 control-plane-ap-northeast-2a.masters.thumbup.cli..

c언어/시스템 프로그래밍

시스템 프로그래밍 3일차

시스템 프로그래밍 3일차 유튜브 강의 참고 File read & write read $ man -s 2 read #include ssize_t read(int fd, void *buf, size_t count); fd (file descriptor) 읽으려는 파일의 file descriptor buf (buffer) 읽은 내용을 저장할 buffer의 시작 주소 count 읽을 byte 수 Return 0: 파일의 끝(EOF)에 도달, -1: 에러 write $ man -s 2 write #include # const 수정이 불가 ssize_t write(int fd, const void *buf, size_t count); fd (file descriptor) 기록하려는 파일의 descriptor buf..

c언어/시스템 프로그래밍

시스템 프로그래밍 2일차

시스템 프로그래밍 2일차 유튜브 강의 참고 Makefile & Make (리눅스 컴파일 환경) GNU C compiler 대부분의 유닉스/리눅스에서 기본 컴파일러로 사용중 명령어: gcc $ gcc [options] filename - Options - -c: object file(.o)만 생성 - -o: execution file name 지정 (default: a.out) $ gcc test.c $ ls a.out test.c $ gcc -o test test.c $ ls test test.c # 오브젝트 파일은 실행 파일이 아니기 때문에 실행 안됨 $ gcc -c -o test.o test.c $ ls test.o test.c Makefile & Make Makefile Compile 방법을 기술 ..

스터디/PKOS

4주차 - 프로메테우스 & 그라파나 & 로키

프로메테우스 개요 key/value 값을 쌍으로 사용하는 시계열 데이터베이스 PromQL(prometheus 쿼리 언어)를 제공 프로메테우스는 pull 방식으로 수집 Push 와 Pull 수집 방식 장단점? 링크 Push: 데이터를 가진 곳에서, 필요한 곳으로 보내준다. (Nasgios, zabbix) Pull: 데이터가 필요한 곳에서, 가진 곳에 접속하여 데이터를 긁어간다. (Prometheus, Datadog, collected) 프로메테우스-스택 설치 # 모니터링 kubectl create ns monitoring watch kubectl get pod,pvc,svc,ingress -n monitoring # 사용 리전의 인증서 ARN 확인 CERT_ARN=`aws acm list-certifica..

c언어/시스템 프로그래밍

시스템 프로그래밍 1일차

시스템 프로그래밍 1일차 유튜브 강의 참고 시스템 프로그래밍 개요 시스템 소프트웨어 프로그래밍 하는 것 유닉스/리눅스에서 제공하는 시스템 콜을 이용해서 프로그램을 작성 하는 것이다. 시스템 콜은 유닉스/리눅스 시스템이 제공하는 서비스를 프로그램에서 이용할 수 있도록 지원하는 프로그래밍 인터페이스를 의미한다. System 하나의 목적을 위해 결합 된 자원(HW/SW)들의 집합 System program 시스템을 구성하는 자원을 다루는 프로그램 응용프로그램에 서비스를 제공하는 프로그램 OS, firmware, compilers, I/O routines, scheduler 등 System call Interface 시스템 프로그램이 제공하는 기능을 사용하기 위한 통로 System call과 라이브러리 차이 라..

스터디/DOIK

Percona Operator for MongoDB - 옵션 변경

Percona Operator for MongoDB - 옵션 변경 따라하실분은 아래 URL로 클러스터 생성 후 진행해 주시면 됩니다. https://www.percona.com/doc/kubernetes-operator-for-psmongodb/kubernetes.html#operator-kubernetes 도전과제 URL: https://www.percona.com/doc/kubernetes-operator-for-psmongodb/options.html Changing MongoDB Options Changing MongoDB Options www.percona.com MongoDB의 Config 변경하는 방법은 3가지 있습니다. 아래 3가지 방법을 사용해보겠습니다. "deploy/cr.yaml" 파..

스터디/DOIK

Percona Operator for MongoDB - DOIK 스터디 4주차

MongoDB 소개 NoSQL NoSQL 종류 : Key-Value Store(Redis), Wide Column Store(HBase, Cassandra), Document Store(mongoDB, CouchDB), Graph Store(Neo4j) MongoDB 기본개념 기본 단위는 도큐먼트이며, 관계형 데이터베이스의 행과 유사함 컬렉션은 관계형 데이터베이스의 테이블과 같다 모든 도큐먼트는 컬렉션 내에 고유한 특수키인 "_id"를 가진다 복제 세트에는 프라이머리 Primary, 세컨더리 Secondary, 아비터 Arbiter 구성원이 있다. 프라이머리 : 클라이언트와 읽기 및 쓰기 작업 세컨더리 : 프라이머리 구성원의 정보를 동기화 아비터 : 정보를 저장하지는 않고 복제 세트의 복구를 돕는다 Op..

스터디/DOIK

기본 Object - Pod

Pending 단계 Conditions PodScheduled Pod가 위치할 Node 선정을 먼저 동작 후 Initialized Initalized 설정을 하지 않으면 True initContainer를 설정 했는데 성공적으로 끝났다면 True Container Waiting 상태 Reason: ContainerCreating Running 단계 Conditions ContainerReady: True Ready: True Container Running 상태 Succeeded & Failed 단계 Conditions ContainerReady: False Ready: True 컨테이너에 문제가 생겨서 하나라도 Reason이 에러가 나면, Failed 단계 컨테이너가 전부 Completed 된다면 Su..

NHN Cloud

VPC / Subnet / Peering 생성

리전 선택 VPC 생성 VPC 당 16개의 서브넷 구성 가능 총 4천여개의 호스트 할당이 가능 VPC 생성 Subnet Subnet 생성 Peering Peering 구성 라우팅 설정 VPC 마다 2개씩 생성 진행 Internet Gateway Internet Gateway 생성

스터디/DOIK

K8S MySQL Operator 설치 - DOIK 스터디 2주차

K8S MySQL Operator 설치 apt install mariadb-client -y mysql -h $MYSQLIP -uroot -psakila -e "SELECT @@hostname;SELECT @@max_connections;"​ # service.yaml --- apiVersion: v1 kind: Service metadata: labels: application: kube-ops-view component: frontend name: kube-ops-view spec: selector: application: kube-ops-view component: frontend type: NodePort ports: - port: 80 protocol: TCP targetPort: 8080 # ..

스터디/DOIK

K8S Operator 패턴 - DOIK 스터디 2주차

https://youtu.be/sL2dVvDq32E 오퍼레이터 (extension): 쿠버네티스 동작을 이용하여 애플리케이션 운영을 자동화 오퍼레이터 사용전 선행 학습 쿠버네티스 컨트롤 루프(컨트롤러 컴퍼넌트) 애플리케이션 아키텍처와 동작이해 컨트롤 루프 control plane 종료되지 않는 루프를 실행하면서 상태를 제어 쿠버네티스 컴퍼넌트인 컨트롤러는 클러스터 상태를 의도한 상태로 유지 행위 1. 모니터링 2. 상태 차이 발견 3. 액션 주의사항 오퍼레이터를 사용하려먼, 쿠버네티스 이해보다 애플리케이션 아키텍처와 동작 이해가 더 중요 용어 CRD Custom Resource Definition : 오퍼레이터로 사용할 상태 관리용 객체들의 Spec 을 정의 어플리케이션 의도한 상태는 CRD로 정의 CR..

NHN Cloud

NHN Cloud 회원 vs IAM 회원 차이

NHN Cloud 회원 vs IAM 회원 차이 NHN Cloud 회원 IAM 회원 - 조직 관리를 위한 멤버 - NHN 이용 약관에 동의한 NHN 회원으로, 서비스 이용에 대한 책임과 의무를 가지는 멤버 - NHN 서비스 전체에서 유효한 멤버로 소속된 조직이 삭제되어도 NHN 회원으로 존재 - 조직의 OWNER나 ADMIN이 NHN Cloud 회원 ID를 입력하여 등록 - 서비스이용을 위한 멤버 - NHN 이용 약관에 동의하지 않은 멤버 - 조직 내에서만 유효한 멤버, 소속된 조직이 삭제되면 삭제되는 멤버 NHN Cloud 회원 - 회원 가입 절차에 따라 계정 생성을 한 계정은 "NHN Cloud 회원" IAM 회원 - "NHN Cloud" 회원 가입을 하지 않은 멤버 - 서비스이용을 위한 멤버 - 조직..

NHN Cloud

관리용 인스턴스 생성

인스턴스 생성 인스턴스 생성 확인 Floating IP 생성 Floating IP 연결 보안 그룹 생성 IP는 노트북 외부 IP로 입력 네이버에 "내 IP 주소" 검색 후 나오는 IP 입력 예) 1.1.1.1/32 보안 그룹 변경 SSH 접근 SSH 접근 확인 Clear 보안그룹 삭제 FIP 삭제 인스턴스 삭제 키페어 삭제

시스템 엔지니어
썸업