Helm 설치하기
helm 설치는 여기를 참고한다.
Redis 설치하기
redis는 Helm repository를 통해서 설치하고자 한다.
ArtifactHUB에 접속해서 redis 를 검색해 사용하고자 하는 차트를 선택하거나
아래 링크로 접속한다.
https://artifacthub.io/packages/helm/bitnami/redis
Redis Chart 설치하기
repo 를 추가안하면 설치가 안된다.
공식 문서 내용 그대로 my-release 이름으로 설치해주었다. 이름은 편한대로 설정한다.
## repo 추가 안하면 설치 안됨
helm repo add my-repo https://charts.bitnami.com/bitnami
## redis 설치하기
helm install my-release my-repo/redis
helm install my-release my-repo/redis
NAME: my-release
LAST DEPLOYED: Thu Apr 20 13:39:44 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: redis
CHART VERSION: 17.9.5
APP VERSION: 7.0.11
** Please be patient while the chart is being deployed **
Redis® can be accessed on the following DNS names from within your cluster:
my-release-redis-master.default.svc.cluster.local for read/write operations (port 6379)
my-release-redis-replicas.default.svc.cluster.local for read-only operations (port 6379)
To get your password run:
export REDIS_PASSWORD=$(kubectl get secret --namespace default my-release-redis -o jsonpath="{.data.redis-password}" | base64 -d)
To connect to your Redis® server:
1. Run a Redis® pod that you can use as a client:
kubectl run --namespace default redis-client --restart='Never' --env REDIS_PASSWORD=$REDIS_PASSWORD --image docker.io/bitnami/redis:7.0.11-debian-11-r0 --command -- sleep infinity
Use the following command to attach to the pod:
kubectl exec --tty -i redis-client \
--namespace default -- bash
2. Connect using the Redis® CLI:
REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h my-release-redis-master
REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h my-release-redis-replicas
To connect to your database from outside the cluster execute the following commands:
kubectl port-forward --namespace default svc/my-release-redis-master 6379:6379 &
REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h 127.0.0.1 -p 6379
설치하면 위의 내용이 나온다.
위의 내용은 redis 설치후 비밀번호나 클러스터 실행까지 필요한 내용이 들어있다.
비밀번호 정보
아래 명령어는 환경변수에 Redis 비밀번호를 저장해두는 것이고
저장하지 않고 비밀번호만 보고싶으면 $() 안에 있는 kubectl 명령어만 입력한다.
## 환경변수에 비밀번호 저장하기
export REDIS_PASSWORD=$(kubectl get secret --namespace default my-release-redis -o jsonpath="{.data.redis-password}" | base64 -d)
## 저장한 비밀번호 확인하기
echo $REDIS_PASSWORD
Redis 실행시키기
파드 생성하기
Redis 를 실행시키기 위해 아래 명령어로 redis-client 이름으로 레디스를 실행시킨다.
그럼 파드가 생성된 것을 볼 수 있다.
redis-client 파드에 bash로 접속하기
redis 에 접속하기
redis-client 에 접속한 상태에서 master 나 replicas 로 접속할 수 있고
redis-client 에 접속하지 않고도 redis에 접속할 수 있다.
-a 뒤에 알파벳에는 본인의 패스워드를 입력하면 된다.
$ redis-cli -h 127.0.0.1 -p 6379 -a {레디스비밀번호}
-h : host ip address
-p : port number
-a : password
password는 위에 REDIS_PASSWORD 이름으로 저장해둔 곳을 참고하면 된다.
Redis 실행중인지 확인하기
ping 입력했을 때 pong 이 나오면 Running 중인것이다.
Redis 포트포워딩 하기
nodeport 의 포트를 변경해주었다.
아래 내용으로 안되면 첫번째 줄에 & 까지만 입력한다. (& 의 뜻은 백그라운드에서 실행한다는 뜻이다)
kubectl port-forward --namespace default svc/my-release-redis-master 6379:6379 &
REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h 127.0.0.1 -p 6379
위의 명령어 실행으로 포트포워딩 성공 후 url 에 접속해보면 연결되는 것을 확인할 수 있다.
++ error
6379 포트가 이미 사용중이라면서 포트포워딩이 안되었다.
이런 경우에는 6379 포트를 삭제했다가 다시 실행시켜주면 된다.
ps -ef | grep 6379
kill -9 {UID}
Grafana 설치하기
grafana 도 위에 redis 처럼 ArtifactHUB에서 검색해서 설치한다.
https://artifacthub.io/packages/helm/grafana/grafana
Helm repository 다운받기
grafana 를 다운받고 helm 레포지토리를 업데이트 해준다.
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
Helm 으로 Grafana 차트 설치하기
helm install my-release grafana/grafana
위에서 이미 my-release 이름을 사용하고 있어서 설치가 안됬다.
이름을 변경해서 다시 설치를 시도했다.
helm install my-release-grafana grafana/grafana
helm install my-release-grafana grafana/grafana
NAME: my-release-grafana
LAST DEPLOYED: Thu Apr 20 14:14:57 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
1. Get your 'admin' user password by running:
kubectl get secret --namespace default my-release-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
2. The Grafana server can be accessed via port 80 on the following DNS name from within your cluster:
my-release-grafana.default.svc.cluster.local
Get the Grafana URL to visit by running these commands in the same shell:
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=my-release-grafana" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace default port-forward $POD_NAME 3000
3. Login with the password from step 1 and the username: admin
#################################################################################
###### WARNING: Persistence is disabled!!! You will lose your data when #####
###### the Grafana pod is terminated. #####
#################################################################################
pod 생성후 비밀번호 보기
환경변수에 pod name 저장하기
환경변수에 Pod name 은 저장하지 않아도 된다.
그라파나 포트포워딩
3000포트로 포트포워딩 시켰다.
접속하기
email or username : admin
password : 밑에 이미지의 결과에 나온 데이터가 비밀번호이다.
values.yaml 사용해서 grafana 설치하기
네임스페이스 생성하기
# 네임스페이스 조회하기
kubectl get ns
# 네임스페이스 생성하기
kubectl create namespace monitoring
values.yaml 을 사용하기 위해 git repository 를 가져온다.
git clone https://github.com/grafana/helm-charts.git
그라파나 파일 위치로 이동한다.
$ cd helm-charts/charts/grafana
values.yaml 파일을 열어서 Web UI에서 사용할 admin 계정의 비밀번호를 설정해줍니다.
$ cd helm-charts/charts/grafana
$ vi values.yaml
## vi 창에서 / 입력 후 원하는 문자열 검색해서 찾기
포트포워딩을 위한 nodePort 포트번호 추가하고 type은 NodePort 로 변경한다.
service:
enabled: true
type: NodePort ## ClusterIP -> NodePort 변경하기
port: 80
targetPort: 3000
nodePort: 31000 ## nodePort 추가
# targetPort: 4181 To be used with a proxy extraContainer
## Service annotations. Can be templated.
annotations: {}
labels: {}
portName: service
# Adds the appProtocol field to the service. This allows to work with istio protocol selection. Ex: "http" or "tcp"
appProtocol: ""
포트 번호의 범위는 30000-32767 로 설정해준다.
위에서 생성한 네임스페이스에 그라파나 설치하기
helm install grafana grafana/grafana -f values.yaml --namespace monitoring
$ helm install grafana grafana/grafana -f values.yaml --namespace monitoring
NAME: grafana
LAST DEPLOYED: Wed Apr 26 13:15:51 2023
NAMESPACE: monitoring
STATUS: deployed
REVISION: 1
NOTES:
1. Get your 'admin' user password by running:
kubectl get secret --namespace monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
2. The Grafana server can be accessed via port 80 on the following DNS name from within your cluster:
grafana.monitoring.svc.cluster.local
Get the Grafana URL to visit by running these commands in the same shell:
export POD_NAME=$(kubectl get pods --namespace monitoring -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=grafana" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace monitoring port-forward $POD_NAME 3000
3. Login with the password from step 1 and the username: admin
++ error
만약 helm install 후 다음과 같은 경고가나오면 아래 persistence 에서 enable 값을 false -> true 변경해준다.
WARNING: Persistence is disabled!!! You will lose your data when the Grafana pod is terminated.
## vi 창에서 / 입력 후 원하는 문자열 검색해서 찾기
-----------------------------
...
persistence:
type: pvc
enabled: true
...
-----------------------------
helm install 후 values.yaml 의 내용을 변경했으면 helm upgrade 를 해준다.
helm upgrade grafana grafana/grafana -f values.yaml --namespace monitoring
helm upgrade grafana grafana/grafana -f values.yaml --namespace monitoring
Release "grafana" has been upgraded. Happy Helming!
NAME: grafana
LAST DEPLOYED: Wed Apr 26 13:34:19 2023
NAMESPACE: monitoring
STATUS: deployed
REVISION: 3
NOTES:
1. Get your 'admin' user password by running:
kubectl get secret --namespace monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
2. The Grafana server can be accessed via port 80 on the following DNS name from within your cluster:
grafana.monitoring.svc.cluster.local
Get the Grafana URL to visit by running these commands in the same shell:
export NODE_PORT=$(kubectl get --namespace monitoring -o jsonpath="{.spec.ports[0].nodePort}" services grafana)
export NODE_IP=$(kubectl get nodes --namespace monitoring -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
3. Login with the password from step 1 and the username: admin
REVISION 에 있는 숫자는 업그레이드를 진행한 숫자이다.
설치 확인하기
설치가 완료되면 pod과 service를 확인한다.
포트포워딩도 잘 되어 있는지 확인한다.
아래 명령어를 치면 비밀번호를 확인할 수 있다.
kubectl get secret --namespace monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
nodePort 에 설정한 포트번호로 접속한다.
++ error
values.yaml 에서 비밀번호 변경하고 upgrade 를 해도 변경한 비밀번호가 되지 않았다.
그래서 helm 에 설치되어 있는 파일을 삭제하고 다시 설치를 진행했다.
helm ls 확인 및 파일 삭제
$ helm ls -n monitoring
$ helm delete grafana -n monitoring
Grafana 랑 Redis 연결하기
그라파나는 깡통이라서 datasource 에 redis 를 연결해주어야 한다.
그 전에 redis 플러그인을 설치한다.
설정 > 플러그인 > redis 검색 > redis 선택 > install
Redis 를 import 시켜준다.
설정 > data source > Redis > Dashboards > import 클릭
DataSource 에 Redis 정보 입력하기
설정 > data source > Redis > address 정보 입력해주기
address 에는 Redis 설치 시 나오는 정보를 입력해주면 된다.
그럼 아래와 같이 연결된것을 확인할 수 있다.
'클라우드 및 인프라 > Kubernetes' 카테고리의 다른 글
Kubernetes Service 포트 - NodePort, port, targetPort (0) | 2023.05.03 |
---|---|
Mac OS brew uninstall 오류/ Mac OS 패키지 삭제 - Error: No such keg: /opt/homebrew/Cellar/redis (0) | 2023.05.02 |
[Helm] Mac에 Helm 설치하기 (0) | 2023.04.21 |
[k8s] 쿠버네티스 Job, CronJob (0) | 2023.03.29 |
[k8s] node-shell (Github Plugins) (0) | 2023.03.28 |