/users
/posts
/slides
/apps
/books
mysetting
/users
/posts
/slides
/apps
/books
Jaehoon Kim
Programmer@NexCloud
Seoul, Korea
Joined on 2021년 05월 09일
Profile
Post
Like
7:09 6/18
shrinklabs.com
7:09
shrinklabs.com
ShrinkLabs
https://shrinklabs.com
Recent content on ShrinkLabs
저작도구: Hugo -- gohugo.io
최종 피드 수집: 2024-11-22 16:46
전체 (59)
3y
Consul과 Golang을 사용한 리더 선출
이 글은 원글(Leader Election using Consul and Golang)의 저작자 Sunny Aggrawal씨의 허락을 받고 번역한 글 입니다.
분산 컴퓨팅에서 리더 선택은 단일 노드를 여러 노드에 분산되는 일부
0
0
4
읽기모드
3y
내결함성 수평 확장성이 있는 분산형 이벤트 스케줄러 설계 방법
이 글은 원글(An Approach to Designing a Distributed, Fault-Tolerant, Horizontally Scalable Event Scheduler)의 저작자 Sandeep Malik씨의 허락을
0
0
3
읽기모드
3y
klevr_agent 빌드 후 Docker Image 만들기
$ git clone git@github.com:jaehoonn/klevr.git $ cd klevr $ chmod +x ./build.sh $ ./build.sh $ cd cmd/klebr-agent/Dockerfile $ do
0
0
0
읽기모드
3y
local branch 삭제
로컬에서 관리하고 있는 branch iss5783을 삭제합니다.
$ git branch -d iss5783
0
0
0
읽기모드
3y
etcd 설정
linux에서 etcd 클러스터 설정하기
How To Setup a etcd Cluster On Linux – Beginners Guide( https://devopscube.com/setup-etcd-cluster-linux/
0
0
0
읽기모드
3y
원격지의 branch 사용하기
github에 있는 branch를 로컬로 받아와서 작업하고 싶을때 할 수 있는 방법
원격지에 있는 branch 정보를 확인 할 수 있도록 업데이트 합니다.
$ git remote update 원격지의 branch 확인
$ git
0
0
0
읽기모드
3y
upstream 설정
프로젝트 진행하는 과정에서 필요한 upstream 설정
해당 내용은 kubernetes의 GitHub Workflow 문서를 참고 했습니다. ( https://github.com/kubernetes/community/blob/ma
0
0
0
읽기모드
4y
Windows기반의 minikube로 로컬 환경의 image 사용해서 배포하기
실제 클러스터에 배포하기 전에 로컬 환경의 minikube를 이용해서 배포하고 테스트를 하기 위한 방법이 필요하면 다음과 같이 합니다.
minikube를 시작하고, minikube에 내장되어 있는 docker 데몬을 사용하도록 합
0
0
0
읽기모드
4y
Powershell에서 할 수 있는 Linux를 위한 빌드
Windows 환경에서 개발 후 Linux 환경으로 배포하기 위해서 Linux용 바이너리로 빌드가 필요할 때가 있습니다.
다음의 방법으로 빌드 할 수 있습니다.
Powershell에서 빌드하기 위한 방법은 아래와 같습니다.
PS
0
0
2
읽기모드
4y
Kubernetes에서 Private Container Registry 사용
Kubernetes에 배포하기 위해서 Container Registry(Private)을 사용하려면, 별도의 secret을 등록해야 합니다.
$ kubectl create secret docker-registry {secret}
0
0
0
읽기모드
4y
docker 설치 후 에러
docker 설치 후 “Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?” 가 발생
$sudo syste
0
0
0
읽기모드
4y
GCE에서 kops를 이용한 K8s 구성
클러스터 배포용 VM 인스턴스 생성 Kubernetes를 구성하기 위한 VM 인스턴스를 생성합니다. “ID 및 API 액세스” 항목에서 액세스 범위를 “모든 Cloud API에 대한 전체 액세스 허용” 으로 선택한다. 또는 아래
0
0
4
읽기모드
4y
docker image 저장소 위치 변경
새로운 디스크를 추가합니다. 여기에서는 “/docker” 에 mount 되어 있는걸로 가정합니다. “etc/docker/daemon.json” 에 다음의 내용을 추가합니다. { "data-root": "/docker" }
0
0
0
읽기모드
5y
10.Nginx Ingress Controller on Google Kubernetes Engine
이번 과정에서는 “Ingress"에 대해서 알아 볼 수 있었습니다.
“Ingress"는 resource와 controller로 구성되어 있습니다.
resource는 “Ingress"의 동작에 대한 규칙을 정해 놓은 yaml이며,
0
0
0
읽기모드
5y
9.Helm Package Management
이번 과정은 kubernetes에서 사용할 수 있는 패키지 관리자에 대해서 알아 볼 수 있었습니다.
Helm은 클라이언트 역할을 하는 helm, 서버 역할을 하는 tiller 그리고 설정 정보들의 관리를 위한 chart로 이루어져
0
0
0
읽기모드
5y
8.Setting Up a Private Kubernetes Cluster
이번 과정의 실습을 진행하면서 클러스터에 대한 접근을 제한 할 수 있도록 하기 위한 방법에 대해서 알 수 있었습니다. 하지만 전체 내용에 대해서 정확하게 이해를 하지 못했습니다.
해당 내용은 이후에 비공개 클러스터 설정(https
0
0
0
읽기모드
5y
7.Build Slack Bot With Node.js on Kubernetes
이번 과정은 Secret 객체에 대해서 좀 더 자세하게 알아볼 수 있는 과정이었습니다.
서비스를 제공하는 프로그램(node.js 코드)을 Docker image로 만든 다음 Registry Server에 Push를 합니다.
제공하
0
0
0
읽기모드
5y
6.Running Mongodb Database in Kubernetes With Statefulsets
지금까지의 과정 중에서 가장 어려웠습니다.;;; 그리고 제대로 이해를 한건지도 잘 모르겠습니다.
일단을 이해했다고 생각되는 정도만 정리를 해봤습니다.
이번 과정은 StatefulSet에 대한 이해를 목표로 하고 있습니다.
Stat
0
0
0
읽기모드
5y
5.Continuous Delivery With Jenkins in Kubernetes Engine
이번 과정은 Jenkins와 Kubernetes를 이용한 배포 자동화를 실습해 볼 수 있었습니다.
분량은 많지만 이해가 어렵지는 않은 내용이었습니다.
실습을 해보면서 Namespace라는 객체와 Helm이라는 패키지 관리 도구를
0
0
0
읽기모드
5y
4.Managing Deployments Using Kubernetes
이번 장에서는 “Deployment"가 어떤 역할을 할 수 있으며, 이를 이용해서 취할 수 있는 배포 전략에 대해서 알아볼 수 있었습니다.
(이번 장에서 실습을 위해서는 필수적으로 compute/zone 설정을 us-central
0
0
0
읽기모드
5y
3.Orchestrating the Cloud With Kubernetes
이번 장은 우선 “nginx"와 “monolith"라는 단어에 현혹되지 않도록 주의를 해야 할 것 같습니다.
최초에 nginx가 실행되는 Pod는 그거대로 Kubnernetes 작동에 대한 내용이고, Pod에 대한 내용에서 언급되
0
0
0
읽기모드
5y
2.Hello Node Kubernetes
2번째 과정에서는 Kubernetes의 기본적인 동작 방식에 대해서 알아 볼 수 있었습니다.
Kubernetes의 클러스터를 생성하는 과정은 Google Cloud Platform에서 기능을 제공하고 있어서 아주 간편했습니다.
책
0
0
0
읽기모드
5y
1.Introduction to Docker
구글에서 지원해주는 “2019 클라우드 스터디잼 입문반” 스터디에 참여하기 시작했습니다. 이 스터디는 어떠한 형태로든 모인 멤버들이 일정 기간(1/7~1/27) 동안에 실습이 겸해진 과정(QWIKLABS - Kubernetes i
0
0
0
읽기모드
6y
cscope 사용(Go)
Go언어 개발 환경(추가) Go언어로 작성한 코드를 분석하기 위해서 cscope가 필요할 때가 있습니다.
vim에서 cscope를 사용하기 위한 과정을 정리해 보려고 합니다.
cscope를 설치합니다. $ sudo apt-get
0
0
3
읽기모드
6y
git push된 내용을 특정한 commit으로 되돌리기
“iss-123” 브랜치에서 작업하던 내용을 실수로 “iss-133” 브랜치로 push 하는 어이없는 실수를 했을때 “iss-133"에 push 된 내용을 이전으로 되돌려 놓아야 합니다.
git log로 이전 commit의 id를
0
0
0
읽기모드
6y
map에 key가 존재하는지 확인
map을 사용할때 해당하는 키가 map에 존재하는지 확인이 필요할 때가 있습니다.
var target[string]*item ... target["apple"] = itm1 target["orange"] = itm2 ... val
0
0
0
읽기모드
6y
Go언어 프로젝트에서 테스트 코드 작성 경험
테스트 코드는 왜? 현재 프로젝트를 진행 중 코딩을 할 때면 계속해서 의심과 두려움이 들었다.
“내가 제대로 작성하고 있는 게 맞나?”
“이렇게 작성하면 다른 데에서 문제가 생기는 건 아닌가?”
그리고 이런 걱정들은 다음의 2가지
0
0
0
읽기모드
6y
KVM 스터디(with go)
준비물 노트북(우분투 16.04)
KVM이 뭔가요? 하이퍼바이저? 위키백과에 나와 있는 정의( https://ko.wikipedia.org/wiki/%ED%95%98%EC%9D%B4%ED%8D%BC%EB%B0%94%EC%9D%B4
0
0
2
읽기모드
7y
core파일 만들기
Go언어에서도 core dump를 만드는 방법이 있었습니다.
데이브체니님이 정리해 놓은 무려 2015년도의 글 입니다.
https://dave.cheney.net/2015/11/29/a-whirlwind-tour-of-gos-ru
0
0
0
읽기모드
7y
docker 시작하기
docker ce 설치 오래된 버전 제거 $ sudo apt-get remove docker docker-engine docker.io 패키지 인덱스 업데이트 $ sudo apt-get update apt가 https를
0
0
0
읽기모드
7y
delve를 사용한 Go언어 디버깅
소개 delve는 Go언어를 위한 debugger 입니다.
delve설치 설치를 하기 위해서는 Go 1.5 이상의 버전이 필요합니다.
지금 시점에 Go 1.5를 사용하지 않을테니…
다음의 명령으로 설치합니다.
$ go get gi
0
0
0
읽기모드
7y
build
소개 Go언어로 개발을 하다보면 debug모드 release모드 같이 별도의 빌드 환경을 구성하고 싶을때가 있습니다.
그래서 build 옵션으로 특정한 환경별로 결과를 달리 할 수 있는 방법에 대해서 테스트한 내용을 정리해봅니다.
0
0
0
읽기모드
7y
RabbitMQ 스터디(with go)
Go언어로 RabbitMQ를 어떻게 이용할 수 있는지 스터디하는 내용들을 대충 대충 정리하는 중…
RabbitMQ라는게 뭐지? AMQP를 구현한 메세지 브로커
여기 저기에 있는 클라이언트들(Producer/Consumer)이 메세
0
0
0
읽기모드
7y
CreateFormFile()을 사용하면 Content-Type이 고정되는 현상
mime/multipart를 사용해서 파일을 업로드 하려 할때 파일을 업로드할 필드를 생성하기 위해서 CreateFormFile()을 사용합니다.
이를 이용해서 파일을 업로드하면 “Content-Type"이 “application
0
0
0
읽기모드
7y
Go코드로 HTML Form 전송
HTML, Javascript를 사용해서 Post방식으로 Form을 전송하는 동작을 Go 코드를 작성해 보려고 합니다.
우선 POST로 전송된 Form을 받아서 처리를 하는 서버쪽을 다음과 같은 구성을 갖는 코드로 만듭니다.
pa
0
0
0
읽기모드
7y
인코딩된 텍스트 디코딩하기
Javascript에서 encodeURIComponent() 함수를 사용해서 전달받은 문자열을 디코딩해서 보기 위해서는 “net/url” 패키지의 QueryUnescape() 함수를 사용할 수 있습니다.
email, err :=
0
0
1
읽기모드
8y
vendor 관리
vendoring되어 있는 패키지를 관리해야 할 이유가 무엇인지에 대해서 찾아보다가 좋은 글을 발견했습니다.
https://gocodecloud.com/blog/2016/03/29/go-vendoring-beginner-tutor
0
0
1
읽기모드
8y
GitHub 페이지에 Hugo 올리기
Blogger에서 Hugo( http://gohugo.io )로 갈아타는 과정을 정리해 봅니다.
Hugo 를 설치합니다 https://github.com/spf13/hugo/releases 에서 본인의 환경에 맞는걸 찾아서 설치합
0
0
0
읽기모드
8y
tmux
tmux 시작 $ tmux $ tmux new-session(or new) -s [세션 이름] -n [윈도우 이름] tmux 종료 $ ctrl-d $ exit tmux detach(현재 클라이언트) $ ctrl-b, d tmux
0
0
0
읽기모드
8y
vim-go 기본 템플릿 비활성화
vim-go가 언제부터인가 main.go 를 만들면 템플릿으로 fmt.Println(“vim-go”) 를 찍어주는 코드를 자동으로 생성해 주기 시작했습니다.
나는 아무것도 나오지 않기를 바랬는데, 이런게 나와서 매번 지우는 작업을
0
0
2
읽기모드
8y
vi 팁
현재 작업중인 파일의 경로와 이름 확인 현재 작업중인 파일의 경로 또는 이름이 궁금할 경우가 있습니다.
ctrl + g 또는
: f 80컬럼에 버티컬 라인 vi에서 80컬럼의 버티컬 라인을 생성하려면 다음과 같이 합니다.
set
0
0
0
읽기모드
8y
template을 생성할때 왜 이름을 지정할까?
Go언어의 Template 엔진을 사용할때, 왜 New()의 파라미터로 이름을 만들어서 넘겨야 하는지가 궁금 했었습니다.
Template and Associated templates라는 글을 읽고 어느 정도 이해를 하게 되었습니다
0
0
0
읽기모드
8y
ifconfig 사용
임시로 사용할 개발환경을 만들기 위해서 ubuntu 이미지를 사용하는데,
ifconfig 명령이 동작하지 않아서 보니, net-tools가 온전하게 설치되었지가 않은것 같습니다.
$ apt-get install --reinstal
0
0
0
읽기모드
8y
css와 같은 정적 컨텐츠를 html에서 사용하기 위한 팁
Go의 “net/http"와 “html/template"를 이용해서 html과 css로 만들어진 웹페이지를 만들려고 할때, html 파일이 보여질때 css가 적용되지 않은 상태로 보여집니다.
이 때 어떻게 해야 하는지 방법을 찾아
0
0
0
읽기모드
8y
http 패키지의 HandleFunc과 Handle
HandleFunc http.ResponseWriter 와 *http.Request를 인자로 받는 함수를 전달받습니다. 내부적으로 ServeHTTP가 구현된 ServeMux를 사용합니다. package main import (
0
0
0
읽기모드
8y
VM 설정
Labs 머신에서 사용할 vm을 생성할때 특이점
vm 생성 Settings -> Network(Attached to: Bridged Adapter) Start(Network & Host Name) Host Name: 지정 Et
0
0
0
읽기모드
8y
zsh(oh-my-zsh) 사용
zsh 설치하고 기본 쉘 변경 $ sudo apt-get install zsh $ which zsh /usr/bin/zsh $ chsh -s /usr/bin/zsh oh-my-zsh 설치 $ curl -L https://githu
0
0
0
읽기모드
8y
terminator 사용
설치 $sudo apt-get install terminator 단축키 분할(수직): ctrl + shift + e 분할(수평): ctrl + shift + o 닫기(현재 창): ctrl + shift + w 닫기(전체): ctr
0
0
0
읽기모드
8y
protobuf 사용
설치 protoc 최신 버전 확인 ( https://github.com/google/protobuf/releases ) $ curl -OL https://github.com/protocolbuffers/protobuf/rele
0
0
0
읽기모드
8y
vendor 사용 팁(내부 패키지)
프로젝트 내부에서 별도의 패키지를 만들어서 사용을 하려고 할때면,
import 경로를 “github.com/blah/project/internalpkg” 처럼 다 써야 했었습니다.
이제 vendor를 사용하면 pkg 이름만 imp
0
0
0
읽기모드
9y
pkg 원격저장소 연결하기
최근에 go소스들을 분석하면서 특이한 pkg import 경로들을 보게 되었습니다.
import "rsc.io/pdf" 와 같은 “github.com/rsc/pdf” 와 동일한 내용인데 그리고 rsc는 russ cox가 사용하는
0
0
0
읽기모드
9y
개발환경 설정
업데이트 $ sudo apt-get update $ sudo apt-get install build-essential vim 설치 $ sudo apt-get install vim vim 8.0 $ sudo add-apt-repos
0
0
0
읽기모드
9y
pkg-config 사용
Go언어를 사용하다보면 C로 만들어진 라이브러리를 사용하기 위해서 cgo가 필요할 때 가 있습니다. 라이브러리를 링크하고 하는 몇 가지 절차를 거치게 되는데, 이때 pkg-config라는걸 사용하면 편리합니다.
pkg-config
0
0
4
읽기모드
9y
Golang channels tutorial
최근에 goroutine과 channel에 대해서 학습하다가 설명이 잘 되어 있는 글을 찾아서 번역(이라고 하기에는 뭐하고 정리?) 를 해봤습니다. 제대로 이해를 못하고 잘 못 번역을 한 부분이 있을 수 도 있으니…꼭 원본을 보길
0
0
0
읽기모드
11y
md5 패키지 사용예
Qt로 만드는 클라이언트에서 이미지 파일에 대해서 만들어진 md5 hash를 검증 해보기 위해서, 같은 이미지 파일에 대해서 Go언어로 md5 hash를 만들었을때 동일한 값이 생성되면 제대로 만들어진거 아닐까 해서, 만들어 봤습
0
0
0
읽기모드
11y
C언어의 배열을 Go언어의 slices로 변환
cgo를 이용하다보면, C언어로 작성된 라이브러리의 리턴값으로 포인터에 구조체가 할당되어서 넘어올때가 있습니다.
C언어에서 넘어오는 구조체 배열이 포인터 형태로 넘어오니, Go의 포인터에 할당을 해서 사용 해봤습니다.
당연히 제대
0
0
0
읽기모드
11y
type으로 이름 붙여진 구조체의 필드를 사용하기위한 방법
c로 만들어져 있던 라이브러리를 cgo를 이용해서 포팅(?)을 하는 작업을 하다보면 난감한 부분들이 종종 나타납니다.
그중에 한가지가 c에서 사용하던 구조체의 파라미터명이 go 에서 미리정의된 명칭일 경우가 있습니다.
대표적인 예
0
0
0
읽기모드
11y
패키지 만들때 testing 패키지 사용하기
개요 Go 언어용 패키지를 만들려면, 테스트코드를 작성해야 진행이 좀 더 원활하게 되는것 같습니다.
그래서 간단하게 테스트 코드 작성하는 방법을 정리해봤습니다.
abc 패키지를 만들어서 테스트하기 src\abc\abc.go
src
0
0
1
읽기모드
23y
0
0
1
읽기모드
About
Badge
Contact
Activity
Terms of service
Privacy Policy