refactor: rename template names

This commit is contained in:
Felipe M 2022-09-05 18:43:02 +02:00
parent 3b55610e80
commit 7b9f034527
Signed by: fmartingr
GPG Key ID: 716BC147715E716F
15 changed files with 41 additions and 73 deletions

View File

@ -20,7 +20,7 @@ builds:
goarch: arm
- goos: windows
goarch: arm64
main: ./cmd/golang-app-template
main: ./cmd/ichi
ldflags:
- -s -w
archives:

View File

@ -1,4 +1,4 @@
PROJECT_NAME := golang-app-template
PROJECT_NAME := ichi
SOURCE_FILES ?=./internal/... ./cmd/... ./pkg/...

View File

@ -1,33 +1 @@
# golang-app-template
Golang application template for GitHub.
Contains:
- Basic running Go code (just a `cmd` so everything else works)
- A `Makefile` with some Quality of Life for contributing and executing common tasks.
- A `Containerfile` with a boilerplate container with no dependencies.
- [Goreleaser](https://goreleaser.com) configuration and CI.
- A basic Helm chart
- Github actions to build, test and release binaries and container images to the Github container registry.
## Using the template
1. Press the **Use this template** button at the top of this repository.
2. Find and replace `golang-app-template` everywhere you need
3. Rename `cmd/golang-app-template`
4. `make quick-run`
## Makefile
```
$ make help
build: builds the project for the setup os/arch combinations
clean: clean test cache, build files
format: Executes the formatting pipeline on the project
help: this screen. Keep it first target to be default
lint: Check the project for errors
quick-run: Executes the project using golang
run: Executes the project build locally
test: Runs the test suite
```
# ichi

2
go.mod
View File

@ -1,3 +1,3 @@
module github.com/fmartingr/golang-app-template
module code.fmartingr.dev/fmartingr/ichi
go 1.19

View File

@ -1,5 +1,5 @@
apiVersion: v2
name: golang-app-template
name: ichi
description: A Helm chart for Kubernetes
type: application
# This is the chart version. This version number should be incremented each time you make changes

View File

@ -3,13 +3,13 @@
## Install the chart
```
helm install --namespace golang-app-template --atomic golang-app-template .
helm install --namespace ichi --atomic ichi .
```
## Upgrading the chart
```
helm upgrade --namespace golang-app-template --atomic golang-app-template .
helm upgrade --namespace ichi --atomic ichi .
```
## Using locally with latest dev image

View File

@ -6,16 +6,16 @@
{{- end }}
{{- end }}
{{- else if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "golang-app-template.fullname" . }})
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "ichi.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "golang-app-template.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "golang-app-template.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "ichi.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "ichi.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "golang-app-template.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "ichi.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT

View File

@ -1,7 +1,7 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "golang-app-template.name" -}}
{{- define "ichi.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
@ -10,7 +10,7 @@ Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "golang-app-template.fullname" -}}
{{- define "ichi.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
@ -26,16 +26,16 @@ If release name contains chart name it will be used as a full name.
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "golang-app-template.chart" -}}
{{- define "ichi.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "golang-app-template.labels" -}}
helm.sh/chart: {{ include "golang-app-template.chart" . }}
{{ include "golang-app-template.selectorLabels" . }}
{{- define "ichi.labels" -}}
helm.sh/chart: {{ include "ichi.chart" . }}
{{ include "ichi.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
@ -45,17 +45,17 @@ app.kubernetes.io/managed-by: {{ .Release.Service }}
{{/*
Selector labels
*/}}
{{- define "golang-app-template.selectorLabels" -}}
app.kubernetes.io/name: {{ include "golang-app-template.name" . }}
{{- define "ichi.selectorLabels" -}}
app.kubernetes.io/name: {{ include "ichi.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Create the name of the service account to use
*/}}
{{- define "golang-app-template.serviceAccountName" -}}
{{- define "ichi.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "golang-app-template.fullname" .) .Values.serviceAccount.name }}
{{- default (include "ichi.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}

View File

@ -1,5 +1,5 @@
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "golang-app-template.fullname" . -}}
{{- $fullName := include "ichi.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
@ -17,7 +17,7 @@ kind: Ingress
metadata:
name: {{ $fullName }}
labels:
{{- include "golang-app-template.labels" . | nindent 4 }}
{{- include "ichi.labels" . | nindent 4 }}
{{- with .Values.ingress.annotations }}
annotations:
{{- toYaml . | nindent 4 }}

View File

@ -1,9 +1,9 @@
apiVersion: v1
kind: Service
metadata:
name: {{ include "golang-app-template.fullname" . }}
name: {{ include "ichi.fullname" . }}
labels:
{{- include "golang-app-template.labels" . | nindent 4 }}
{{- include "ichi.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
@ -12,4 +12,4 @@ spec:
protocol: TCP
name: http
selector:
{{- include "golang-app-template.selectorLabels" . | nindent 4 }}
{{- include "ichi.selectorLabels" . | nindent 4 }}

View File

@ -2,9 +2,9 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "golang-app-template.serviceAccountName" . }}
name: {{ include "ichi.serviceAccountName" . }}
labels:
{{- include "golang-app-template.labels" . | nindent 4 }}
{{- include "ichi.labels" . | nindent 4 }}
{{- with .Values.serviceAccount.annotations }}
annotations:
{{- toYaml . | nindent 4 }}

View File

@ -1,17 +1,17 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: {{ include "golang-app-template.fullname" . }}
name: {{ include "ichi.fullname" . }}
labels:
{{- include "golang-app-template.labels" . | nindent 4 }}
{{- include "ichi.labels" . | nindent 4 }}
spec:
serviceName: {{ include "golang-app-template.fullname" . }}
serviceName: {{ include "ichi.fullname" . }}
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
{{- end }}
selector:
matchLabels:
{{- include "golang-app-template.selectorLabels" . | nindent 6 }}
{{- include "ichi.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
@ -19,13 +19,13 @@ spec:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "golang-app-template.selectorLabels" . | nindent 8 }}
{{- include "ichi.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "golang-app-template.serviceAccountName" . }}
serviceAccountName: {{ include "ichi.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:

View File

@ -1,9 +1,9 @@
apiVersion: v1
kind: Pod
metadata:
name: "{{ include "golang-app-template.fullname" . }}-test-connection"
name: "{{ include "ichi.fullname" . }}-test-connection"
labels:
{{- include "golang-app-template.labels" . | nindent 4 }}
{{- include "ichi.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": test
spec:
@ -11,5 +11,5 @@ spec:
- name: wget
image: busybox
command: ['wget']
args: ['{{ include "golang-app-template.fullname" . }}:{{ .Values.service.port }}']
args: ['{{ include "ichi.fullname" . }}:{{ .Values.service.port }}']
restartPolicy: Never

View File

@ -5,7 +5,7 @@
replicaCount: 1
image:
repository: ghcr.io/fmartingr/golang-app-template
repository: ghcr.io/fmartingr/ichi
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
# tag: "dev"
@ -50,14 +50,14 @@ ingress:
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
hosts:
- host: golang-app-template.local
- host: ichi.local
paths:
- path: /
pathType: ImplementationSpecific
tls: []
# - secretName: golang-app-template-tls
# - secretName: ichi-tls
# hosts:
# - golang-app-template.local
# - ichi.local
resources:
{}