전체326 [Keycloak 21/Terraform] AWS SAML 로그인 연동하기 # provider 설정 2023.10.29 - [공부/IaC] - [Terraform] Keycloak Provider 구성하기 (Keycloak 21) # 로컬 변수 설정 locals { keycloak_url = "" # keycloak 주소 keycloak_realm = "" # aws용 keycloak realm 이름 } # [keycloak] aws client 생성 resource "keycloak_saml_client" "aws" { realm_id = local.keycloak_realm client_id = "urn:amazon:webservices" idp_initiated_sso_url_name = "amazon-aws" assertion_consumer_post_url = "htt.. 2023. 10. 29. [Keycloak 21] AWS SAML 로그인 연동하기 terraform 버전 2023.10.29 - [공부/Open Source] - [Keycloak 21/Terraform] AWS SAML 로그인 연동하기 # 1. 별도 realm 생성 (Optional) master realm과 별도로 유저/그룹 관리를 할 것이기 때문에 realm을 생성한다. (master realm하고 동일한 유저 관리를 할 것이라면 생략해도 좋을 듯 하다) 나는 infra 라고 만들었다. # 2. aws client 생성 (urn:amazon:webservices) 먼저 aws sp (서비스 제공자) 파일을 다운받자 curl -O https://signin.aws.amazon.com/static/saml-metadata.xml infra realm에서 Clients > Import.. 2023. 10. 29. [Keycloak 21] Google idp 추가 # Google OAuth Client 만들기 GCP 접속 > User 정보를 제공할 프로젝트 진입 > API 및 서비스 > 사용자 인증 정보 > 사용자 인증 정보 만들기 > OAuth 클라이언트 ID 애플리케이션 유형 : 웹 애플리케이션 이름 : 식별 가능한 이름 설정 그리고 승인된 리디렉션 URI를 아래 규칙에 맞게 추가해주자 https://[keycloak host]/realms/[realm 이름]/broker/google/endpoint https://keycloak.honglab.com/realms/master/broker/google/endpoint google idp를 여러 keycloak realm에 등록하는 경우, realm별 URI를 다 추가해주자 (나는 master realm에만 추가.. 2023. 10. 29. [Terraform] Keycloak Provider 구성하기 (Keycloak 21) # 공식 문서 https://registry.terraform.io/providers/mrparkers/keycloak/latest/docs#client-credentials-grant-setup-recommended Terraform Registry registry.terraform.io 여기에 어느정도 설명은 나와있으나, 21버전/사진 과 함께 설명해본다. # Terraform용 Client 생성 키클락 내 모든 권한을 갖도록 만들 것이다. -> master realm에서 client를 만들어야 한다. Client ID만 필수로 정해주자 > 하단의 Next Capability Config도 수정해주자 Client authentication : ON Standard flow : OFF Direct ac.. 2023. 10. 29. 갑상선암 진단 갑상선암을 진단받았다 집안 내력에 암이 있어서 아직 젊은데도 온 것 같다. 그래도 예후가 좋은 갑상선암으로 온 점과 아직 증상도 없는데 건강검진하다가 발견한 점, 그리고 일찍부터 보험들을 잘 들어놔서 진단금을 짭잘하게 받을 수 있다는 점까지... 그냥 긍정적으로 생각하기로 했다. 인생이 참 다이나믹하다. 2023. 10. 29. [Keycloak 21] k8s cluster에 helm chart로 설치하기 bitnami 에 키클락 차트가 있다. https://artifacthub.io/packages/helm/bitnami/keycloak keycloak 17.2.0 · bitnami/bitnami Keycloak is a high performance Java-based identity and access management solution. It lets developers add an authentication layer to their applications with minimum effort. artifacthub.io # values file auth: adminUser: admin adminPassword: admin ingress: enabled: true ingressClassName: n.. 2023. 10. 29. [Github Action Runner] Self-Hosted Runner in Amazon Linux 2023 깃헙 액션 러너를 세팅하는 것은 매우 쉽다. 근데 amazon linux 2023 에서 진행하며, 공식 가이드에 있는것만으로는 부족해 남겨둔다. 먼저 토큰은 알아야 하므로... 깃헙 > Settings > Actions > Runners > New runner > New self-hosted runner 를 누른다. 그럼 이런 화면이 뜬다 이대로만 하면 중간에 Shasum command not found Libicu's dependencies is missing for Dotnet Core 6.0 라는 에러들을 보게 된다. 최종적으로는 아래와 같이만 하면 된다. (linux, x86 기준) mkdir actions-runner && cd actions-runner curl -o actions-runner.. 2023. 9. 17. [Kubernetes] Graceful Shutdown - preStop 설정 # Graceful Shutdown이란? 현재 들어온 요청을 모두 수행하고 우아하게 종료한다 ... 는 개념 예를 들어, A deployment가 restart 된다고 할 때 pod B가 죽고 pod C가 새로 떠야한다고 가정해보자 service에서 pod B -> pod C 엔드포인트 변경을 해줘야 하는데, 이게 조금 늦을 수 있음 그러면 pod B는 종료되어야 하지만 여전히 pod B로 트래픽이 흘러들어갈 수 있음 -> pod B의 Application은 새로운 요청 수락만 먼저 중지하고, 모든 연결이 종료된 다음에 죽어야 함 또 다른 예시로, pod가 특정 DB와 connection을 맺고 있는 경우 해당 연결을 종료하고 죽어야 함 # Pod 종료 순서 사람 또는 시스템 : Pod 종료 API 발생.. 2023. 9. 15. [EKS/Java/IRSA] JAVA App에 IRSA 부여할 때 종속성 추가하기 # 상황 IRSA : AWS EKS에 띄운 Application에 Pod 단위로 IAM Role을 부여하는 방법 따라서 AWS 리소스를 사용하는 Application을 쿠버에 띄울 때 IRSA 방식을 사용하면 보안적으로 좋다 근데 자바 앱들이 IRSA로 넣어준 Role을 사용하지 않고, 자꾸 EKS Node의 Role을 사용하다가 권한 에러가 났다. # 결론 sts 종속성을 추가해줘야 한다. dependencies { implementation("software.amazon.awssdk:sts:2.20.140") } # 분석 간단히 풀어 말해, IRSA 방식은 AWS STS 서비스의 AssumeRoleWithWebIdentity API 를 사용해 Role을 부여한다. -> 자바 앱들은 STS 종속성이 없.. 2023. 9. 15. [PostgreSQL] Docker로 뜬 PostgreSQL DB -> RDS data 마이그레이션 # 상황 EC2 위에 도커로 PostgreSQL DB가 하나 돌아가던게 있었음. -> RDS로 마이그레이션 필요 진행 방식 : EC2 접속 > 도커 접속 > 디비 덤프 > 덤프파일 가져와서 RDS로 Restore EC2 접속은 gossm 사용함. # Docker로 띄운 PostgreSQL DB 접근 및 백업 ## gossm으로 EC2 접속 후 진행 # postgres docker 접속 sudo docker exec -it postgres /bin/bash # 도커 내에서 db backup 후 exit echo $POSTGRES_USER echo $POSTGRES_PASSWORD pg_dumpall -U $POSTGRES_USER > pg_dumpall_20230915.backup exit # 도커 내 백.. 2023. 9. 15. [grafana] provisioned Datasource/ContactPoint 제거 Provisioned Data Source? -> 콘솔 작업이 아닌, Config를 통해 Provisioning된 Data Source. (Contact Point도 마찬가지) 나같은 경우, grafana 공식 helm chart에서 바로 프로메테우스를 등록시켜주고 있었다. datasources: datasources.yaml: apiVersion: 1 datasources: - name: {Prometheus-Name} type: prometheus access: proxy url: {Prometheus-Url} 그러나 작성해둔 datasource를 지우고 재 배포해봐도 실제로는 삭제되지 않는다. 콘솔에서 삭제 시도 시.. Provisioned data source는 콘솔에서 못지운단다. 그럼 어떻게 .. 2023. 9. 5. [terraform-provider-kubernetes/Issue] StorageClass ReclaimPolicy 관련 이미 생성된 Strorage Class의 경우, Reclaim Policy를 변경할 수 없다. 그러나 Terraform 으로 변경 시도 시 변경된다고 뜸 -> 실제로 변경되진 않음 Terraform으로 변경 시도 시, replacement되도록 변경되어야 한다. 이미 누가 이슈를 올려놨다. https://github.com/hashicorp/terraform-provider-kubernetes/issues/1965 Storage class reclaim_policy changes don't force recreation · Issue #1965 · hashicorp/terraform-provider-kubernetes For a plan like this: # kubernetes_storage_class.. 2023. 9. 5. [RBAC & IRSA] ECR Secret Updater Cronjob 구성 pod가 ECR의 이미지를 받아오는 방법은 여러가지가 있다. 1. EKS에서 보편적이고 권장되는 방법인, EKS Node Role의 권한으로 받아오는 것 2. ECR Token 값을 받아와 Docker Secret으로 저장 후 pod가 해당 Secret을 물고 올라감 나도 당연히 우리 회사의 새 아키텍처에서 1번으로 세팅해두고 싶었다. 그러나! 새 아키텍처에서는 "모든 계정의 클러스터" 에서 "공용 계정의 ECR" 에서 이미지를 받아오는 것으로 결정됐다. 뭐...그래도 Cross Account로 받아오는 방법이 당연 있을텐데, 역시 ECR Repository 단위로 타 계정을 허용해줄 수 있었다. { "Version": "2008-10-17", "Statement": [ { "Sid": "AllowPus.. 2023. 9. 4. [oh-my-zsh/agnoster] prompt에 kubernetes context 표시하기 (theme prompt customizing하기) k8s 클러스터를 여러 대 운영할 때, 현재 컨텍스트가 헷갈리는 경우가 많다. 터미널 세션별로 컨텍스트 다르게 유지한다거나, iterm status bar에 컨텍스트를 표시한다거나 방법들이 있지만, 나는 그냥 터미널 명령줄 프롬프트에서 현재 컨텍스트를 보면서 명령을 날리고 싶었다. agnoster prompt 커스터마이징을 어떻게 하는지 찾아봐도 잘 안나와서...그냥 코드 까보고 직접 구성해봤다. 결과적으론 아래와 같다. 클러스터 이름 : prod일땐 빨간색, 그 외엔 노란색 네임스페이스 이름 : cyan 색 클러스터와 네임스페이스 사이 콜론은 흰색 ~/.oh-my-zsh/themes/agnoster.zsh-theme에서 진행 먼저 kubectx용 prompt segment를 정의해야 한다. prompt.. 2023. 7. 30. [Grafana Loki] Errors loading rules # 상황 - 중앙 EKS 클러스터에 grafana chart를 사용해 Grafana가 설치되어 있음 - 각 EKS 클러스터별로 loki-stack chart를 사용해 Loki와 promtail이 설치되어 있음 - 각 EKS 클러스터별로 kube-prometheus-stack chart를 통해 Prometheus와 AlertManager가 설치되어 있음 (로키 스택에서 프로메테우스도 전부 깔 수 있지만, 프로메테우스가 먼저 깔려있는 상태에서 로키 도입하다 보니 이렇게 됨) # 문제 상황 Grafana와 Loki를 별도로 쿠버네티스 위에 띄우고, Grafana에서 Data Source로 Loki를 추가했습니다. Connection Test는 성공하지만,,, 위 사진처럼 Alert rules로 가면 로키 데이.. 2023. 7. 27. 이전 1 ··· 3 4 5 6 7 8 9 ··· 22 다음