Skip to content

Commit f4b7ad9

Browse files
zhan9sanZhang, Chaoyue (Jack)
andauthored
add charts (#54)
Co-authored-by: Zhang, Chaoyue (Jack) <[email protected]>
1 parent 3355305 commit f4b7ad9

File tree

13 files changed

+416
-0
lines changed

13 files changed

+416
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: Release Charts
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
paths:
8+
- charts/**
9+
10+
jobs:
11+
release:
12+
# depending on default permission settings for your org (contents being read-only or read-write for workloads), you will have to add permissions
13+
# see: https://docs.github.com/en/actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token
14+
permissions:
15+
contents: write
16+
runs-on: ubuntu-latest
17+
steps:
18+
- name: Checkout
19+
uses: actions/checkout@v3
20+
with:
21+
fetch-depth: 0
22+
23+
- name: Configure Git
24+
run: |
25+
git config user.name "$GITHUB_ACTOR"
26+
git config user.email "[email protected]"
27+
28+
- name: Run chart-releaser
29+
uses: helm/[email protected]
30+
env:
31+
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ resources:
2424
- https://github.com/resmoio/kubernetes-event-exporter?ref=master
2525
```
2626
27+
### Helm
28+
29+
See [Helm Guide](./charts/kubernetes-event-exporter/README.md).
30+
2731
## Configuration
2832
2933
Configuration is done via a YAML file, when run in Kubernetes, ConfigMap. The tool watches all the events and
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Patterns to ignore when building packages.
2+
# This supports shell glob matching, relative path matching, and
3+
# negation (prefixed with !). Only one pattern per line.
4+
.DS_Store
5+
# Common VCS dirs
6+
.git/
7+
.gitignore
8+
.bzr/
9+
.bzrignore
10+
.hg/
11+
.hgignore
12+
.svn/
13+
# Common backup files
14+
*.swp
15+
*.bak
16+
*.tmp
17+
*.orig
18+
*~
19+
# Various IDEs
20+
.project
21+
.idea/
22+
*.tmproj
23+
.vscode/
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: v2
2+
name: kubernetes-event-exporter
3+
description: Export Kubernetes events to multiple destinations with routing and filtering
4+
type: application
5+
6+
# This is the chart version. This version number should be incremented each time you make changes
7+
# to the chart and its templates, including the app version.
8+
# Versions are expected to follow Semantic Versioning (https://semver.org/)
9+
version: 0.1.0
10+
11+
# This is the version number of the application being deployed. This version number should be
12+
# incremented each time you make changes to the application. Versions are not expected to
13+
# follow Semantic Versioning. They should reflect the version the application is using.
14+
# It is recommended to use it with quotes.
15+
appVersion: "1.16.0"
16+
home: https://github.com/resmoio/kubernetes-event-exporter
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# kubernetes-event-exporter Helm Chart
2+
3+
## Get Repository Info
4+
5+
```shell
6+
helm repo add kubernetes-event-exporter https://resmoio.github.io/kubernetes-event-exporter
7+
helm update
8+
```
9+
10+
## Prepare the Deployment configuration [Optional]
11+
12+
Create a helm values file.
13+
14+
```yaml
15+
# config.yaml
16+
---
17+
config: |
18+
logLevel: error
19+
logFormat: json
20+
route:
21+
routes:
22+
- match:
23+
- receiver: "dump"
24+
receivers:
25+
- name: "dump"
26+
stdout: {}
27+
```
28+
29+
See [App Configuration](../../README.md) for reference.
30+
31+
## Install Chart
32+
33+
Ensure `monitoring` namespace exists
34+
35+
```shell
36+
kubectl create ns monitoring
37+
```
38+
39+
Install chart
40+
41+
```bash
42+
helm install kubernetes-event-exporter -f config.yaml resmoio/kubernetes-event-exporter
43+
```
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
1. Get the application URL by running these commands:
2+
{{- if .Values.ingress.enabled }}
3+
{{- range $host := .Values.ingress.hosts }}
4+
{{- range .paths }}
5+
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
6+
{{- end }}
7+
{{- end }}
8+
{{- else if contains "NodePort" .Values.service.type }}
9+
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "kubernetes-event-exporter.fullname" . }})
10+
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
11+
echo http://$NODE_IP:$NODE_PORT
12+
{{- else if contains "LoadBalancer" .Values.service.type }}
13+
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
14+
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "kubernetes-event-exporter.fullname" . }}'
15+
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "kubernetes-event-exporter.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
16+
echo http://$SERVICE_IP:{{ .Values.service.port }}
17+
{{- else if contains "ClusterIP" .Values.service.type }}
18+
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "kubernetes-event-exporter.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
19+
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
20+
echo "Visit http://127.0.0.1:8080 to use your application"
21+
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
22+
{{- end }}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
{{/*
2+
Expand the name of the chart.
3+
*/}}
4+
{{- define "kubernetes-event-exporter.name" -}}
5+
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
6+
{{- end }}
7+
8+
{{/*
9+
Create a default fully qualified app name.
10+
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
11+
If release name contains chart name it will be used as a full name.
12+
*/}}
13+
{{- define "kubernetes-event-exporter.fullname" -}}
14+
{{- if .Values.fullnameOverride }}
15+
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
16+
{{- else }}
17+
{{- $name := default .Chart.Name .Values.nameOverride }}
18+
{{- if contains $name .Release.Name }}
19+
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
20+
{{- else }}
21+
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
22+
{{- end }}
23+
{{- end }}
24+
{{- end }}
25+
26+
{{/*
27+
Create chart name and version as used by the chart label.
28+
*/}}
29+
{{- define "kubernetes-event-exporter.chart" -}}
30+
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
31+
{{- end }}
32+
33+
{{/*
34+
Common labels
35+
*/}}
36+
{{- define "kubernetes-event-exporter.labels" -}}
37+
helm.sh/chart: {{ include "kubernetes-event-exporter.chart" . }}
38+
{{ include "kubernetes-event-exporter.selectorLabels" . }}
39+
{{- if .Chart.AppVersion }}
40+
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
41+
{{- end }}
42+
app.kubernetes.io/managed-by: {{ .Release.Service }}
43+
{{- end }}
44+
45+
{{/*
46+
Selector labels
47+
*/}}
48+
{{- define "kubernetes-event-exporter.selectorLabels" -}}
49+
app.kubernetes.io/name: {{ include "kubernetes-event-exporter.name" . }}
50+
app.kubernetes.io/instance: {{ .Release.Name }}
51+
{{- end }}
52+
53+
{{/*
54+
Create the name of the service account to use
55+
*/}}
56+
{{- define "kubernetes-event-exporter.serviceAccountName" -}}
57+
{{- if .Values.serviceAccount.create }}
58+
{{- default (include "kubernetes-event-exporter.fullname" .) .Values.serviceAccount.name }}
59+
{{- else }}
60+
{{- default "default" .Values.serviceAccount.name }}
61+
{{- end }}
62+
{{- end }}
63+
64+
{{/*
65+
Allow the release namespace to be overridden for multi-namespace deployments in combined charts
66+
*/}}
67+
{{- define "kubernetes-event-exporter.namespace" -}}
68+
{{- if .Values.namespaceOverride -}}
69+
{{- .Values.namespaceOverride -}}
70+
{{- else -}}
71+
{{- .Release.Namespace -}}
72+
{{- end -}}
73+
{{- end -}}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: {{ include "kubernetes-event-exporter.fullname" . }}-cfg
5+
namespace: {{ template "kubernetes-event-exporter.namespace" . }}
6+
data:
7+
config.yaml: |
8+
{{ .Values.config | indent 4 }}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: {{ include "kubernetes-event-exporter.fullname" . }}
5+
namespace: {{ include "kubernetes-event-exporter.namespace" . }}
6+
spec:
7+
replicas: {{ .Values.replicaCount }}
8+
selector:
9+
matchLabels:
10+
{{- include "kubernetes-event-exporter.selectorLabels" . | nindent 6 }}
11+
template:
12+
metadata:
13+
{{- with .Values.podAnnotations }}
14+
annotations:
15+
{{- toYaml . | nindent 8 }}
16+
{{- end }}
17+
labels:
18+
{{- include "kubernetes-event-exporter.selectorLabels" . | nindent 8 }}
19+
spec:
20+
{{- with .Values.imagePullSecrets }}
21+
imagePullSecrets:
22+
{{- toYaml . | nindent 8 }}
23+
{{- end }}
24+
serviceAccountName: {{ include "kubernetes-event-exporter.serviceAccountName" . }}
25+
securityContext:
26+
{{- toYaml .Values.podSecurityContext | nindent 8 }}
27+
containers:
28+
- name: {{ .Chart.Name }}
29+
securityContext:
30+
{{- toYaml .Values.securityContext | nindent 12 }}
31+
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
32+
imagePullPolicy: {{ .Values.image.pullPolicy }}
33+
ports:
34+
- name: metrics
35+
containerPort: {{ .Values.service.port }}
36+
protocol: TCP
37+
livenessProbe:
38+
httpGet:
39+
path: /metrics
40+
port: metrics
41+
readinessProbe:
42+
httpGet:
43+
path: /metrics
44+
port: metrics
45+
args:
46+
- -conf=/data/config.yaml
47+
volumeMounts:
48+
- mountPath: /data
49+
name: cfg
50+
resources:
51+
{{- toYaml .Values.resources | nindent 12 }}
52+
{{- with .Values.nodeSelector }}
53+
nodeSelector:
54+
{{- toYaml . | nindent 8 }}
55+
{{- end }}
56+
{{- with .Values.affinity }}
57+
affinity:
58+
{{- toYaml . | nindent 8 }}
59+
{{- end }}
60+
{{- with .Values.tolerations }}
61+
tolerations:
62+
{{- toYaml . | nindent 8 }}
63+
{{- end }}
64+
volumes:
65+
- name: cfg
66+
configMap:
67+
name: {{ include "kubernetes-event-exporter.fullname" . }}-cfg
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{{- if .Values.rbac.create }}
2+
---
3+
apiVersion: rbac.authorization.k8s.io/v1
4+
kind: ClusterRole
5+
metadata:
6+
name: {{ include "kubernetes-event-exporter.fullname" . }}
7+
rules:
8+
- apiGroups: ["*"]
9+
resources: ["*"]
10+
verbs: ["get", "watch", "list"]
11+
{{- end -}}

0 commit comments

Comments
 (0)