mirror of
https://github.com/bvanroll/example-node-project.git
synced 2025-08-29 20:02:42 +00:00
Draft create
This commit is contained in:
4
charts/frontend-node/templates/NOTES.txt
Executable file
4
charts/frontend-node/templates/NOTES.txt
Executable file
@@ -0,0 +1,4 @@
|
||||
|
||||
Get the application URL by running these commands:
|
||||
|
||||
kubectl get ingress {{ template "fullname" . }}
|
16
charts/frontend-node/templates/_helpers.tpl
Executable file
16
charts/frontend-node/templates/_helpers.tpl
Executable file
@@ -0,0 +1,16 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
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).
|
||||
*/}}
|
||||
{{- define "fullname" -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
85
charts/frontend-node/templates/canary.yaml
Executable file
85
charts/frontend-node/templates/canary.yaml
Executable file
@@ -0,0 +1,85 @@
|
||||
{{- if .Values.canary.enabled }}
|
||||
apiVersion: flagger.app/v1beta1
|
||||
kind: Canary
|
||||
metadata:
|
||||
name: {{ template "fullname" . }}
|
||||
labels:
|
||||
draft: {{ default "draft-app" .Values.draft }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
||||
spec:
|
||||
provider: istio
|
||||
targetRef:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: {{ template "fullname" . }}
|
||||
progressDeadlineSeconds: {{ .Values.canary.progressDeadlineSeconds }}
|
||||
{{- if .Values.hpa.enabled }}
|
||||
autoscalerRef:
|
||||
apiVersion: autoscaling/v2beta1
|
||||
kind: HorizontalPodAutoscaler
|
||||
name: {{ template "fullname" . }}
|
||||
{{- end }}
|
||||
service:
|
||||
port: {{ .Values.service.externalPort }}
|
||||
targetPort: {{ .Values.service.internalPort }}
|
||||
gateways:
|
||||
- {{ template "fullname" . }}
|
||||
hosts:
|
||||
- {{ .Values.canary.host }}
|
||||
analysis:
|
||||
interval: {{ .Values.canary.canaryAnalysis.interval }}
|
||||
threshold: {{ .Values.canary.canaryAnalysis.threshold }}
|
||||
maxWeight: {{ .Values.canary.canaryAnalysis.maxWeight }}
|
||||
stepWeight: {{ .Values.canary.canaryAnalysis.stepWeight }}
|
||||
metrics:
|
||||
- name: request-success-rate
|
||||
threshold: {{ .Values.canary.canaryAnalysis.metrics.requestSuccessRate.threshold }}
|
||||
interval: {{ .Values.canary.canaryAnalysis.metrics.requestSuccessRate.interval }}
|
||||
- name: latency
|
||||
templateRef:
|
||||
name: latency
|
||||
thresholdRange:
|
||||
max: {{ .Values.canary.canaryAnalysis.metrics.requestDuration.threshold }}
|
||||
interval: {{ .Values.canary.canaryAnalysis.metrics.requestDuration.interval }}
|
||||
|
||||
---
|
||||
|
||||
apiVersion: flagger.app/v1beta1
|
||||
kind: MetricTemplate
|
||||
metadata:
|
||||
name: latency
|
||||
spec:
|
||||
provider:
|
||||
type: prometheus
|
||||
address: http://prometheus.istio-system:9090
|
||||
query: |
|
||||
histogram_quantile(
|
||||
0.99,
|
||||
sum(
|
||||
rate(
|
||||
istio_request_duration_milliseconds_bucket{
|
||||
reporter="destination",
|
||||
destination_workload_namespace="{{ "{{" }} namespace {{ "}}" }}",
|
||||
destination_workload=~"{{ "{{" }} target {{ "}}" }}"
|
||||
}[{{ "{{" }} interval {{ "}}" }}]
|
||||
)
|
||||
) by (le)
|
||||
)
|
||||
|
||||
---
|
||||
|
||||
apiVersion: networking.istio.io/v1alpha3
|
||||
kind: Gateway
|
||||
metadata:
|
||||
name: {{ template "fullname" . }}
|
||||
spec:
|
||||
selector:
|
||||
istio: ingressgateway
|
||||
servers:
|
||||
- port:
|
||||
number: {{ .Values.service.externalPort }}
|
||||
name: http
|
||||
protocol: HTTP
|
||||
hosts:
|
||||
- {{ .Values.canary.host }}
|
||||
{{- end }}
|
59
charts/frontend-node/templates/deployment.yaml
Executable file
59
charts/frontend-node/templates/deployment.yaml
Executable file
@@ -0,0 +1,59 @@
|
||||
{{- if .Values.knativeDeploy }}
|
||||
{{- else }}
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "fullname" . }}
|
||||
labels:
|
||||
draft: {{ default "draft-app" .Values.draft }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "fullname" . }}
|
||||
{{- if .Values.hpa.enabled }}
|
||||
{{- else }}
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
{{- end }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
draft: {{ default "draft-app" .Values.draft }}
|
||||
app: {{ template "fullname" . }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
env:
|
||||
{{- range $pkey, $pval := .Values.env }}
|
||||
- name: {{ $pkey }}
|
||||
value: {{ quote $pval }}
|
||||
{{- end }}
|
||||
envFrom:
|
||||
{{ toYaml .Values.envFrom | indent 10 }}
|
||||
ports:
|
||||
- containerPort: {{ .Values.service.internalPort }}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: {{ .Values.probePath }}
|
||||
port: {{ .Values.service.internalPort }}
|
||||
initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
|
||||
successThreshold: {{ .Values.livenessProbe.successThreshold }}
|
||||
timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: {{ .Values.probePath }}
|
||||
port: {{ .Values.service.internalPort }}
|
||||
periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
|
||||
successThreshold: {{ .Values.readinessProbe.successThreshold }}
|
||||
timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 12 }}
|
||||
terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}
|
||||
{{- end }}
|
25
charts/frontend-node/templates/hpa.yaml
Executable file
25
charts/frontend-node/templates/hpa.yaml
Executable file
@@ -0,0 +1,25 @@
|
||||
{{- if .Values.hpa.enabled }}
|
||||
apiVersion: autoscaling/v2beta1
|
||||
kind: HorizontalPodAutoscaler
|
||||
metadata:
|
||||
name: {{ template "fullname" . }}
|
||||
labels:
|
||||
draft: {{ default "draft-app" .Values.draft }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
||||
spec:
|
||||
scaleTargetRef:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: {{ template "fullname" . }}
|
||||
minReplicas: {{ .Values.hpa.minReplicas }}
|
||||
maxReplicas: {{ .Values.hpa.maxReplicas }}
|
||||
metrics:
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
targetAverageUtilization: {{ .Values.hpa.cpuTargetAverageUtilization }}
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
targetAverageUtilization: {{ .Values.hpa.memoryTargetAverageUtilization }}
|
||||
{{- end }}
|
32
charts/frontend-node/templates/ingress.yaml
Executable file
32
charts/frontend-node/templates/ingress.yaml
Executable file
@@ -0,0 +1,32 @@
|
||||
{{- if and (.Values.jxRequirements.ingress.domain) (not .Values.knativeDeploy) }}
|
||||
apiVersion: {{ .Values.jxRequirements.ingress.apiVersion }}
|
||||
kind: Ingress
|
||||
metadata:
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: nginx
|
||||
{{- if .Values.ingress.annotations }}
|
||||
{{ toYaml .Values.ingress.annotations | indent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.jxRequirements.ingress.annotations }}
|
||||
{{ toYaml .Values.jxRequirements.ingress.annotations | indent 4 }}
|
||||
{{- end }}
|
||||
name: {{ .Values.service.name }}
|
||||
spec:
|
||||
rules:
|
||||
- host: {{ .Values.service.name }}{{ .Values.jxRequirements.ingress.namespaceSubDomain }}{{ .Values.jxRequirements.ingress.domain }}
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
serviceName: {{ .Values.service.name }}
|
||||
servicePort: 80
|
||||
{{- if .Values.jxRequirements.ingress.tls.enabled }}
|
||||
tls:
|
||||
- hosts:
|
||||
- {{ .Values.service.name }}{{ .Values.jxRequirements.ingress.namespaceSubDomain }}{{ .Values.jxRequirements.ingress.domain }}
|
||||
{{- if .Values.jxRequirements.ingress.tls.production }}
|
||||
secretName: "tls-{{ .Values.jxRequirements.ingress.domain | replace "." "-" }}-p"
|
||||
{{- else }}
|
||||
secretName: "tls-{{ .Values.jxRequirements.ingress.domain | replace "." "-" }}-s"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
41
charts/frontend-node/templates/ksvc.yaml
Executable file
41
charts/frontend-node/templates/ksvc.yaml
Executable file
@@ -0,0 +1,41 @@
|
||||
{{- if .Values.knativeDeploy }}
|
||||
apiVersion: serving.knative.dev/v1alpha1
|
||||
kind: Service
|
||||
metadata:
|
||||
{{- if .Values.service.name }}
|
||||
name: {{ .Values.service.name }}
|
||||
{{- else }}
|
||||
name: {{ template "fullname" . }}
|
||||
{{- end }}
|
||||
labels:
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
||||
spec:
|
||||
runLatest:
|
||||
configuration:
|
||||
revisionTemplate:
|
||||
spec:
|
||||
container:
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
env:
|
||||
{{- range $pkey, $pval := .Values.env }}
|
||||
- name: {{ $pkey }}
|
||||
value: {{ quote $pval }}
|
||||
{{- end }}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: {{ .Values.probePath }}
|
||||
initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
|
||||
successThreshold: {{ .Values.livenessProbe.successThreshold }}
|
||||
timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
|
||||
readinessProbe:
|
||||
failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
|
||||
httpGet:
|
||||
path: {{ .Values.probePath }}
|
||||
periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
|
||||
successThreshold: {{ .Values.readinessProbe.successThreshold }}
|
||||
timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 14 }}
|
||||
{{- end }}
|
26
charts/frontend-node/templates/service.yaml
Executable file
26
charts/frontend-node/templates/service.yaml
Executable file
@@ -0,0 +1,26 @@
|
||||
{{- if or .Values.knativeDeploy .Values.canary.enabled }}
|
||||
{{- else }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
{{- if .Values.service.name }}
|
||||
name: {{ .Values.service.name }}
|
||||
{{- else }}
|
||||
name: {{ template "fullname" . }}
|
||||
{{- end }}
|
||||
labels:
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
||||
{{- if .Values.service.annotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.service.annotations | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.externalPort }}
|
||||
targetPort: {{ .Values.service.internalPort }}
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
app: {{ template "fullname" . }}
|
||||
{{- end }}
|
Reference in New Issue
Block a user