전체 글

DevOps

[Istio] 트래픽 관리 (+카나리 배포)

이전 글을 참고하면 좋습니다. [DevOps] - [Istio] Telemetry (kiali, jaeger) 카나리 배포 새 버전의 어플리케이션을 기존 버전과 함께 배포하여 모니터링하는 배포 전략이다. 일부 사용자만 새 버전을 이용하게 될 것이고, 새로운 버전에 대한 오류를 조기에 감지하는 것이 목표이다. 새로운 버전에 이상이 없다고 판단되면 모든 트래픽을 새 버전으로 옮긴다. 레플리카를 이용한 카나리 배포 k8s의 기존 기능을 활용해서 카나리 배포를 할 수 있다. 기존 버전 외에 image만 다른 새로운 버전의 deployment를 띄우고, 서비스가 두 deployment를 모두 가리키도록 하면 된다. (selector의 app label) 그리고 replica 수를 조정하여 비율을 조정하여 기존 버..

DevOps

[Istio] Telemetry (kiali, jaeger)

이전 글을 참고하면 좋습니다. [DevOps] - Istio Overview Kiali 주요 기능 kiali의 service graph는 두 service 간에 트래픽이 발생하지 않으면 회색 선 처리가 되며, 일정 시간이 지나면 아예 선이 사라진다. 또한 요청이 발생하자마자 트래픽을 바로 실시간으로 보여줄 순 없기 때문에, 특정 서비스가 사라졌다고 생각되면 요청을 전송해서 시스템을 시험하거나 창을 변경(기간 및 새로고침 텀)하며 테스트해야한다. graph type을 Workload graph로 확인하면 서비스 및 워크로드 사이의 response time을 확인할 수 있다. Disply 옵션을 선택하면 트래픽의 흐름을 애니메이션으로 보여준다. payload의 크기 및 트래픽의 양에 따라 아이콘이 달라지므로..

DevOps

[Istio] Overview

Service Mesh k8s 는 지금까지 나온 분산 아키텍처를 구축하기 위한 프레임워크 중 가장 많이 사용된다고 볼 수 있다. k8s 를 통해 MSA를 구축하는데는 문제가 없다. k8s의 약점은 pod 간의 상호연결을 관리하고 그것들에 대한 가시성을 제공하는 부분이다. 서비스 메시를 사용하게 되면, 컨테이너간 모든 호출이 서비스 메시를 경유하게 된다. 서비스 메시가 타킷 컨테이너로 호출을 인도하게 된다. 따라서 서비스 메시는 개별 네트워크 요청에 대한 지표 수집이 가능하다. (클러스터 전반적인 health를 관리하기 위한 prometheus나 grafana와는 다르다.) 서비스 메시는 요청을 받을 때마다 작은 메시를 만든다. 요청을 받은 시각을 기록하고, 타깃 컨테이너로 전달하고, 응답을 받으면 걸린 ..

DevOps

[terraform] 테라폼으로 aws 프로비저닝하기

💡 provider 설정 및 terraform 사용법은 이전 포스팅에서 다루고 있습니다.VPCs & NAT"main" VPC를 생성하고, 두 가용영역에 public subnet, private subnet을 생성한다. # vpc.tf# Internet VPC resource "aws_vpc" "main" { cidr_block = "10.0.0.0/16" instance_tenancy = "default" # default: 물리적 하드웨어에 여러 인스턴스를 가질 수 있다. enable_dns_support = "true" # true: dns 활성화 enable_dns_hostnames = "true" # true: 내부 hostname 사용 tags = { Name = "main" } } # Subn..

DevOps

[terraform] 테라폼 기초

변수모든 변수가 한 파일에 모든 것이 있는 것은 좋지않다. 변수를 다양한 방법으로 활용해야한다. - aws 자격 증명 정보는 git에 올리고 싶지 않을 것이다. 따라서 해당 정보는 별도의 파일로 두어야한다. - 변경될 수 있는 요소를 위해 변수를 활용한다. AMIs 지역에 따라 달라질 수 있다. - 변수를 사용해 테라폼 파일을 쉽게 재사용할 수 있다. 아래 instance.tf 파일을 나누어보자. 모든 정보를 하나의 파일에 다 정의한 모습이다.provider "aws" { access_key = "..." secret_key = "..." region = "ap-northeast-2" } resource "aws_instance" "example" { ami = "ami-0c9c942bd7bf113a2"..

DevOps/Kubernetes

K3s certificate expired

K3s 인증서 유효 기간은 1년이다. K3s 서비스를 재시작하면 만료 혹은 90일 이내로 남은 인증서가 업데이트된다. kubectl 사용시 다음과 같은 에러가 발생했는데 인증서 이슈였다. kubeconfig의 cert가 유효하지 않아 나는 에러이다. $ kubectl get po error: You must be logged in to the server (Unauthorized) 자세한 로그는 k3s 서비스 로그를 확인하자. # master node $ sudo systemctl status k3s K3s 인증서 업데이트 1. 인증서 만료일 확인 openssl s_client -connect localhost:6443 -showcerts &1 | openssl x509 -noo..

KIM DEON
공부하자