728x90

드문드문 k8s를 사용하다보니 매번 반복적으로 쉬운 것들을 잊곤 합니다.
오랜만에 또 새로운 클러스터를 새로운 환경에 만드느라 삽질하는 요즈음,
잊었던 것들을 또 하나씩 적어 볼까 합니다.

ServiceAccount 생성

이번에는 CI/CD 연동 등을 통해 k8s 클러스터에 대한 작업을 같이 수행하고 있습니다. 
빌드 배포시마다 k8s 환경이 잘 구축되어 있는지를 점검하려는 욕심에 그만...
그래서 ServiceAccount 의 생성이 필요해졌습니다.

요약하면... 걍 만들면 됩니다.
그래도 우리는 선언적으로 만드는게 좋겠죠.
네, drone을 쓰려는 중입니다 ㅎㅎ

apiVersion: v1
kind: ServiceAccount
metadata:
  name: drone-bot

 

Role 선언

이번엔 ServiceAccount에 연결할 Role을 정의해 봅시다.
Role을 정의하려다 보니 apiGroups와 해당되는 resources
그리고 사용 가능한 verbs가 뭐가 있는지 또 헤메기 시작합니다. 

% kubectl api-resources -o wide

kubectl로 위 명령을 입력하면 필요한 모든 것들이 쫘아악~
필요한 권한과 대상 리소스에 대한 내용을 확인하면 됩니다. 
늘 느끼는 거지만 APIVERSION은 왜 이리 아스트랄한지...

몇 가지 골라서 일단 때려 넣습니다.
보안 헛점은 일단 고려치 않습니다 ㅎㅎ
필요한 동사들은 조금 더 발라내 봐야겠네요. 

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: drone-bot
rules:
  - apiGroups: [""]
    resources: ["configmaps", "secrets", "services", "namespaces"]
    verbs: ["get", "list", "create", "update", "patch", "delete"]
  - apiGroups: ["apps"]
    resources: ["deployments"]
    verbs: ["get", "list", "create", "update", "patch", "delete"]
  - apiGroups: ["networking.k8s.io"]
    resources: ["ingresses"]
    verbs: ["get", "list","watch", "create", "update", "patch", "delete"]

복수형에 주의하시고, 
엉뚱한 apiGroups에 넣지 않도록 주의합시다!

ServiceAccount와 Role을 연결하는 RoleBinding

이렇게 두개의 k8s 객체를 만들었으니 이제 연결해야겠죠?
RBAC으로 권한 부여를 할 것이기 때문에 RoleBinding을 하면 됩니다. 
이름이 다 drone-bot이라 헷갈릴 수 있지만...

metadata.name 은 RoleBinding의 이름이고
subjects.kind[].name은 생성한 ServieAccount의 이름이며
roleRef.name은 생성한 Role의 이름입니다. 

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: drone-bot
subjects:
  - kind: ServiceAccount
    name: drone-bot
roleRef:
  kind: Role
  name: drone-bot
  apiGroup: rbac.authorization.k8s.io

 

그럼... 이제 생성해보러...

728x90
728x90

얼마전 회사 공식 유튜브 채널에서 개발자 밋업 영상을 찍었습니다.
근래에 회사 공식 유튜브나 블로그에 뭔가 기여한 기억도 없고 하여
겸사겸사 "NGINX 쿡북" 2판 번역서 출간 홍보도 할겸 전격 촬영에 임했습니다.

유튜브 라이브로 진행되는 회사 관련 액티비티는
신년대응 관련해서 진행했던 세션 이후로 간만이라.. 감회가 새로웠습니다.
재미있는 것은 이 영상을 찍은 이후에도 회사내에서 NGINX 관련한 이슈들에 난입할 계기가 있었고
세션에서 했던 이야기들이 헛되지 않았구나 하는 생각을 했었습니다 ^^;

아무쪼록 재미있게 봐주시면 좋겠습니다.
이것도 벌써 찍은지 2주가 넘어가는..ㅎㅎ

 

728x90
728x90

https://developer.zendesk.com/documentation/integration-services/developer-guide/jq-cheat-sheet/#creating-an-array

 

jq cheat sheet

Developer documentation for products at Zendesk

developer.zendesk.com

 

jq 는 한번 대대적으로 정리하자고 생각만 하면서 못하고 있는 중입니다.
매번 안쓰던 방식으로 구현해야 할 시점이 되면 검색하느라 시간을 낭비하고...
전자책 출판이라도 목표로 좀 대대적인 정리를 해보고 싶은 느낌입니다!

여튼, 꽤 쏠쏠한, 특히 배열 관련한 많은 내용이 있어서 퍼와봅니다.

728x90
728x90

 

제작년에 출간했던 <NGINX 쿡북>의 개정판 번역서 작업을 완료했습니다!
지난주부터 여러 서점에 배포되기 시작했고
온라인 서점에서도 쉽게 구입하실 수 있습니다. 

초판 번역은 참 버거웠는데, 개정판 작업은 의외로 빠르게 끝낼 수 있었습니다.
리버스 프록시의 대표주자이자 k8s ingress controller의 대표주자인 NGINX!
아직 익숙하지 않다면 <NGINX 쿡북> 개정판으로 NGINX를 정복해 보는건 어떨까요!?

 

NGINX 쿡북 - YES24

애플리케이션의 성능, 신뢰성, 보안을 책임지는만능 웹 서버 소프트웨어 엔진엑스 제대로 활용하기엔진엑스 설치 및 사용법부터 다양한 모듈과 실전 운영 팁까지 다룬다. 엔진엑스라는 애플리

www.yes24.com

 

본 포스팅은 본인 책에 대한 판매 링크를 포함하고 있습니다. 
판매를 통해 소소한 수수료를 지급받을 수 있습니다!

 

728x90
728x90

트위터에서 돌아다니는 트윗과 짤이 좋은 점은 여러가지가 있지만
하나의 트윗 140자에서 많은 것을 함축적으로 이야기 해야 하기 때문에
컨텐츠(?)의 밀도가 높아서 스낵(snack)처럼 소비하기 좋다는 점입니다 ㅋ

오늘도 지나가다 <6 Linux command you must learn in 2023>라는 트윗을 봤고
여기에 올라와 있던 리눅스 초보자를 위한 터미널 주요 명령을 가져와 봤습니다.
익숙하지 않은 명령들이나 의미를 잘 몰랐던 명령들을 되뇌이는 기회를 만드십시오!

출처 : https://twitter.com/javinpaul/status/1610150056513912833/photo/1

이미지에 포함된 내용들은 사실 굉장히 단순한 명령들입니다. 
하지만 처음 접하시는 분들은 요런 것들도 헷갈릴 수 있다고 봅니다!

#리눅스 #리눅스기초명령어 #linuxcommand #linuxcommandline

 

728x90
728x90

GS네오텍에서 잘 정리해둔 자료가 있어서 읽어보았습니다. 
시장의 싸움은 CMAF와 LL HLS로 압축된 느낌이고 (WebRTC 등은 다른 용도로)
각각은 대부분의 CDN 벤더가 잘 처리해주고 있는 것처럼 생각됩니다.

AWS의 예제로 CloudFront를 사용하는 시나리오가 설명되어 있는데 
다른 특별한 구성이 필요해 보이지는 않는 느낌입니다. 
다만, 내용은 CMAF에 대해서만 염두하고 있는 느낌이고
LL HLS에 대해서는 시험이나 고려되지 않은 것 같습니다. 

https://www.slideshare.net/awskorea/low-latency-live-service-implementation-with-aws

 

AWS 를 활용한 저지연 라이브 (Low Latency Live) 서비스 구현 - 류재춘 컨설턴트/에반젤리스트, GS Neo…

라이브 방송의 성장과 더불어 최근 저지연 라이브 (Low Latency Live) 에 대한 관심이 높아지고 있습니다. 본 강연에서는 Low Latency Live 관련 기술적인 배경과 Latency를 줄이는 원리에 대한 설명을 하고,

www.slideshare.net

 

CMAF를 사용하는 경우 Chunked Transfer가 핵심 기술이 되고
LL HLS를 사용하는 경우 Chunked Transfer가 핵심은 아니긴 합니다. 
아래 장표를 보고나서... 이 자료는 CMAF 기반의 Low Latency 구성이구나를 깨달았습니다. 

 

실제 사용자 환경은 정말 다양하고 품질도 천차만별이라
Low Latency 라이브 서비스를 어떻게 구현할 것인지의 고민이 많을 수 밖에 없습니다.
Trade-off 장표가 그런 고민들을 일목 요연하게 보여줍니다. 

 


AWS Document를 뒤져봐도 Low Latency HLS에 대해서는 이렇다할 내용이 없는 것 같습니다. 
규격상 몇 가지 걸리는 부분들이 있고 CloudFront에 대해서도 고민이 되는 부분인데
조금 더 검색력을 높여 구글신, ChatGPT와 함께 골머리 싸봐야겠습니다.

(추가)
ChatGPT 만세... AWS Elemental MediaPackage가 LLHLS를 지원하네요
셋업해서 한번 시험해 봐야겠습니다!

728x90
728x90

브라우저 등에서 문제가 생겼을 때 tcpdump나 wireshark 등으로 
TCP 레벨 등에서의 분석을 하는 경우가 종종 있습니다. 
하지만, 이렇게까지 해야 하는가... 하는 자괴감이 들때가 많습니다. 
할 때 마다 새롭고...

그리하여 찾아보니, 
크롬 브라우저에 대한 내용만이긴 하지만 
네트워크 레벨의 동작 로그를 추출/분석하는 방법이 있어서
미래의 나는 분명 까먹을테니.. 여기에 정리해 봅니다. 

시작은 이상한 HTTP2 RST 동작을 분석하는 것이었는데
결국 늘 그렇듯... 또 이렇게 블로그에 글 하나를 적고 있습니다 ㅠㅠ

네트워크 로그를 채취하려면...

간단합니다. 
브라우저에서 chrome://net-export/ 를 입력합니다. 
노출되는 도구에서 개인정보 저장 등의 옵션을 고른다음 채취를 시작하면 됩니다. 

 

채취한 로그를 분석하려면...

여러가지 도구가 있는 것 같습니다만 
온라인에서 쉽게 사용할 수 있는 도구가 역시 편한 것 같습니다. 
https://netlog-viewer.appspot.com/#import

 

https://netlog-viewer.appspot.com/#import

 

netlog-viewer.appspot.com

 

채취한 파일을 import 에 넣어주기만 하면 분석화면으로 바뀝니다. 
참 쉽죠?

 

그 다음 분석부터는 각자의 역량입니다!

728x90
728x90

https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html

 

Public DNS query logging - Amazon Route 53

If users are submitting DNS queries for your domain, you should start to see queries in the logs within several minutes after you create the query logging configuration.

docs.aws.amazon.com

 

Route53 은 CloudWatch Logs 로 로그를 보내 분석하기 쉽습니다. 
다만, 이놈의 AWS 는 언제나 문서는 많지만, 원하는 문서를 찾기가 어렵긴합니다.

CWL에서 Log Insights로 Route53 로그를 쿼리할 때
도대체 어떤 컬럼명이 존재하는지 찾는 것도 마찬가지입니다.

일단은 위의 페이지에서 컬럼명을 추정할 수 있고
추정된 컬럼을 쿼리에서 사용할 수 있습니다. 
몇 가지 샘플 쿼리를 미래의 나를 위해 남겨둬 봅니다. 

filter (queryType="A" or queryType="AAAA")
| stats count(*) by queryName, queryType, responseCode, bin(1h)
| limit 50
stats count(*) as numRequests by resolverIp
| sort numRequests desc
| limit 10
filter responseCode="SERVFAIL"
| stats count(*) by queryName

그리고 CWL 쿼리 문서는 아래의 경로에 있습니다. 
정리가 잘 되어 있지 않지만... 대략...?

 

CloudWatch Logs Insights query syntax - Amazon CloudWatch Logs

When you create a query command, you can use the time interval selector to select a time period that you want to query. For example, you can set a time period between 5 and 30-minute intervals; 1, 3, and 12-hour intervals; or a custom time frame. You also

docs.aws.amazon.com

 

#cloudwatch #cloudwatchlogs #route53 #aws #awsroute53 #dns

728x90

+ Recent posts