엔지니어 230

Regression 이란?

머신러닝 관련 자료를 보다보면 Regression 이란 단어가 자주나온다. Linear Regression, Logistic regression, ... 보다보니 통계학에서도 마찬가지다. 회귀라는 말은 알겠는데 뭔말인지 이해가 되지 않는다. 찾다보면 결국 프랜시스 골턴 우생학자의 논문이 기원이었다. (Francis Galton in his 1886 paper "Regression towards mediocrity in hereditary stature") 평균으로의 회귀(regression to the mean) 조금이해가 되긴하는데 좀 더 따라가볼까. 단순히 한글 뜻은 '회귀'. 한 바퀴 돌아서 본디의 자리나 상태로 돌아오는 것. 순화어는 `돌아옴'. 回歸 돌아오다 회 돌아오다 귀 원래대로 되돌아 온다..

엔지니어 2023.03.22

kubelet의 PLEG is not healthy 에러

결론부터말하면 Containerd 1.4.4-1의 rc 1.0.0-rc93의 문제로 이 버전만 피해가면 이슈 없음 상황 kubespray 2.16.0을 이용해서 k8s upgrade를 1.18 -> 1.19 수행하여 클러스터 업그레이드 완료. 이후 Pod의 상태를 확인하면서 CrashLoopBackOff, Error인 것들을 재시작 수행. 이 과정에 갑자기 Node가 NotReady가 되면서 그 node의 pod 전체가 다 Terminating 됨. - 이때부터 pod 상태가 엉망이 됨. 노드의 상태가 NotReady였다가 일부 pod가 종료 처리되고 잠시 Ready 되었었다. 처음에는 pod에 짧은 시간에 많은 노드가 기동해서 그런가 싶었다. 문제파악 우선은 k8s의 노드의 kubelet 상태를 확인하..

엔지니어 2023.03.01

Dockerfile Best Practice (모범 사례)

https://docs.docker.com/develop/develop-images/dockerfile_best-practices/ Best practices for writing Dockerfiles docs.docker.com 수시로 변경될 수 있는 컨테이너를 생성 (Create ephemeral containers)컨테이너는 멈추고 파기될 수 있고 언제든 바뀔수 있기에 최소한의 셋업과 설정으로 구성해야 하므로도커 이미지를 정의하는 Dockerfile은 이를 염두해두고 생성해야한다. build context에 대한 이해 (Understand build context)`docker build` 명령을 실행하는 현재 디렉터리를 build context라고 하고 이 디렉터리안에 Dockerfile이 있습니..

엔지니어 2022.11.03

Python으로 Opendistro Account 생성하기

기존에 Cognito를 이용해서 Kibana의 접근을 제한해왔었다. 기존에는 단순히 kibana 접근만 제한하고 있어서 audit 통과가 목적이었지만 운영하다보니 Role을 부여해서 세세하게 접근을 제한하고 싶어졌다. Elasticsearch의 index단위로 접근을 제한하고 read/write 권한 조절하기 위하여 Opendistro를 이용하기로 했다. Elasticsearch 설치형에서는 이미 사용중이었고 AWS의 ElasticSearch에 지원을 한지 좀 되었지만.. 이제 반영하려한다. aws.amazon.com/blogs/opensource/launching-open-distro-for-elasticsearch-security-features-on-amazon-elasticsearch-servic..

엔지니어 2021.03.17

Cloudfront와 S3를 이용한 웹 서비스 구성

Web service를 시작하기로 하였다. CDN을 둬서 static contents들을 서빙하려하고 cloudfront를 사용하기로 결정하였다. Data의 보관은 S3 bucket에 static contents를 두고 cloudfront에서 접근해서 가져가는 방식을 사용하기로 결정하였다. 기본 세팅 S3, Cloudfront, Route53 관련 세팅하는 것은 하나씩 읽어가면서 누르면 된다. 검색하면 포스팅한 글이 이미 많다. 개인적으로는 각 설정 항목에 대한 설정은 한번 자세히 보고 넘어야가야 한다는 생각이다. velog.io/@dlrmsghks7/learncloudfrontforbiginner 혹은 cloudformation 템플릿을 이용해서 구성한다. github.com/aws-samples/am..

엔지니어 2021.03.10

Jenkins 사용자 목록 curl로 가져오기

회사에서 라이센스를 유지하려면 감사를 받아야하고 그 항목중에는 퇴사자 처리 규칙이 존재한다. 계정관리가 완전히 되면 상관이 없겠지만 혼자서 한국/외국 사무실과 인프라 관련 계정을 관리하다보니 직접 관리하기가 생각보다 어렵다. 각국의 인사팀에서 slack은 확실하게 관리해주고 있어서 slack 기준으로 퇴사자를 비교한다. 대부분 API를 제공해줘서 (github, aws, private cloud, apm monitoring tool) 문서를 보고 알아서 만들어다가 썼는데 Jenkins는 예외였다.. 관리하려면 jenkins 사용자 목록을 가져와야 하고 그것과 관련한 API가 있긴한데 Script Console에서 Groovy script 문법을 이용해서 가져오는 방법이 있다. 다른 방법은 못 찾았다. 분..

엔지니어 2020.12.29

Hashicorp Terraform (테라폼)

Terraform Go language: github.com/hashicorp/terraform Protocol: http [ 사전적 의믜 ] Terraforming(테라포밍)은 지구가 아닌 다른 행성 및 위성, 기타 천체의 환경을 지구의 대기 및 온도 생태계와 비슷하게 바꾸어 인간이 살 수 있도록 만드는 작업으로 화성탐사 관련해서 종종 등장하는 용어입니다. 하시코프에서 이 제품의 이름을 왜 이렇게 지었을지 생각해보았습니다. 단어 뜻에서 각기 다른 모든 vendor의 인프라 환경을 비슷하게 바꾸어 서비스를 할 수 있도록 만드는 작업을 하는 도구라고 느껴집니다. [ 특징 ] 테라폼은 Chef, Puppet, 과 같이 Infrastructure provisioning 툴로 분류할 수 있습니다. The key..

엔지니어 2020.10.28

Python3를 이용한 Tistory Authentication Code 방식 인증 (2020.09.01 변경사항 반영)

안녕하세요 쿤드입니다. 🍀 가끔씩 보고 싶은 정보들을 모아 블로그에서 보고 싶을때 정보를 쫙 모아다가 Tistory의 OpenAPI를 이용해서 올리곤 했었습니다. (가끔이라서 수동으로 함) 오늘 오랜만에 좀 보려고 했는데 자꾸 400 Error가 발생하고 이유는 모르겠고.. 뒤져보니 response_type=code 방식을 이용해서 하라고 하는 것을 보니 뭔가 변경된것 같았습니다. Open API 사용하기 위한 App 등록이 선행되어야 하는데 이는 검색하면 많이 나와서 넘어갑니다. 자세히 Autoriztion Code 방식을 읽어보니 기존에 제가 인증받아서 사용하던 code에서 끝나는 것이 아니라 그 code를 가지고 token을 받아서 그 token을 이용해야 하는 것이 었습니다. 그래서 방법은 총 3..

엔지니어 2020.09.25

AWS Subnet 생성하기

안녕하세요 쿤드입니다. 🍀 이번엔 Subnet을 생성해보려고 합니다. 제가 사용하는 리전에는 Availability Zone이 3개가 있긴한데 2개의 Zone만 사용해서 private용 2개, public용 2개 총 4개를 생성했습니다. IPv4 CIDR block으로 IP 범위를 지정해주었는데 각 서브넷당 최대 4094개의 host를 할당 해 줄 수 있도록 netmask는 20으로 설정했습니다. 10.3.0.0/20 (10.3.0.1 ~ 10.3.15.254) 10.3.16.0/20 (10.3.16.1 ~ 10.3.31.254) 10.3.32.0/20 (10.3.32.1 ~ 10.3.47.254) 10.3.48.0/20 (10.3.48.1 ~ 10.3.63.254) Subnet을 생성하고 나면 각 서브..

엔지니어 2020.07.23