helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm search repo grafana # 필요한 차트를 찾기
helm pull grafana/grafana # 사용할 차트를 PULL
다운로드한 차트의 압축을 풀어줍니다.
생성한 PVC에 데이터를 집어넣어야 하기 때문에 values.yaml에서 416번째 줄에서 persistence 를 활성화 합니다.
이미 생성된 PVC를 사용하기 때문에 existingClaim에 pvc를 추가합니다.
persistence:
type: pvc
enabled: true
# storageClassName: default
## (Optional) Use this to bind the claim to an existing PersistentVolume (PV) by name.
volumeName: ""
accessModes:
- ReadWriteOnce
size: 10Gi
# annotations: {}
finalizers:
- kubernetes.io/pvc-protection
# selectorLabels: {}
## Sub-directory of the PV to mount. Can be templated.
# subPath: ""
## Name of an existing PVC. Can be templated.
existingClaim: grafana-pvc
## Extra labels to apply to a PVC.
extraPvcLabels: {}
disableWarning: false
필요에 따라 values.yaml을 수정한 후에 배포합니다.
정상적으로 POD가 배포되지 않습니다.
로그를 확인했을 때, chown과 init-chown-data라는 init contaier에 대한 문제가 발생한 것을 확인 할 수 있습니다.
values.yaml에서 init container에 관련 된 내용을 찾아보면 아래와 같습니다.
# values.yaml의 452번째 줄
initChownData:
## If false, data ownership will not be reset at startup
## This allows the grafana-server to be run with an arbitrary user
##
enabled: true
## initChownData container image
##
image:
# -- The Docker registry
registry: docker.io
repository: library/busybox
tag: "1.31.1"
sha: ""
pullPolicy: IfNotPresent
## initChownData resource requests and limits
## Ref: http://kubernetes.io/docs/user-guide/compute-resources/
##
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
securityContext:
readOnlyRootFilesystem: false
runAsNonRoot: false
runAsUser: 0
seccompProfile:
type: RuntimeDefault
capabilities:
add:
- CHOWN
drop:
- ALL
mount 한 NAS의 스냅숏으로 인하여 chown이 정상적으로 작동하지 못하여 init container가 종료되어 서비스가 정상적으로 올라올수 없는 것을 확인 할 수 있습니다. 이는 CSP 마다 상이하기 때문에, 이와 같은 동일한 케이스가 발생하지 않고 정상적으로 프로비저닝이 될 수 있습니다.
따라서 init contaier를 비활성화 하고 수동으로 NAS의 디렉토리 영역을 472:472로 변경합시다.
UID 및 GID 변경
initChownData:
## If false, data ownership will not be reset at startup
## This allows the grafana-server to be run with an arbitrary user
##
enabled: false
2. 웹 브라우저는 받은 도메인을 DNS 클라이언트에게 전달 3. DNS 클라이언트가 로컬(공용) DNS 서버로 요청을 보냄
4. 로컬(공용) DNS 서버가 캐시 확인 5. 캐시에 없으면 루트 네임서버로 요청을 보냄 6. 루트 네임서버가 TLD 네임서버의 주소를 반환 7. TLD 네임서버가 SLD 네임서버의 주소를 반환 8. SLD 네임서버가 요청된 도메인의 IP 주소를 반환 9. IP 주소가 로컬(공용) DNS 서버로 리턴 10. 로컬(공용) DNS 서버가 IP 주소를 캐시에 저장한 후 DNS 클라이언트로 반환 11. DNS 클라이언트가 IP 주소를 사용자의 브라우저로 제공 12. 사용자의 브라우저가 IP 주소를 사용해 원하는 웹사이트로 접근
* 로컬 DNS : KT,SK,LG 같은 ISP 혹은 사내망 등에서 운영하는 DNS 서버로서, 전체가 아닌 특정 사용자들만 사용 가능
* 공용 DNS : 모든 사용자들이 사용이 가능한 도메인 서버로, 대표적으로 구글 (8.8.8.8), Cloudflare (1.1.1.1) 등
* SLD 네임서버 : DNS 레코드 관리 및 DNS 응답
* TLD 네임서버 : SLD 네임 서버의 정보 제공
* 루트 네임서버 : TLD 네임 서버의 정보 제공
직접적으로 확인을 해보고 싶다면, 아래처럼 진행해봅시다.
#Windows에서는 별도 설치가 필요
$ dig www.asdfzxcv.site +trace
1. 구글 DNS가 루트 네임 서버에게(*.root-servers.net.) 질의합니다.
2. l.root-servers.net. 라는 루트 네임 서버에서 .site 라는 도메인을 관리하는 TLD 네임 서버(*.nic.site.)로 다시 질의를 합니다.
3. b.nic.site 라는 TLD 네임 서버에서 asdfzxcv.site를 관리하는 SLD 네임 서버(*.gabia.*.)로 다시 질의를 합니다.
4. ns.gabia.net 라는 네임 서버에서 해당 URL에 대한 IP를 반환합니다.
위 같은 과정을 거친 이후 해당 도메인으로 접근을 하게 됩니다.
DNS 레코드
전화번호에는 일반 유선도 있고, 팩스용 번호도 있고, 인터넷 전화도 있고 종류가 다양합니다.
DNS 레코드 또한 이러한 목적성을 가진 도메인을 저장하는 데이터베이스들의 종류입니다.
대표적으로 사용되는 레코드 타입이 A, CNAME, MX 정도 입니다.
1. A 레코드 (Address Record):
도메인 이름을 IPv4 주소로 매핑합니다.
2. AAAA 레코드 (IPv6 Address Record):
도메인 이름을 IPv6 주소로 매핑합니다.
3. CNAME 레코드 (Canonical Name Record):
도메인 이름을 별칭으로 다른 도메인 이름에 매핑합니다.
4. MX 레코드 (Mail Exchange Record):
도메인 이름에 대한 이메일 서버를 지정합니다.
5. TXT 레코드 (Text Record):
도메인 이름에 대한 텍스트 정보를 저장합니다. SPF(Sender Policy Framework)와 같은 인증 메커니즘에 사용됩니다.
NS 레코드 (Name Server Record):
도메인 이름의 네임 서버를 지정합니다.
PTR 레코드 (Pointer Record):
IP 주소를 도메인 이름으로 매핑합니다. 주로 역방향 DNS 조회에 사용됩니다.
SRV 레코드 (Service Record):
특정 서비스를 제공하는 서버의 위치를 지정합니다. 예: _sip._tcp.example.com → sipserver.example.com:5060
SOA 레코드 (Start of Authority Record):
도메인 존 파일의 시작을 나타내며, 관리자 이메일 주소, 도메인 기본 네임 서버, 존 파일의 시리얼 번호 등을 포함합니다.
WSA(Windows Subsystem for Android)는 윈도우 OS에서 네이티브하게 안드로이드 애플리케이션을 실행하는 도구입니다.
각 레이어의 역할은 다음과 같습니다.
Windows OS 기본 운영체제로, 전체 시스템을 운영하는 바탕입니다.
Hyper-V (하이퍼바이저) 가상화 기술로, 가상 머신을 실행할 수 있게 합니다.
Linux Kernel 실제 Linux 커널로, Linux 운영체제의 핵심입니다.
WSL (Windows Subsystem for Linux) Windows에서 Linux 프로그램을 실행할 수 있게 합니다.
WSA (Windows Subsystem for Android) Windows에서 Android 앱을 실행할 수 있게 합니다.
작동 방식 1. Windows OS가 Hyper-V를 사용해 가상 환경을 만듭니다. 2. Hyper-V가 Linux 커널을 실행합니다. 3. Linux 커널이 WSL을 통해 Windows에서 Linux 프로그램을 실행합니다. 4. WSL이 WSA를 실행하여 Android 앱을 실행합니다.
2. 설치
일단 설치에 앞서서 하이퍼바이저 기능을 켜야 하는데 시작 - 검색 - Windows 기능 켜기/끄기를 실행하고
Docs에서는 빌드 19041 이상일 경우 wsl --install로 간편하게 설치 할 수 있다고 하는데, 저는 안됩니다.
여튼 수동 설치란을 참고하면 WSL 최초 설치 프로세스부터 기술되어 있습니다.
필자의 PC 버전
# x64 시스템의 경우: 버전 1903 이상, 빌드 18362.1049 이상.
# ARM64 시스템의 경우: 버전 2004 이상, 빌드 19041 이상
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --update
wsl --install # OS 미지정시 기본적으로 우분투로 설치, 굳이 설치 할 필요는 없을 것 같습니다.
wsl --set-default-version 2 # WSL 기본 버전을 2버전으로 지정