Skip to content

Commit afc5d4d

Browse files
DanielHabenichtrestyled-io[bot]restyled-commits
authored
fix(traefik): again (#762)
* first draft * first draft * working configuration * update preview script * Update Phonebook/readme.md * Update demo/assets/Dockerfile * fix assets not showing up in demo * finally fix traefik on current version resolves #578 * Restyled by prettier (#763) Co-authored-by: Restyled.io <commits@restyled.io> * update pr pipeline * update preview pipeline * update preview pipeline * Update demo/values.yml * Restyled by prettier (#764) Co-authored-by: Restyled.io <commits@restyled.io> * - recreate pods on update - add to docs - rename fronted pods and services - adds health enpoint from #594 Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com> Co-authored-by: Restyled.io <commits@restyled.io>
1 parent 63ea2e5 commit afc5d4d

18 files changed

+241
-176
lines changed

.azure/pipelines/Phonebook.preview.yml

Lines changed: 14 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,17 @@ jobs:
6666
vmImage: 'ubuntu-16.04'
6767
steps:
6868
- task: HelmInstaller@1
69-
inputs:
70-
helmVersionToInstall: '2.14.2'
71-
- script: helm dep update
72-
workingDirectory: 'Phonebook/phonebook/'
69+
displayName: Helm install latest
70+
# inputs:
71+
# helmVersionToInstall: '2.14.2'
7372
- task: HelmDeploy@0
7473
displayName: Helm package
7574
inputs:
7675
command: package
7776
chartPath: Phonebook/phonebook
7877
destination: $(Build.ArtifactStagingDirectory)
78+
arguments: --dependency-update
79+
7980
- publish: $(Build.ArtifactStagingDirectory)
8081
artifact: $(helm_artifact_name)
8182

@@ -93,37 +94,22 @@ jobs:
9394
artifact: $(helm_artifact_name)
9495

9596
- task: HelmInstaller@1
96-
displayName: 'Install Helm'
97-
98-
- task: Kubernetes@1
99-
displayName: 'Create Namespace'
100-
inputs:
101-
connectionType: 'Kubernetes Service Connection'
102-
kubernetesServiceEndpoint: 'Phonebook Kubernetes Demo Cluster'
103-
namespace: 'kube-public'
104-
command: 'apply'
105-
useConfigurationFile: true
106-
configurationType: 'inline'
107-
inline: |
108-
apiVersion: v1
109-
kind: Namespace
110-
metadata:
111-
name: $(namespace)
97+
displayName: Helm install latest
98+
# inputs:
99+
# helmVersionToInstall: '2.14.2'
112100

113101
- task: HelmDeploy@0
114102
displayName: 'helm upgrade'
115103
inputs:
116104
connectionType: 'Kubernetes Service Connection'
117105
kubernetesServiceConnection: 'Phonebook Kubernetes Demo Cluster'
118-
namespace: $(namespace)
106+
arguments: '--namespace $(namespace) --create-namespace --cleanup-on-fail --wait'
119107
command: upgrade
120108
chartType: FilePath
121109
chartPath: '$(Pipeline.Workspace)/$(helm_artifact_name)/phonebook-0.1.0.tgz'
122110
releaseName: phonebook-$(namespace)
123111
overrideValues: 'frontend.image.tag=$(image_tag_frontend),frontend.image.repository=$(image_repo),frontend.image.name=$(image_namespace),source.peoplesoft.image.tag=$(image_tag_source_peoplesoft),source.peoplesoft.image.name=$(image_namespace),traefik.enabled=false,host=$(image_tag_frontend).demo-phonebook.aquiver.de'
124112
valueFile: 'demo/values.yml'
125-
recreate: true
126-
tillerNamespace: kube-system
127113

128114
- task: Kubernetes@1
129115
displayName: 'Delete Namespace'
@@ -135,7 +121,7 @@ jobs:
135121
arguments: 'namespace $(namespace)'
136122

137123
- job: notify
138-
displayName: 'Notify Github '
124+
displayName: 'Notify Github'
139125
pool: server
140126
dependsOn: deploy_preview
141127
steps:
@@ -179,16 +165,15 @@ jobs:
179165
steps:
180166
- checkout: none
181167
- task: HelmInstaller@1
182-
displayName: 'Install Helm 2.14.2'
183-
inputs:
184-
helmVersionToInstall: 2.14.2
168+
displayName: Helm install latest
169+
# inputs:
170+
# helmVersionToInstall: '2.14.2'
185171
- task: HelmDeploy@0
186172
inputs:
187173
connectionType: 'Kubernetes Service Connection'
188174
kubernetesServiceConnection: 'Phonebook Kubernetes Demo Cluster'
189175
command: 'delete'
190-
arguments: '--purge phonebook-$(namespace)'
191-
tillerNamespace: kube-system
176+
arguments: '--purge phonebook-$(namespace) --namespace $(namespace)'
192177
- task: Kubernetes@1
193178
displayName: 'Delete Namespace'
194179
condition: always()

.azure/pipelines/pr/Phonebook.pr.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,16 @@ jobs:
1414
vmImage: 'ubuntu-16.04'
1515
steps:
1616
- task: HelmInstaller@1
17-
inputs:
18-
helmVersionToInstall: '2.14.2'
19-
- script: helm dep update
20-
workingDirectory: 'Phonebook/phonebook/'
17+
displayName: Helm install latest
18+
# inputs:
19+
# helmVersionToInstall: '2.14.2'
2120
- task: HelmDeploy@0
2221
displayName: Helm package
2322
inputs:
2423
command: package
2524
chartPath: Phonebook/phonebook
2625
destination: $(Build.ArtifactStagingDirectory)
26+
arguments: --dependency-update
2727
- task: PublishBuildArtifacts@1
2828
inputs:
2929
pathToPublish: $(Build.ArtifactStagingDirectory)

Phonebook/local-values.yml

Lines changed: 24 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -17,42 +17,31 @@ source:
1717
replicaCount: 1
1818
environment: Development
1919

20+
# Traefik Configuration
2021
traefik:
21-
enabled: true
22-
additional:
23-
checkNewVersion: false
24-
sendAnonymousUsage: false
25-
dashboard:
26-
# Enable the dashboard on Traefik
27-
enable: true
28-
# Expose the dashboard and api through an ingress route at /dashboard
29-
# and /api This is not secure and SHOULD NOT be enabled on production
30-
# deployments
31-
ingressRoute: true
22+
deployment:
23+
enabled: true
3224

25+
# Only modify these do not touch "globalArguments"
3326
additionalArguments:
34-
- '--providers.kubernetesingress'
35-
- '--api.insecure=true'
36-
logs:
37-
loglevel: debug
38-
globalArguments:
39-
- ''
40-
# Old
41-
# startupArguments:
42-
# - ''
43-
# dashboard:
44-
# enabled: true
45-
# domain: board.demo-phonebook.local
46-
# ingress:
47-
# annotations:
48-
# traefik.frontend.priority: '100'
27+
- --entrypoints.web.http.redirections.entrypoint.to=:443
28+
- --entrypoints.websecure.http.tls.certResolver=default
29+
- --certificatesresolvers.default.acme.httpchallenge=true
30+
- --certificatesresolvers.default.acme.httpchallenge.entrypoint=web
31+
- --certificatesresolvers.default.acme.storage=tmp/acme.json
32+
- --certificatesresolvers.default.acme.email=phonebook-t-systems-mms@mg.telekom.de
33+
- --certificatesresolvers.default.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
34+
- --api.dashboard=true
35+
- --api=true
4936

50-
ssl:
51-
enabled: true
52-
enforced: true
53-
rbac:
54-
enabled: true
55-
kubernetes:
56-
namespaces:
57-
- kube-public
58-
- default
37+
logs:
38+
# Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on).
39+
general:
40+
# By default, the logs use a text format (common), but you can
41+
# also ask for the json format in the format option
42+
# format: json
43+
# By default, the level is set to ERROR. Alternative logging levels are DEBUG, PANIC, FATAL, ERROR, WARN, and INFO.
44+
level: INFO
45+
access:
46+
# To enable access log
47+
enabled: true
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
dependencies:
2-
- name: traefik
3-
repository: https://containous.github.io/traefik-helm-chart
4-
version: 3.4.0
5-
digest: sha256:69f27dcbfa7eacbaa64365626276506c7050ab2c65d0db8780f4c2adc882d3d6
6-
generated: '2020-04-08T14:26:29.6008416+02:00'
2+
- name: traefik
3+
repository: https://helm.traefik.io/traefik
4+
version: 9.4.3
5+
digest: sha256:fd64faa165f4cd75bce09c96fd7e5c0222fde2427ace15ce144e32bc452869f3
6+
generated: "2020-10-11T21:50:24.9918945+02:00"
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
dependencies:
22
- name: traefik
33
condition: traefik.enabled
4-
version: 3.4.0
5-
appVersion: 2.1.3
6-
repository: https://containous.github.io/traefik-helm-chart
4+
version: 9.4.3
5+
appVersion: 2.3.1
6+
repository: https://helm.traefik.io/traefik
7+

Phonebook/phonebook/templates/frontend-deployment.yaml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,30 @@
11
apiVersion: apps/v1
22
kind: Deployment
33
metadata:
4-
name: {{ include "phonebook.fullname" . }}
4+
name: {{ include "phonebook.fullname" . }}-frontend
55
labels:
6-
app.kubernetes.io/name: {{ include "phonebook.name" . }}
6+
app.kubernetes.io/name: {{ include "phonebook.name" . }}-frontend
77
helm.sh/chart: {{ include "phonebook.chart" . }}
88
app.kubernetes.io/instance: {{ .Release.Name }}
99
app.kubernetes.io/managed-by: {{ .Release.Service }}
1010
spec:
1111
replicas: {{ .Values.frontend.replicaCount }}
1212
selector:
1313
matchLabels:
14-
app.kubernetes.io/name: {{ include "phonebook.name" . }}
14+
app.kubernetes.io/name: {{ include "phonebook.name" . }}-frontend
1515
app.kubernetes.io/instance: {{ .Release.Name }}
1616
template:
1717
metadata:
1818
labels:
19-
app.kubernetes.io/name: {{ include "phonebook.name" . }}
19+
app.kubernetes.io/name: {{ include "phonebook.name" . }}-frontend
2020
app.kubernetes.io/instance: {{ .Release.Name }}
21+
annotations:
22+
rollme: "{{ now | unixEpoch }}"
2123
spec:
2224
nodeSelector:
2325
'beta.kubernetes.io/os': linux
2426
containers:
25-
- name: {{ .Chart.Name }}-{{ .Values.frontend.name }}
27+
- name: {{ .Chart.Name }}-{{ .Values.frontend.name }}-frontend
2628
image: "{{ .Values.frontend.image.repository }}/{{ .Values.frontend.image.name}}:{{ .Values.frontend.image.tag }}"
2729
imagePullPolicy: {{ .Values.frontend.image.pullPolicy }}
2830
ports:
@@ -75,4 +77,4 @@ spec:
7577
{{- with .Values.tolerations }}
7678
tolerations:
7779
{{- toYaml . | nindent 8 }}
78-
{{- end }}
80+
{{- end }}
Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,37 @@
11
{{- if .Values.ingress.enabled -}}
22
{{- $fullName := include "phonebook.fullname" . -}}
3-
apiVersion: extensions/v1beta1
4-
kind: Ingress
3+
apiVersion: traefik.containo.us/v1alpha1
4+
kind: IngressRoute
55
metadata:
66
name: {{ $fullName }}
7+
namespace: {{ .Release.Namespace }}
78
labels:
8-
app.kubernetes.io/name: {{ include "phonebook.name" . }}
9+
app.kubernetes.io/name: {{ include "phonebook.name" . }}-frontend
910
helm.sh/chart: {{ include "phonebook.chart" . }}
1011
app.kubernetes.io/instance: {{ .Release.Name }}
1112
app.kubernetes.io/managed-by: {{ .Release.Service }}
12-
annotations:
13-
traefik.ingress.kubernetes.io/router.entrypoints: "web"
14-
traefik.ingress.kubernetes.io/router.priority: "42"
15-
traefik.ingress.kubernetes.io/router.tls: "true"
16-
traefik.ingress.kubernetes.io/router.tls.certresolver: http-01
17-
kubernetes.io/ingress.class: traefik
18-
{{- with .Values.ingress.annotations }}
19-
{{- toYaml . | nindent 4 }}
20-
{{- end }}
2113
spec:
22-
rules:
23-
- host: {{ .Values.host }}
24-
http:
25-
paths:
26-
- path: /
27-
backend:
28-
serviceName: {{ $fullName }}
29-
servicePort: http
14+
entryPoints:
15+
- web
16+
- websecure
17+
routes:
18+
- kind: Rule
19+
match: Host(`{{ .Values.host }}`)
20+
priority: 40
21+
middlewares:
22+
- name: ratelimit
23+
namespace: {{ .Release.Namespace }}
24+
services:
25+
- kind: Service
26+
name: {{ $fullName }}-frontend
27+
namespace: {{ .Release.Namespace }}
28+
passHostHeader: true
29+
port: 80
30+
strategy: RoundRobin
31+
weight: 10
32+
tls:
33+
certResolver: default
34+
options:
35+
name: tlsoption
36+
namespace: {{ .Release.Namespace }}
3037
{{- end }}

Phonebook/phonebook/templates/frontend-service.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apiVersion: v1
22
kind: Service
33
metadata:
4-
name: {{ include "phonebook.fullname" . }}
4+
name: {{ include "phonebook.fullname" . }}-frontend
55
labels:
66
app.kubernetes.io/name: {{ include "phonebook.name" . }}
77
helm.sh/chart: {{ include "phonebook.chart" . }}
@@ -15,5 +15,5 @@ spec:
1515
protocol: TCP
1616
name: http
1717
selector:
18-
app.kubernetes.io/name: {{ include "phonebook.name" . }}
18+
app.kubernetes.io/name: {{ include "phonebook.name" . }}-frontend
1919
app.kubernetes.io/instance: {{ .Release.Name }}

Phonebook/phonebook/templates/source-peoplesoft-deployment.yaml

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ spec:
1818
labels:
1919
app.kubernetes.io/name: {{ include "phonebook.name" . }}-peoplesoft
2020
app.kubernetes.io/instance: {{ .Release.Name }}
21+
annotations:
22+
rollme: "{{ now | unixEpoch }}"
2123
spec:
2224
nodeSelector:
2325
'beta.kubernetes.io/os': linux
@@ -32,17 +34,16 @@ spec:
3234
- name: https
3335
containerPort: 443
3436
protocol: TCP
35-
# TODO: use when issue #594 is resolved
36-
# livenessProbe:
37-
# httpGet:
38-
# path: /health
39-
# port: http
40-
# initialDelaySeconds: 6
41-
# readinessProbe:
42-
# httpGet:
43-
# path: /health
44-
# port: http
45-
# initialDelaySeconds: 6
37+
livenessProbe:
38+
httpGet:
39+
path: /health
40+
port: http
41+
initialDelaySeconds: 6
42+
readinessProbe:
43+
httpGet:
44+
path: /health
45+
port: http
46+
initialDelaySeconds: 6
4647
env:
4748
- name: ASPNETCORE_ENVIRONMENT
4849
value: "{{ .Values.source.peoplesoft.environment }}"

0 commit comments

Comments
 (0)