728x90
반응형
$ helm install -f values.yaml my-release bitnami/redis​
$ helm repo add bitnami https://charts.bitnami.com/bitnami

현재 구현하고 있는 Service의 경우 Redis를 사용해야 하기 때문에 Redis는 local에 설치하였다. 

 

요즘 추세가 Kubernetes operator를 사용하여 설치하지만 Local Kubernetes를 이용해야 하고, Service type을 NodePort를 사용하여 IDE에서 테스트를 하고 싶었기 때문에 Helm chart를 이용하고 싶었다. 그리고 Github에 values.yaml를 저장해두면 설정 파일의 버전을 관리할 수 있으니 이 방법을 택했다. 

 

현재 가장 잘 관리되고 있는 redis의 Helm chart는 bitnami에서 관리되는 Chart 이다. 아래 경로를 참조하기 바란다. 

 

https://github.com/bitnami/charts/tree/master/bitnami/redis

 

GitHub - bitnami/charts: Bitnami Helm Charts

Bitnami Helm Charts. Contribute to bitnami/charts development by creating an account on GitHub.

github.com

 

모든 설치방법과 상세한 옵션은 위의 사이트에 자세하게 나와 있지만 간단하게 master 1개와 replica 1개를 설치하는 방법을 공유하고자 한다. 이 또한 나의 기억을 유지하기 위한 방법이므로... ㅎㅎ

 

Helm Repository 등록

bitnami의 chart를 사용하기 위해서는 우선 Helm repository를 등록해야 한다. 

$ helm repo add bitnami https://charts.bitnami.com/bitnami

 

Installation

변경된 values.yaml과 함께 설치를 하기 위해서는 `-f` 옵션을 이용한다. `my-release` 부분은 원하는 배포명을 입력하면 된다. 

$ helm install -f values.yaml my-release bitnami/redis

 

Uninstallation

$ helm delete my-release

 

변경한 Configuration in values.yaml

1. Service 변경

NodePort 30379를 open 하였다. 

service:
    type: NodePort
    port: 6379
    nodePort: 30379
    externalTrafficPolicy: Cluster

2. Replica count 변경

리소스 문제가 있으므로 replica count 는 1로 설정하였다. 

replica:
    replicaCount: 1

3. Persistence Volume 설정

Local 환경의 Volume은 yaml 파일로 우선 생성한 후 연결하였다. 개발용으로 많은 데이터를 저장하지 않을 것이기 때문에 1Gi 로 셋팅하였다. 

persistence:
    existingClaim: "redis-pvc"

 

Persistence Volume chart

아래 저장소의 Helm chart로 volume을 설치하였다. 

 

저장소 Link : https://github.com/coolexplorer/k8s-charts/tree/main/charts/volumes/charts/redis-vol

 

GitHub - coolexplorer/k8s-charts: Kubernetes Helm Chart Repository for the environment for Software Quality via kind and k3d

Kubernetes Helm Chart Repository for the environment for Software Quality via kind and k3d - GitHub - coolexplorer/k8s-charts: Kubernetes Helm Chart Repository for the environment for Software Qual...

github.com

 

728x90
반응형

'Infrastructure > redis' 카테고리의 다른 글

Redis란?  (0) 2022.01.11
728x90
반응형
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions, and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.

오늘은 Redis의 기본적인 개념에 대해서 공부하는 겸 포스트를 적어보도록 하겠다. 

우선 Redis는 in-memory data structure store, database, cache, message broker 등으로 사용할 수 있는 open source platform이다. 

보통은 memory에 필요한 data를 caching 하여 Database의 접근을 줄여서 service의 속도를 높이기 위해서 사용한다. 

 

저장할 수 있는 data structure로는 String, Hash, List, Set, sorted Set, Bitmap, Hyperloglogs, Geospatial Indexes, Stream 등 다양하다. 그리고 Cluster로 구성하여 Fault tolerance, Preventing diseaster 등을 할 수 있다.

 

 To achieve top performance, Redis works with an in-memory dataset. Depending on your use case, you can persist your data either by periodically dumping the dataset to disk or by appending each command to a disk-based log. You can also disable persistence if you just need a feature-rich, networked, in-memory cache.
Redis also supports asynchronous replication, with very fast non-blocking first synchronization, auto-reconnection with partial resynchronization on net split.

 

Redis는 Top performance를 달성하기 위해 in-memory data set으로 동작된다. 이 말은 service가 중단될 경우 data를 잃어버리게 되는 것이다. 하지만 데이터를 저장하기 위해서 주기적으로 데이터를 disk에 저장하거나 수행되는 각 커맨드를 disk에 log로 남길 수 있다. 

그리고, Asyncronous replication을 지원해서 replica 를 생성해 둔다면 불의의 사고로 데이터를 잃어버리는 것을 막을 수 있다. 

 

You can run atomic operations on these types, like appending to a string; incrementing the value in a hash; pushing an element to a list; computing set intersection, union and difference; or getting the member with highest ranking in a sorted set.

그리고 중요한 부분! Redis는 Atomic operation을 보장한다. 이 얘기는 여러 유저가 동시에 같은 정보를 업데이트 하더라도 손실되는 정보가 없다는 얘기이다. 예를 들면 2명의 유저가 동시에 `count` 를 증가시킨다고 할 때 완전 동시에 업데이트시 count는 1개만 증가할 수 있는 경우가 발생될 수 있을 것이다. 하지만 Atomic operation이 보장된다면 count는 2가 증가된다. 

 

Redis는 많은 언어를 지원하고 있다. Java의 경우는 여기를 보면 된다. 

앞으로 Redis 설치 및 사용방법 등에 대해서 알아보도록 하자~

728x90
반응형

'Infrastructure > redis' 카테고리의 다른 글

Redis 설치하기 in kubernetes  (0) 2022.01.12

+ Recent posts