전체 글15 Keycloak을 이용한 SSO Kubernetes dashboard 인증 안녕하세요. Kubernetes 사용자로써 대부분 Kubernetes Dashboard 를 사용하실것으로 생각됩니다. 대부분의 접근 방식은 proxy를 통한 로컬접근인데요. 이런 접근방식은 다소 불편하며 토큰 업데이트가 필요합니다. 또한 사용자에 따른 dashboard권한을 다르게 줄 필요가 있습니다. Keycloak + oauth2-proxy를 이용하여 위의 문제를 해결하고자 합니다. Keycloak은 인증 & 권한부여 오픈소스입니다. Keycloak을 이용하여 사용자 인증을 하며 토큰에 특정권한을 부여할 예정입니다. ex) dev, admin등등에 대한 그룹정보 oauth2-proxy는 어플리케이션이나 이런 dashboard서비스 앞단에 oauth 인증 reverse proxy를 통해서 어플리케이션 .. 2022. 2. 8. Istio를 이용한 Kubernetes-dashboard 도메인연동 Kubernetes dashboard를 istio와 함께 연동하여 외부에서 접근하는 방법에 대해서 애기하겠습니다. 내부적으로 HTTPS로 실행되는 대시보드관련해서 몇가지 문제가 있습니다. HTTP로 수정처리 insecure하여 재수정합니다. 준비물 cert-manager 설치 istio 설치 kubernetes-dashboard 설치 Kubernetes-dashboard 설치 https://github.com/kubernetes/dashboard GitHub - kubernetes/dashboard: General-purpose web UI for Kubernetes clusters General-purpose web UI for Kubernetes clusters. Contribute to kubern.. 2022. 1. 24. Vscode 시스템 환경변수 적용하기 프로젝트에서 특정 AWS키등 특정 보안관련된 변수값은 개인 시스템환경에 저장했는데요. Vscode를 통해서 Testing, Debug시 시스템 환경변수를 읽히는 방법에 대해서 간단히 소개합니다. .vscode/settings.json terminal.integrated.env.osx 라인에 Path값을 설정해주세요. { "go.testFlags": ["-v", "-count=1", "-timeout=55m"], "editor.formatOnSave": true, "terminal.integrated.env.osx": { "PATH": "...:/usr/bin:/bin:..." } } 위와 같이 맥인경우는 잘동작합니다. 가끔 제대로 인식이 안되는경우는 재실행을 해주세요. 2022. 1. 23. Argo CD CLI를 이용한 프로젝트 등록 안녕하세요. Argo CD CLI를 이용한 프로젝트를 등록방법에 대해서 설명합니다. 아래와 같이 cli를 통해서 등록처리 할경우 좀더 유연한 CI/CD 구성이 가능합니다. 준비물 Argo CD CLI 설치 argocd-server 등록된 서버주소 Argo CD CLI 설치 사용자가 mac인경우 아래와같이 설치해주세요. brew install argocd Argo 서버 로그인 아래와 같이 서버주소를 통해서 로그인합니다. 또한 설치시 등록한 관리자 username, password를 넣으시면 인증이 됩니다. argocd login Cluster 추가 argocd cluster add arn:aws:eks:ap-northeast-2::cluster/ Repository 추가 argocd repo add htt.. 2022. 1. 23. Github Label Tool 적용 github를 이용하다보면 디폴트 라벨의 설정하여 사용하는데 git-labelmaker를 이용하여 많이 사용하는 라벨을 적용해보자. Github 라벨세팅 1. Install yarn global add git-labelmaker OR npm i -g git-labelmaker Usaged git-labelmaker package label load : configs/labels/(default.json or normal.json or pro.json) 선택하여 등록한다. normal.json [ { "name": "Priority: Low", "color": "#0E8A16" }, { "name": "Priority: Medium", "color": "#fbca04" }, { "name": "Priori.. 2022. 1. 23. EKS Cluster Autoscaler(CA scales) AWS문서 기준으로 작성하였습니다. Kubernetes Deployment scale등 기타 Node에 대한 최대 리소스 사용으로 더이상 스케줄러가 Pod을 할당 할 수 없을경우? 아래와 같이 Pod상태가 디폴트 10초동안 pending일경우 AWS, Google등 벤더사에 추가 Node를 요청합니다. 준비물 AWS 이해 AWS EKS 설치 완료 & AWS CLI 노드그룹 태그설정 아래와 같이 노드그룹의 태그설정에 aws EKS의 cluster이름과 함께 추가 해줍니다. Key Value k8s.io/cluster-autoscaler/ owned k8s.io/cluster-autoscaler/enabled TRUE IAM Policy 등록 오토스케일관련 서비스 계정에 대한 IAM 정책 생성 aws iam.. 2022. 1. 23. Argo CD설치 istio를 이용한 https 구축 안녕하세요 Walter 입니다. 오늘은 gitops를 구현하기 위한 argo cd를 설치 하고자합니다. 아래와 같은 개발 github+argo cd+kubenetes 구성이 될듯합니다. 자세한 내용은 다음에 다루도록 하겠습니다. 우선 아래와 같은 구성을 위해서 Argo CD를 구축해봅시다. 준비물 Istio 설치 - 서비스 메쉬 게이트웨어 Cert-manager 설치 - 인증처리 Kubernetes 환경 Istio Sidecar 적용 자동화 istio sidecar적용을 합니다. # 네임스페이스는 argocd로 합니다. kubectl create namespace argocd # argocd를 istio sidecar로 등록합니다. kubenetes master의 컨트럴러 등록 kubectl label .. 2022. 1. 22. Kubernetes Pod 특정상태 삭제하기 Kubernetes에서 Pod생성하는데 리소스 부족시 Evicting(퇴거) 처리하는 관리가 이루어집니다. 하지만, 자동으로 Pod이 사라지지 않고, 남아있게 되는 이슈가 있는데요. 명령어를 통해서 한번에 특정 상태에 따른 pod 리스트 삭제가 필요합니다. Grep 을 이용하여 특정 상태(Evicted) pod 검색 kubectl get pods -n app | grep Evicted user$ kubectl get pods -n app | grep Evicted NAME READY STATUS RESTARTS AGE account-568b499887-mdwvz 2/2 Evicted 2 2d2h api-6966bfdfd8-qxm46 2/2 Evicted 2 2d2h Awk를 이용하여 pod name을 추.. 2022. 1. 22. Kubernetes환경의 Argo CD를 이용한 Gitops구현 적용 안녕하세요. Walter입니다. 이전 포스트에서 Argo CD설치를 이용한 프로젝트를 GitOps 구현 적용하겠습니다. 아래와 같은 workflow를 통해서 Build, Sync하는 과정을 토해서 배포하는 방법에 대해서 하나씩 살펴보겠습니다. 준비물 AWS Credendial IAM 구성 & ECR 구성 Kubernetes에 Argocd 설치 github action실행할 서비스 Repository github charts 관리 Repository - argo-example 1. ECR 이미지 Repository 등록 프로젝트를 Dockerfile로 또는 기타 방법으로 빌드처리합니다. 빌드된 컨테이너 이미지를 저장소로 AWS ECR로 저장하겠습니다. aws ecr create-repository \ --.. 2022. 1. 21. API 인증프로세스 Istio Ingress Gateway, OAuth2-Proxy and Keycloak 소개 Istio Ingress Gateway, OAuth2-proxy, Keycloak을 이용하여 모든 서비스를 요청하기전, 인증처리 프로세스를 추가할수 있습니다. 예를 들어 Kubernetes Dashboard같은 경우 AWS IAM유저를 등록을 통해서 접근하는데요 보안적으로나 관리면서 많이 불편하며, 유연하지 못한 방법입니다. 아래와 같은 방법을 통해서 외부 Provider즉 Github, LDAP등 OIDC를 이용하여 Keycloak + OAuth2-proxy를 통한 인증 프로세스 접근에 대해서 소개합니다. 준비물 Kubernetes 환경 Istio 설치 Keycloak 설치 Keyclock MSA 인증서비스로 레드햇이 만든 인증 & 권한을 부여해주는 오픈소스입니다. 국제적인 인증, 인가 표준(OI.. 2022. 1. 20. Golang을 이용한 Graphql서버 구현 안녕하세요 Walter입니다. 이번시간은 Golang을 이용해서 Graphql서버를 구현하고자 합니다. 개인적으로 Graphql 서버를 구현할때 자주 사용하는 라이브러리가 있어서 같이 소개하고자 합니다. Golang 다운로드 맥사용자는 brew install golang도 가능하지만 개인적으로, 아래와같이 설치를 선호합니다. Golang 다운로드 https://go.dev/dl/ 사이트에서 다운로드 Tools 설치 https://github.com/golang/tools Graphql 라이브러리 고려사항 golang에서 graphql 라이브러리가 몇가지 있습니다. 크게는 2~3개가 유명하지만, 라이브러리를 사용하는데 있어서 선정기준을 정했습니다. 1. 스키마 우선접근의 제공 2. 스키마를 통한 코드 제너.. 2022. 1. 20. Kubernetes 소개 Kubernetes를 구성하는 기본정의와 내부 프로세스 흐름을 통해 전체적인 Kubernetes를 이해하는데 도움이 되고자 작성하였습니다. Master Node(컨트롤 플레인) Kube-apiserver kubernetes API를 제공하며, kubectl를 통해서 원하는 리소스를 조작해주는 역할을 합니다. 또한 Worknode의 각각의 node에서 실행되는 kubelet과 통신하는 역할을 합니다. Etcd Kubernetes 요청된 리소스 생성 관리되는 모든 객체정보를 저장하는 Key-value store입니다. Kube-scheduler api를 통해 요청해온 object정보를 통해서 적절한 worknode를 결정하는 역할을 합니다. pod의 스펙을 통한 (CPU, Memory등의 리소스) 및 특정N.. 2022. 1. 19. 이전 1 2 다음