error: Token used too early, {} 너무 짧은 간격으로 로그인할 때 로그인이 실패하는 에러이다. 이 경우, 백엔드에서 토큰을 검증할 때 clock_skew_in_seconds 라는 속성에 10 정도를 넣으면 해결 가능하다. # ID 토큰 검증 idinfo = id_token.verify_oauth2_token( credential, requests.Request(), client_id, clock_skew_in_seconds=10 )
Study
목차Cloud Shell이란 무엇인가.간단 정리Cloud Shell은 브라우저에서 사용할 수 있는 GCP용 VM(Virtual Machine)이다.이 VM 안에는 사전에 GCP를 다루는 모든 도구들이 세팅되어 있다.장점시간, 장소에 구애받지 않고 어떤 환경에서든 바로 GCP 관련 작업을 할 수 있다.Cloud shell 내부 구조Cloud shell은 사용자에게 VM을 하나 빌려주는 것과 같음.특징가상 컴퓨터 (VM - Virtual Machine):사용자가 Cloud Shell을 실행하면, Google은 사용자만을 위한 작은 가상 컴퓨터를 제공.이 가상 컴퓨터는 리눅스(Linux)라는 운영체제로 작동따라서 내가 한 작업은 다른 사람에게 공유되지 않다.미리 설치된 도구들:이 가상 컴퓨터 안에는 이미 Go..
저는 여전히 CKAD 취득을 위해 공부중입니다. 드디어 스터디도 다음주가 끝이네요! 이번주에는 Helm에 대해 공부했었는데, 공유하고자 게시글을 작성합 니다. 쿠버네티스를 공부하면서 가장 의문이었던 점은 아래와 같았습니다. 아니 현업에서는 앱이 엄청 커질텐데, Pod, Deployment, Service 등 관련된 리소스가 많아지면 그 수많은 YAML 파일들을 대체 어떻게 관리하지? 그래서 등장한 것이 바로 Helm!Helm은 일종의 Kubernetes용 패키지 매니저로, 복잡한 리소스를 묶어서 템플릿으로 관리하고 손쉽게 배포할 수 있게 해줍니다. apiVersion: apps/v1kind: Deployment...---apiVersion: v1kind: Service... 이런 반복적인 작업을 조금..
Cloud Monitoring overviewCloud Monitoring overview | Google CloudCloud Monitoring services란?Cloud Monitoring은 사용 중인 다른 Google Cloud 서비스와 application의 상태와 성능을 파악하는 데 사용할 수 있는 다양한 서비스를 제공한다.Alerts and notificationsPerformance metric의 값이 사전에 정의한 수치에 닿았을 때 알림을 보낼 수 있는 서비스. 이렇게 하려면 alerting police를 생성하면 된다. (https://cloud.google.com/monitoring/alerts)이때 알림은 email, Cloud Mobile App, Slack 같은 서비스로 보낼 수..
IngressIngress = 외부(클러스터 바깥)에서 내부(Pod)로 들어오는 HTTP/HTTPS 요청을 관리하는 규칙Ingress의 역할외부 사용자가 클러스터 내 서비스에 접속할 수 있게 해줌도메인, 경로, 포트를 기반으로 트래픽을 적절한 서비스로 라우팅예: mydomain.com/web → web-service로 전달구성 요소Ingress Resource: 라우팅 규칙 정의Ingress Controller: 규칙을 실제로 적용해 트래픽을 전달Ingress Resource트래픽을 어떤 서비스로 보낼지 선언적으로 정의한 YAML 리소스apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: example-ingress annotations: ..

최근 GCP에서 Metric export pipline을 구현하기 위해 오픈소스를 분석할 일이 있었다.문제는 짧은 시간 내에 전체 소스를 파악해야 한다는 점. 다들 아시겠지만, 낯선 오픈소스 레포를 빠르게 이해하는 건 정말 쉽지 않다. 특히 문서화가 잘 안 되어 있는 경우엔 더더욱.이때 문득,"AI로 코드 구조를 시각화해주는 서비스 없을까?"하는 생각이 들었고, 우연히 발견한 게 바로 gitdiagram이다.Gitdiagram이 뭐냐면?간단히 말하면, GitHub 레포를 시각화해서 구조를 한눈에 보여주는 AI 기반 도구다.링크 하나만 입력하면, 해당 레포를 분석해서 다음과 같은 정보를 자동으로 정리해준다:전체 파일 및 디렉토리 구조주요 모듈의 설명흐름도 스타일의 시각적 구조사용된 기술 스택코드의 역할별 ..
오늘은 아주 사소하지만 중요한, 그리고 누구나 한 번쯤은 겪을 수 있는 HTTP 요청 실수에 대해 이야기해보려고 한다.사건의 발단서버에 POST 요청을 보내야 했다. 그런데 특별히 보낼 데이터는 없어서, 다음과 같이 null을 body에 실어서 보냈다.axios.post("/api/something", null, { headers: { "Content-Type": "application/json", },});이때까지만 해도 아무 문제가 없을 줄 알았다. 하지만 요청을 보내자마자 클라이언트에서 예외가 발생했다. 대략 이런 에러였다:SyntaxError: Unexpected token 'n', "null" is not valid JSON뭐가 문제였을까?처음엔 axios 버그인가 싶어서 공식문서를 다..

쿠버네티스 서비스 (Services)쿠버네티스 서비스는 애플리케이션을 다른 애플리케이션 또는 사용자와 연결하는데 도움예를 들어 프론트 와 사용자, 프론트와 백엔드를 연결하는 것이 서비스 이다.외부 연결 Node가 192.168.1.2로 네트워크가 공개되어 있을때 노트북으로 어떻게 10.244.0.2 에 접근할 수 있을까? 일단 SSH 로 연결하면 가능하다. SSH로 연결해서 http 요청을 보내면 응답을 받을 수 있을 것이다. 하지만 우리가 외부에서 접속을 할 때 바라는 것은 이게 아니다. 우리는 Node가 배포된 192.168.1.2를 통해 접속하고 싶다. 이 때 쿠버네티스의 Service 가 사용된다. 서비스의 대표 사례중 하나이다. 배포된 노드의 포트를 대기하고 있다가 해당 포트에서 요청이 ..

컨트롤 플레인 컴포넌트컨트롤 플레인 컴포넌트는 한마디로, 클러스터를 전반적으로 관리하는 핵심 컴포넌트이다. 컨트롤 플레인 컴포넌트가 하는 일스케줄링 수행클러스터 이벤트 감지 및 반응파드 생성, 노드 장애 등 이벤트를 감지하고 필요한 조치 수행 (→ kube-controller-manager가 담당)API 제공kubectl 등에서 요청하면 이를 처리하고 상태를 etcd에 저장 / 조회클러스터 상태 저장원하는 상태 유지상태가 사용자가 정의한 상태와 다르면 자동으로 조절 (controller-manager)네트워크 정보 전달컨트롤 플레인 컴포넌트의 위치클러스터 내 어떤 머신이라도 동작 가능일반적으로 간결성을 위해 한 머신 안에 모든 컨트롤 플레인 컴포넌트를 구동 시킴. 이 때, 사용자 컴포넌트는 해당 머신 ..

1. 쿠버네티스란? 쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포, 확장, 관리해주는 오픈소스 플랫폼입니다. 여러 서버에 걸쳐 있는 컨테이너들을 효율적으로 운영할 수 있도록 도와주는 컨테이너 오케스트레이션 도구입니다. Kubernetes는 K8s로 줄여부르는 경우가 많습니다. 이건 K와 s 사이의 8글자를 줄여서 표현한 것입니다. 1.1 쿠버네티스가 왜 중요한가요? 소프트웨어 기술이 발전하며, 서비스들이 복잡해졌습니다. 이에 따라 거대한 하나의 큰 아키텍처 (Monolithic) 로는 한계가 있습니다. 예를들어, Instagram을 하나의 서비스로 구축할 수 있을까요? 단순한 앱의 Frontend와 Backend는 물론이고 추천알고리즘, 광고, 신고, 필터링, DM, Live streaming..