Skip to content

Commit

Permalink
#3 - First attempt at creating the helm package, will probably blow up.
Browse files Browse the repository at this point in the history
  • Loading branch information
slackspace-io committed Apr 6, 2024
1 parent 83746d3 commit 25b2ba6
Show file tree
Hide file tree
Showing 9 changed files with 212 additions and 25 deletions.
35 changes: 35 additions & 0 deletions .github/workflows/helm-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Release Charts

on:
push:
branches:
- main
- helm-wip

jobs:
release:
# depending on default permission settings for your org (contents being read-only or read-write for workloads), you will have to add permissions
# see: https://docs.github.com/en/actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "[email protected]"
- name: Install Helm
uses: azure/setup-helm@v3

- name: Run chart-releaser
uses: helm/[email protected]
with:
charts_dir: helm
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
7 changes: 4 additions & 3 deletions helm/templates/configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ kind: ConfigMap
metadata:
name: {{ .Chart.Name }}-config
data:
{{- $files:= .Files}}
config.toml: |-
{{$files.Get "config.toml"}}
config.yaml: |
{{- if .Values.config }}
{{- toYaml .Values.config | nindent 4 }}
{{- end }}
12 changes: 9 additions & 3 deletions helm/templates/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Chart.Name }}
namespace: {{ .Release.Namespace }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
Expand All @@ -14,12 +15,17 @@ spec:
app.kubernetes.io/name: {{ .Chart.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
serviceAccountName: {{ .Chart.Name }}-serviceaccount
containers:
- name: slackwatch
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- containerPort: {{ .Values.service.port }}
envFrom:
- configMapRef:
name: {{ .Chart.Name }}-config
volumeMounts:
- name: config-volume
mountPath: /app/config
volumes:
- name: config-volume
configMap:
name: {{ .Chart.Name }}-config
71 changes: 71 additions & 0 deletions helm/templates/ingress.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
{{- if .Values.ingress.enabled -}}
{{- $paths := .Values.ingress.paths -}}
{{- $extraPaths := .Values.ingress.extraPaths -}}
{{- $pathType := .Values.ingress.pathType -}}
{{- $servicePort := .Values.service.port -}}
{{- $serviceName := .Chart.Name}}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Chart.Name }}-ingress
namespace: {{ .Release.Namespace | quote }}
labels:
{{- with .Values.ingress.labels }}
{{- toYaml . | nindent 4 }}
{{- end }}
{{- with .Values.ingress.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- with .Values.ingress.ingressClassName }}
ingressClassName: {{ . }}
{{- end }}
rules:
{{- if .Values.ingress.hosts }}
{{- range $host := .Values.ingress.hosts }}
- host: {{ $host | quote }}
http:
paths:
{{- with $extraPaths }}
{{- toYaml . | nindent 10 }}
{{- end }}
{{- range $p := $paths }}
- path: {{ $p }}
pathType: {{ $pathType }}
backend:
service:
name: {{ $serviceName }}-svc
port:
{{- if kindIs "float64" $servicePort }}
number: {{ $servicePort }}
{{- else }}
name: {{ $servicePort }}
{{- end }}
{{- end -}}
{{- end -}}
{{- else }}
- http:
paths:
{{- with $extraPaths }}
{{- toYaml . | nindent 10 }}
{{- end }}
{{- range $p := $paths }}
- path: {{ $p }}
pathType: {{ $pathType }}
backend:
service:
name: {{ .Chart.Name }}-svc
port:
{{- if kindIs "float64" $servicePort }}
number: {{ $servicePort }}
{{- else }}
name: {{ $servicePort }}
{{- end }}
{{- end -}}
{{- end -}}
{{- with .Values.ingress.tls }}
tls:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end }}
23 changes: 23 additions & 0 deletions helm/templates/rbac.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ .Chart.Name }}-clusterrole
namespace: {{ .Release.Namespace }}
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
namespace: {{ .Release.Namespace }}
name: {{ .Chart.Name }}-clusterrolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ .Chart.Name }}-clusterrole
subjects:
- kind: ServiceAccount
name: {{ .Chart.Name }}-serviceaccount
namespace: {{ .Release.Namespace }}
23 changes: 23 additions & 0 deletions helm/templates/role.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: {{ .Release.Namespace }}
name: {{ .Chart.Name }}-role
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ .Chart.Name }}-rolebinding
namespace: {{ .Release.Namespace }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {{ .Chart.Name }}-role
subjects:
- kind: ServiceAccount
name: {{ .Chart.Name }}-serviceaccount
namespace: {{ .Release.Namespace }}
4 changes: 2 additions & 2 deletions helm/templates/service.yaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
name: {{ .Chart.Name }}-svc
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
targetPort: 8080
selector:
app.kubernetes.io/name: {{ .Chart.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
5 changes: 5 additions & 0 deletions helm/templates/serviceaccount.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ .Chart.Name }}-serviceaccount
namespace: {{ .Release.Namespace }}
57 changes: 40 additions & 17 deletions helm/values.yaml
Original file line number Diff line number Diff line change
@@ -1,28 +1,51 @@
replicaCount: 1
namespace: slackwatch

image:
repository: ghcr.io/slackspace-io/slackwatch
repository: ghcr.io/slackspace-io/slackwatch # Assuming this image is accessible as a placeholder
pullPolicy: IfNotPresent
tag: "latest"

service:
annotations: {}
labels: {}
type: ClusterIP
port: 8080
port: 80

ingress:
enabled: false
labels: {}
ingressClassName: ""
paths:
- /
pathType: Prefix
extraPaths: []
https: false
annotations: {}
tls: []
hosts:
- test.slackwatch.default # Placeholder domain

config:
schedule: "0 15 9-22/2 * * *"
data_dir: "/app/slackwatch/data"
ntfy:
url: "http://ntfy.ntfy.svc.cluster.local"
topic: "slackwatch"
reminder: "24h"
token: "dummy"
system:
#default schedule is every 2 hours
schedule: "0 0 */2 * *"
data_dir: "/app/slackwatch/data"

notifications:
ntfy:
url: "http://ntfy-server.default:80" # Assumes an 'ntfy-server' available in the 'default' namespace
topic: "slackwatch-test"
token: "slackwatch-ntfy-token"
priority: 1
reminder: "24h"
# ... other notification provider settings

gitops:
- name: "dummy"
repository_url: "https://github.com/slackspace-io/dummy.git"
branch: "main"
commit_message: "Updated by slackwatch"
commit_name: "slackwatch"
commit_email: "slackwatch@slackspace.io"
access_token_env_name: "SLACKWATCH_TOKEN"
gitops:
- name: "test-repo" # Placeholder name
repository_url: "https://github.com/your-org/test-repo.git"
branch: "main"
access_token_env_name: "TEST_REPO_ACCESS_TOKEN"
commit_message: "Automated commit by slackwatch"
commit_email: "slackwatch@yourmail.default"
# ... other GitOps settings

0 comments on commit 25b2ba6

Please sign in to comment.