전체 글 468

Netflix ) Netflix’s Key-Value Data Abstraction Layer

넷플릭스는 Key-Value String Data의 영속성 Layer로 어떠한것을 사용했는지, 어떤 비즈니즈 요구사항에 적용했는지 리서치 해보았다. 관련 포스팅https://netflixtechblog.com/introducing-netflixs-key-value-data-abstraction-layer-1ea8a0a11b30 Introducing Netflix’s Key-Value Data Abstraction LayerVidhya Arvind, Rajasekhar Ummadisetty, Joey Lynch, Vinay Chellanetflixtechblog.com https://netflixtechblog.com/introducing-netflix-timeseries-data-abstraction-l..

Programming/MSA 2025.01.13

SSH key로 Github 인증 받기

우선 내 로컬 혹은 서버 (어디든 무관하다.) 에서 SSH 접속을 위한 RSA Key를 생성한다. 이때 필자는 key의 이름을 GH_RO_key_rsa 라고 하겠다.imacs-imac:~ scott$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/~/~/.ssh/id_rsa): /~/~/.ssh/GH_RO_key_rsa Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /~/~/.ssh/GH_RO_key_rsa. Your publi..

PaaS/CI CD 2024.12.28

ArgoCD) Git-Sync를 통하여 주기적으로 git repo fetch 받아오게 하기

가끔식 kustomization이나 Submodule과 같은 경우 다른 Repository의 최신 버전을 참고해야 할 때가 있다.  이때는 ArgoCD 의 구성요소중 argocd-repo-server를 활용하여야 한다. 참고로 argocd-repo-server는 argocd에서 repository에 대한 fetch를 받을때 사용하는 컴포넌트로써 /tmp 경로 하위에 fetch 받은 repo의 Cache가 쌓인다. 여기서 먼저 질의한후 없으면 실제 repo에서 fetch 받는 구조이다. https://argo-cd.readthedocs.io/en/stable/operator-manual/server-commands/argocd-repo-server/#argocd-repo-server  이 argocd-re..

PaaS/CI CD 2024.12.27

Kustomization) Kustomize build 시 참조되는 파일 경로 유효성 평가 생략하기

Kustomize는 Build할때 참조되는 Resource들의 path에 대해서 정합성을 체크한다. 휴먼에러를 방지하기 위한 내부 메커니즘으로 보이는데, Kustomization으로 build하는 Application Scope을 벗어난 리소스 참조는 실패하도록 설계되어 있다.  가령├── base│ ├── app-new-manifest.yaml # I am trying to patch this│ ├── kustomization.yaml│ ├── app│ │ ├── app.yaml│ │ └── kustomization.yaml└── overlay └── environment1 │ ├── kustomization.yaml # I want to patch app-ne..

PaaS/CI CD 2024.12.27

Sidecar Injector 사용하기

k8s를 운영하다 보면 Sidecar를 체계적으로 관리하고 싶을 때가 있다. Istio가 아니더라도 Sidecar가 필요한 경우는 많다.  이 경우에 tumblr에서 opensource로 제공한 Sidecar Injector를 사용하면 좋다.  1. Git Clonegit clone https://github.com/tumblr/k8s-sidecar-injector.git 2. Certificate  export ORG="org1" DOMAIN="org1.com"sed -i '' -e "s|__ORG__|$ORG|g" -e "s|__DOMAIN__|$DOMAIN|g" examples/tls/ca.conf examples/tls/csr-prod.conf  3. TLS 용 Key 생성export DEPLOY..

PaaS/Kubernetes 2024.12.17

Gitlab Runner ) kubernetes Executor Error 'Is the docker daemon running?'

ERROR: Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running? Gitlab Runner를 kubernetes executor로 배포하여 사용중이다. 그런데 docker build를 CICD에서 수행하게 되면 위와 같은 오류가 발생한다.  정말 많은 트러블 슈팅을 했다.  내가 최종적으로 적용한 Solution을 공유하고자 한다. 1. Helm으로 Runner Kubernetes Executor를 배포하였는데, 다음의 Value를 values.yaml에 추가한다.runners: privileged: true config: | [[runners]] environment = [ ..

PaaS/CI CD 2024.12.15

Gitlab Runner ) Kubernetes에 scaling Runner 배포하기

일반 인스턴스에 Runner를 배포하게되면 하나의 Deamon에서 queue로 들어오는 Job을 처리하게 된다. Github에는 ARC(Actions Runner Controller)라고 On-Demand하게 Scaling되는 Runner type이 있는데, 이와 유사한게 Gitlab Runner에서는 kubernetes type Executor이다.   설치방법1. Gitlab Helm 용 Repo 등록$ helm repo add gitlab https://charts.gitlab.io 2, 필요한 경우 Helm init을 수행한다. 3. Gitlab Runner 버전을 확인한다.$ helm search repo -l gitlab/gitlab-runner 4. 만약 최신 Gitlab 버전을 접근할 수 ..

PaaS/CI CD 2024.12.10

(React) 기초 - 커먼 JS

커먼 JS는 모든 버전의 노드에서 지원하는 일반적인 모듈 패턴이다.(https://oreil.ly/CN-gA). 여전히 이런 방식의 모듈을 바벨이나 웹팩에서 사용할 수 있다. 커먼 JS를 사용하면 module.exports를 사용해 자바스크립트 객체를 익스포트할 수 있다.  예를들어 커먼 JS에서 print와 log 함수를 객체로 반환할 수 있다. const print(message) => log(message, new Date());const log(message, timestamp) => console.log('${timestamp.toString()}: ${message}'}; module.exports = {print, log}; 커먼 JS는 import 문을 지원하지 않는다. 그 대신, ..

(React) 기초 - ES6 모듈

자바스크립트 모듈은 다른 자바스크립트 파일에서 이름 충돌이 없이 쉽게 불러서 활용할 수 있는 재사용 가능한 코드 조각을 말한다. 자바스크립트는 모듈을 한 모듈당 하나씩 별도의 파일로 저장한다. 모듈을 만들고 외부에 익스포트 하는 방법에는 한 모듈에서 여러 자바스크립트 객체를 외부에 노출시키는 방식과 한 모듈에 하나의 자바스크립트 객체를 노출시키는 방식이 있다.  text-helper.js 파일에 있는 다음 모듈은 두 함수를 외부에 노출시킨다.export const print(message) => log(message, new Date());export const log(message, timestamp) => console.log('$(timestamp.toString()): ${message}'}; e..

(React) 기초 - 클래스

ES2015이전에는 공식적으로 자바스크립트 명세에 클래스 문법이 없었다. 클래스가 도입되면서 자바나 C++ 과 같은 전통적인 객체지향 언어와 비슷한 구문을 제공한다는 점으로 인해 흥분한 개발자들이 많았다. 과거 몇 년간은 리액트 라이브러리가 사용자 인터페이스 컴포넌트를 만들때 클래스에 주로 의존했다. 오늘날, 리액트는 점차 클래스를 멀리하기 시작했고, 함수를 사용해 컴포넌트를 구성한다. 하지만 레거시 리엑트 코드나 다른 자바 스크립트 세계에서 클래스를 자주 볼 것이다. 따라서 간단하게 클래스에 대해 살펴보자.  자바스크립트는 프로토타입을 사용한 상속라고 불리는 방법을 사용한다. 이 기법은 객체지향처럼 느껴지는 구조를 만들어내기 위한 기법이다. 예를 들어, new를 사용해 호출해야 하는 Vacation 생..