PMM
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 # 확인
k apply -f cr.yaml
자동으로 서버를 찾아서 자기 스스로를 등록한다.
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
잘 적용된다.
Last updated
Was this helpful?