pmm server
install
helm repo add percona https://percona-charts.storage.googleapis.com
helm repo update
NS=pxc-mysql
helm install monitoring pmm/pmm-server -n $NS --set platform=kubernetes --set "credentials.password=your_password"
ingress ์ค์
cert-manager๊ฐ ์ค์ ์ด ๋ฏธ๋ฆฌ ๋์์ด์ ssl๊น์ง ๋ง๋ค๋ฉด์ ์งํ
๋ฐฑ์ค๋์ ssl๋ก ํต์ ํ๋๊ฒ ์ค์
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: pmm
namespace: pxc-mysql
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: 'dns-issuer-aws-live'
nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
nginx.ingress.kubernetes.io/backend-protocol: 'HTTPS' # ์ด๋ถ๋ถ ๊ผญ ํ์ธ
spec:
tls:
- hosts:
- 'pmm.c3.yourdomain.com'
secretName: pmm-tls
rules:
- host: pmm.c3.yourdomain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: pxc-pmm-service
port:
number: 443
์ฌ์ดํธ์ ์ ์ํด๋ณด๋ฉด grafana๊ฐ ๋ณด์ธ๋ค. ๋ก๊ทธ์ธํ๋ฉด ๋๋ค.
pmm-client
pmm:
enabled: true
image: percona/pmm-client:2.18.0
serverHost: pxc-pmm-service # pmm-server์์์ ์๋น์ค ๋ช
serverUser: admin # ํ์ธ
์๋์ผ๋ก ์๋ฒ๋ฅผ ์ฐพ์์ ์๊ธฐ ์ค์ค๋ก๋ฅผ ๋ฑ๋กํ๋ค.
pmm ํ์ธ
pmm.c3.yourdomain.com ์ผ๋ก ๋ค์ด๊ฐ์ ํ์ธํด๋ณด๋ฉด ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ณผ์ ์๋ค.
๋ค ๊ตฌ์ฑ๋๊ณ ๋๋ฉด pmm ์ ์ ์ํด๋ณด๋ฉด ํด๋ฌ์คํฐ ์ํ๊ฐ ๋ณด์ธ๋ค.
alert manager๋ฅผ ์ค์ ํ๋ฉด ์ฌ๋์ผ๋ก ์๋ฌ๋ฅผ ๋ฐ์์ ์๋ค.
subchart ๋ก argocd์์ ์ค์
argocd ์์ subchart๋ฅผ ์ฌ์ฉ ํด์ผ gitops๊ฐ ๋๋ค.
subchart๋ก ๋ง๋ค์.
mkdir pmm
cd pmm
touch Chart.yaml
apiVersion: v2
name: pmm-subchart
type: application
version: 1.0.0
appVersion: '1.0.0'
dependencies:
- name: pmm-server
version: 2.18.0
repository: https://percona-charts.storage.googleapis.com
vi values.yaml
pmm-server:
## percona image version
## ref: https://hub.docker.com/r/library/percona/tags/
##
imageRepo: 'percona/pmm-server'
imageTag: '2.18.0'
## A choice between "kubernetes" and "openshift"
platform: 'kubernetes'
## Specify an imagePullPolicy (Required)
## It's recommended to change this to 'Always' if the image tag is 'latest'
## ref: http://kubernetes.io/docs/user-guide/images/#updating-images
##
imagePullPolicy: Always
scc: null
sa: null
## Persist data to a persitent volume
persistence:
enabled: true
## percona data Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
##
# storageClass: "-"
accessMode: ReadWriteOnce
size: 30Gi
## set credentials
credentials:
password: 'admin'
## set metric collection settings
metric:
resolution: 1s
retention: 720h
queries:
retention: 8
## Configure resource requests and limits
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
##
resources:
requests:
memory: 1Gi
cpu: 0.5
supresshttp2: true
service:
type: LoadBalancer
port: 443
loadBalancerIP: ''
## Mount prometheus scrape config https://www.percona.com/blog/2020/03/23/extending-pmm-prometheus-configuration/
prometheus:
configMap:
name: ''
## Kubernetes Ingress https://kubernetes.io/docs/concepts/services-networking/ingress
ingress:
enabled: true
annotations:
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: 'dns-issuer-aws-live'
nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
nginx.ingress.kubernetes.io/backend-protocol: 'HTTPS'
path: /
pathType: null
host: pmm.yourdomain.com
rules: []
tls: []
# - secretName: pmm-server-tls
# hosts:
# - monitoring-service.example.local
labels: {}
vi add-pmm-server.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: pxc-pmm-server
namespace: argocd
spec:
destination:
name: ''
namespace: pxc-mysql
server: 'https://kubernetes.default.svc'
source:
path: apps/pxc-pmm-server
repoURL: 'git@github.com:teamsmiley/argocd-c3.git'
targetRevision: HEAD
project: default
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
ingress๊น์ง ์ ์ ์ฉ๋๋๊ฒ์ ์์์๋ค.
k apply -f add-pmm-server.yaml
์ ์ ์ฉ๋๋ค.