전체 글 70

kubectl에서 user token 사용하기 (keycloak oidc)

kubectl에서 --token 옵션은 service account 토큰만 가능하다. 하지만 만약 k8s가 oidc 연동 중이라면 kubectl로 user token도 사용할 수 있다. 방법은 service account 토큰 사용법과는 조금 다르다. 1. kube-apiserver.yaml 확인 apiVersion: v1 kind: Pod metadata: ... spec: containers: - command: ... - --oidc-issuer-url=https://{KEYCLOAK 주소}/auth/realms/{REALM 이름} - --oidc-client-id=my-client - --oidc-username-claim=preferred_username - --oidc-username-pref..

공부/Kubernetes 2022.10.10

k8s client-go custom resource 생성(post 사용 시 주의점)

k8s client go에서 custom resource를 생성하기 위해서는 abspath()와 post()를 사용해야 한다. k8s client go도 내부적으로는 kube-apiserver에게 REST api 콜을 보내는 것이므로, kube-apiserver의 규칙에 따라야 한다. kongPlugin이라는 custom resource 생성 시 아래와 같이 하면 된다. kongPlugin := &KongPlugin{ TypeMeta: metav1.TypeMeta{// 1 APIVersion: "/", Kind: "KongPlugin", }, ObjectMeta: metav1.ObjectMeta{ Name: "kongplugin-sample", Namespace: "", }, ...}} body, err..

공부/Go 2022.09.15

kubernetes 환경에서 Postgres streaming replication 설정

이전 글에서 이어진다. https://togomi.tistory.com/76 kubernetes 환경에서 Postgres migration 백업 & 복원 들어가기에 앞서.. 이 글은 k8s 환경에서 postgres의 데이터를 migration 하는 방법입니다. 이하의 글은 수동으로 하는 방법이며, 쉘 스크립트를 이용해 자동으로 하고 싶다면 아래 github을 참고해주세 togomi.tistory.com 이전에는 파일을 통해 스냅샷 백업/복원이었다면, 이번에는 postgres의 streaming replication 기능을 이용한 실시간 sync이다. 1. 원본 postgres에서 replication 유저 생성 원본 postgres 내부로 접속 kubectl -n {네임스페이스} exec -it {POD..

공부/Kubernetes 2022.08.18

kubernetes 환경에서 Postgres migration 백업 & 복원

들어가기에 앞서.. 이 글은 k8s 환경에서 postgres의 데이터를 migration 하는 방법입니다. 이하의 글은 수동으로 하는 방법이며, 쉘 스크립트를 이용해 자동으로 하고 싶다면 아래 github을 참고해주세요. https://github.com/aldlfkahs/postgres-migration GitHub - aldlfkahs/postgres-migration: Automate postgres(timescaledb) backup & restore Automate postgres(timescaledb) backup & restore. Contribute to aldlfkahs/postgres-migration development by creating an account on GitHub. g..

공부/Kubernetes 2022.08.17

k8s kubelet forbidden sysctl: not whitelisted 에러 해결

kafkaconnect의 커널 파라미터 설정을 하는데 kubelet에 의해 다음과 같은 에러가 발생했다. forbidden sysctl: "net.ipv4.tcp_retries2" not whitelisted kubelet은 default로 몇몇 sysctl은 허용하지만, 위험한 sysctl은 막는다. 따라서 kubelet 설정에 해당 sysctl을 허용해주어야 한다. 1. Kubelet 설정 파일 위치 찾기 systemctl status kubelet 위 명령어를 치면 아래와같이 나온다 /var/lib/kubelet/config.yaml에 위치하는 것을 알 수 있다. 2. allowedUnsafeSysctls 추가 해당 파일을 연 후 아래와 같이 수정한다. apiVersion: kubelet.confi..

공부/Kubernetes 2022.07.18

Bash를 이용해 여러 파일의 내용을 치환하기

변수 명이 변경되거나 URL 주소가 바뀌는 등, 여러 파일에서 참조하는 값의 이름이 변경되는 경우가 있다. 보통 sed를 이용하면 바꿀 수 있지만 하위 디렉토리까지 재귀적으로는 할 수없다. 하지만 grep과 sed를 같이용하면 recursive하게 하위 디렉토리의 파일까지 내용을 바꿀 수 있다. grep -rl 기존문자열 . | xargs sed -i 's/기존문자열/수정후문자열/g' 이렇게 하면 해당 디렉토리부터 하위 디렉토리까지 모든 파일을 탐색하며 {기존문자열} → {수정후문자열}로 바꾼다. 만약 특정 확장자인 파일의 내용만 치환하고 싶으면 아래와 같이 --include 옵션을 쓰면된다. grep -rl 기존문자열 --include \*.go | xargs sed -i 's/기존문자열/수정후문자열/..

공부/Linux 2022.07.15

Go API server template + Dockerfile & yaml

예전에 만들어둔 Golang API 서버 템플릿을 공유한다. https://github.com/aldlfkahs/go-api-server-template GitHub - aldlfkahs/go-api-server-template Contribute to aldlfkahs/go-api-server-template development by creating an account on GitHub. github.com 간략한 코드 설명은 아래와 같다. func main() { mux := http.NewServeMux() mux.HandleFunc("/test", serveTest) mux.HandleFunc("/hello", serveHello) klog.Info("Starting Go test api ser..

공부/Go 2022.07.09

golang convert []byte(byte array) to map[string]interface{}

모르는 json 형식이 들어왔을 때는 이전에 내가 쓴 글처럼 하면된다. https://togomi.tistory.com/48 golang convert json to interface go에서 json을 파싱할때 struct 구조를 모르거나, 키값 하나만 필요한데 struct는 너무 커서 곤란할 때가 있다. 그럴 땐 interface를 통해 파싱하면 간편하다. exampleJson이라는 변수에 json string이 담겨있다 togomi.tistory.com 하지만 위의 글에서는 인풋이 string이라는 전제가 깔려있다. 이런 전제가 만족되지 않는 경우가 있다. http post의 request body를 처리하다가 이 이슈를 겪었다. request를 처리하는 서버 쪽에서는 []byte 형식으로 들어올 ..

공부/Go 2022.06.22

코딩테스트 준비하기 좋은 사이트

프로그래머스 고득점 kit https://programmers.co.kr/learn/challenges?tab=algorithm_practice_kit 코딩테스트 연습 기초부터 차근차근, 직접 코드를 작성해 보세요. programmers.co.kr leetcode top interview question (easy, medium, hard) https://leetcode.com/explore/featured/card/top-interview-questions-easy/ Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are..

공부/알고리즘 2022.06.21