분류 전체보기
[블록체인] ⛓ 블록체인의 정의와 핵심 기술
☝️블록체인 소개 블록체인 != 비트코인 우선 블록체인이라는 단어의 의미를 짚고 넘어가자! 언제나 의미를 정의하는 일은 지루하다.. 하지만 블록체인의 정의는 너무나 다양해서 가볍게 보고 넘어가면 될 것이다. 블록체인이란 용어는 다음과 같이 네 가지 의미로 사용된다. 데이터 구조의 명칭 알고리즘의 명칭 기술 묶음의 명칭 일반 응용분야를 가지는 순수 분산 P2P를 포괄하는 용어 1. 데이터 구조의 명칭 컴퓨터 공학에서 데이터 구조란 데이터를 정리하는 방식을 의미한다. 블록체인은 책을 구성하는 페이지들과 유사하게 마치 체인처럼 서로 연결되어 있어서 블록체인이란 이름이 붙었다. 책의 각 페이지들은 페이지 번호를 통해 서로 연결된다. 페이지가 찢어졌다면, 이 사실을 확인하기 위해서 페이지 번호에 누락이 있는지를 ..
[Issue] 쿠버네티스, 랜섬웨어에 취약?
오늘(22/04/11), 멀티 클라우드 데이터 관리 기업 베리타스에서 쿠버네티스 환경이 랜섬웨어에 취약하다는 분석을 발표했다. 여러 기사를 요약하고, 정보를 추가해서 이해하기 쉽도록 정리해 보았다. 조사는 전문조사업체 '오피니움 리서치'에서 진행했다고 한다. 한국을 포함한 전 세계 1천110명의 IT 관련 의사 결정권자를 대상으로 진행했다. 설문 참가 기업의 89%는 향후 2~3년 안에 쿠버네티스를 도입할 것이며, 3분의1은 이미 이 시스템을 도입했다고 한다. 하지만 현재 쿠버네티스를 도입한 조직의 33%만이 랜섬웨어와 같은 데이터 손실 위협에 대한 보호 체계를 갖췄다고 한다. 쿠버네티스가 랜섬웨어에 취약하다? 쿠버네티스 클러스터는 많은 노드들로 이루어져 있고, 소수의 마스터 노드들이 워커 노드를 통제하..
[Linux] 웹사이트 동작 체크 명령어는?
제목을 보고 ping 이라고 생각했다면..?! curl을 사용해 보았나요? 어떤 상황에서 어떤 옵션들을 사용해 보았나요? cURL curl은 CLI 기반의 웹 요청 도구이다. Linux, MacOS, Windows 등의 대부분의 OS에서 사용 가능하며, HTTP, HTTPS, FTP, TELNET, SMTP, IMAP, POP3등의 프로토콜과 소켓 통신까지 지원한다. 포맷 curl [option] 한 번 curl https://www.google.com 을 실행해 보자. 아마 자바스크립트 코드와 바이너리 코드들로 터미널이 꽉 찰 것이다. curl 은 기본적으로 GET 방식으로 url을 호출한다. curl 요청에 임의의 header를 넣을 수 있고, JSON 형식의 데이터도 넣어서 보낼 수 있다. 다양한 ..
[kubernetes] ubuntu에 kubeadm으로 K8s 설치하기 (cgroup, coredns 해결)
1. Docker 설치 [Docker] Ubuntu 도커 설치 Ubuntu와 Docker 이 글에서는 Ubuntu 도커 설치와 관련된 내용을 다룬다. Docker는 리눅스를 기반으로 하기 때문에 리눅스 운영체제 위에서 돌아가야한다. Ubuntu는 Linux계열 운영체제로 바로 설치가 가능 myjamong.tistory.com 위 블로그 따라서 Docker를 먼저 설치한다. 설치가 끝났다면 docker ps 명령어를 입력해 보자. 위와 같은 에러가 날 수 있다. 해당 문제는 사용자가 /var/run/docker.sock 에 접근하려고 했지만 권한이 없어 발생하는 문제로, 사용자가 root:docker 권한을 가지고 있어야 한다. root 권한을 가지고 실행하는 것은 권장되지 않으므로, 사용자를 docker..
[kubernetes] Helm으로 nginx ingress controller 설치하기
일반적으로 사용하는 helm의 stable repo가 업데이트를 중단했고, k8s는 빠르게 업데이트 되는 중이다. stable/nginx-ingress는 사용하기엔 너무 옛날 버전이라서, k8s에서 따로 배포하는 ingress-nginx repo를 사용해 ingress-controller를 설정해 보았다. nginx pod와 service 생성 # mynginx.yaml apiVersion: v1 kind: Pod metadata: labels: run: mynginx name: mynginx spec: containers: - image: nginx:1.16 name: mynginx resources: {} restartPolicy: Always --- apiVersion: v1 kind: Servic..
[Kubernetes] No Ingressclass resource with name nginx found 문제 해결하기 (Helm stable repo)
Stable 및 Incubator 차트를 위한 새로운 공간 헬름 - 쿠버네티스 패키지 매니저 helm.sh 결론 helm repo remove stable helm repo add bitnami https://charts.bitnami.com/bitnami stable은 더 이상 업데이트를 하지 않는다. bitnami repo를 쓰던가 따로 찾아서 쓰기로 생각했다. 서론 helm을 사용하려면 로컬에 helm repo 를 등록해야 한다. 그래서 주로 사용하는 repo면서, 책에서도 소개한 repo 면서, Helm 공식 사이트에서도 소개하는 repo인 stable을 설치하기 위해서는 다음 명령어를 입력하면 된다. helm repo add stable https://charts.helm.sh/stable --..
[Linux] 리눅스 서버 접속 방법과 도구(ubuntu)
Server에 어떻게 접속하나요? 특별히 사용하는 도구나 방법이 있을까요? 질문의 의도가 무엇일까? ssh를 알고 있는가? ssh를 사용해 보았는가? 사용하는 OS가 무엇인지? 평소에 Ubuntu 같은 리눅스 기반 OS를 사용하는지? ssh의 원리를 알고 있는지? password가 아닌 key pair 방식을 사용해 보았는지? 사용하는 도구를 알고 있는지? 실제로 ssh 에 접속하는 방법은 알고 있지만 원리가 어떻게 되고, 어떻게 사용자를 추가하게 되고, Public Key, Private Key 가 사용되는 원리까지 알아야 좋다. 더 나아가서는 접근제어를 어떻게 관리하는지에 대한 질문도 받을 수 있다. 평소에 쿠버네티스를 공부하면서 Virtual Box나 ec2 인스턴스 같은 리눅스 OS는 매일 사용한..
2022 SK ICT Family 개발자 채용 챌린지 후기 (2차)
1주일 가량 지나고 나서 올리는 코딩 테스트 후기 제한시간은 4시간이고, 문제는 4문제였다. 한 문제에 할당된 시간은 카카오만큼 빡빡했다.. 결과부터 말하자면 2문제를 풀었다 1번 2번 문제를 풀었고 3, 4번 문제는 제대로 읽지도 못했다. 1번은 문자열 기반 브루트포스 문제라고 생각하고 풀었다.. 사실 시간복잡도 계산이 완벽하진 않았지만, 중복이 많다는 단어의 특성과 알파벳이 26개라는 특성상 브루트포스로 충분히 가능할것으로 생각했고 가능했다. (테스트 케이스가 빡세지 않아서 그럴지도..?) 완전탐색이지만 BFS, DFS 같은 정형화된 구현이 아니라서 구조를 짜는데 어려움을 느껴서 시간이 꽤나 걸렸다 2번은 구현 문제였다. 주어진 상황을 알맞게 구현하는 문제였다. 우선순위 큐를 2개 사용해서 태스크에 ..
ArgoCD 설치 에러(in K8s cluster) Error from server (NotFound): services "argocd-server" not found
Getting Started - Argo CD - Declarative GitOps CD for Kubernetes Getting Started Tip This guide assumes you have a grounding in the tools that Argo CD is based on. Please read understanding the basics to learn about these tools. Requirements Installed kubectl command-line tool. Have a kubeconfig file (default location i argo-cd.readthedocs.io ArgoCD 설치할 때 공식 사이트에서 하라는 대로 아래 코드를 입력할 수 있다. kubectl..
[운영체제] Ch10. 가상 메모리
공룡책(운영체제)을 읽고 정리한 글입니다. 가상 메모리 개념은 어떻게 탄생한 것일까? 현재 실행되고 있는 코드는 반드시 물리 메모리에 존재해야 한다는 사실은 너무나 당연하고 기본적인 조건으로 보인다. 이 요구조건을 가장 쉽게 만족시키는 방법은 전체 프로세스를 메모리에 올리는 것이다. 하지만 이러한 방법은 프로그램의 크기를 물리 메모리의 크기로 제한한다는 점 때문에 마냥 좋지많은 않다. 실제로 많은 경우에 프로그램 전체가 한꺼번에 메모리에 늘 올라와있어야 할 필요는 없다는 사실을 알 수 있다. 프로그램에는 잘 발생하지 않는 오류 상황을 처리하는 코드가 종종 존재한다. 이러한 오류들은 실질적으로 거의 발생하지 않으므로, 이 코드들은 거의 실행되지 않는다. 배열, 리스트, 테이블 등은 필요 이상으로 많은 공간..