Skip to content

Commit afc760a

Browse files
authored
Merge pull request #34 from StackStorm/enh/loadbalancer
Support additional st2web service types (ClusterIP, NodePort, LoadBalancer and ExternalName)
2 parents 5dcac08 + b4815f9 commit afc760a

File tree

7 files changed

+65
-6
lines changed

7 files changed

+65
-6
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
charts
2+
*.lock

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## In Development
44

5+
## v0.8.0
6+
* Add ability to specify service type for st2web (#35)
57

68
## v0.7.1
79
* Fix st2web re-deployment is not triggered when updating SSL cert (#33)

Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: v1
22
# Update StackStorm version here to rely on other Docker images tags
33
appVersion: 3.0dev
44
name: stackstorm-ha
5-
version: 0.7.1
5+
version: 0.8.0
66
description: StackStorm K8s Helm Chart, optimized for running StackStorm in HA environment.
77
home: https://stackstorm.com/#product
88
icon: https://avatars1.githubusercontent.com/u/4969009

requirements.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,7 @@ dependencies:
1414
version: 0.2.2
1515
repository: https://kubernetes-charts-incubator.storage.googleapis.com/
1616
condition: docker-registry.enabled
17+
- name: external-dns
18+
version: 1.0.2
19+
repository: https://kubernetes-charts.storage.googleapis.com/
20+
condition: external-dns.enabled

templates/NOTES.txt

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,29 @@ Congratulations! You have just deployed StackStorm {{ if .Values.enterprise.enab
77
███████║ ██║ ███████╗ ██║ ██║██║ ██║ ╚██████╔╝██║ ██╗
88
╚══════╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝
99

10-
1. Get the StackStorm Web UI URL by running these commands:
10+
1. Get the StackStorm Web UI URL:
11+
{{- if contains "LoadBalancer" .Values.st2web.service.type }}
12+
13+
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
14+
Watch the status with "kubectl get service st2cicd-st2web-enterprise -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'"
15+
16+
export ST2WEB_IP=$(kubectl get service st2cicd-st2web-enterprise -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
17+
echo https://${ST2WEB_IP}/
18+
19+
{{- else if contains "ClusterIP" .Values.st2web.service.type }}
20+
21+
echo https://127.0.0.1:8443
22+
kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ .Release.Name }}-st2web-{{ if .Values.enterprise.enabled }}-enterprise {{ end }} 8443:443
23+
24+
{{- end }}
25+
{{- if contains "NodePort" .Values.st2web.service.type }}
26+
1127
export ST2WEB_IP=$(minikube ip 2>/dev/null || kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
12-
export ST2WEB_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ .Release.Name }}-st2web{{ template "enterpriseSuffix" . }})
28+
export ST2WEB_PORT="$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ .Release.Name }}-st2web{{ template "enterpriseSuffix" . }})"
1329
echo https://${ST2WEB_IP}:${ST2WEB_PORT}/
1430

31+
{{- end }}
32+
1533
2. Login with the following credentials:
1634
username: {{ .Values.secrets.st2.username }}
1735
password: {{ .Values.secrets.st2.password }}

templates/services.yaml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,12 @@ metadata:
8080
name: {{ .Release.Name }}-st2web{{ template "enterpriseSuffix" . }}
8181
annotations:
8282
description: StackStorm st2web, - an admin Web UI and main entry point for external API requests
83+
{{- if .Values.st2web.service.hostname }}
84+
external-dns.alpha.kubernetes.io/hostname: {{ .Values.st2web.service.hostname | quote }}
85+
{{- end }}
86+
{{- if .Values.st2web.annotations }}
87+
{{ toYaml .Values.st2web.annotations | indent 4 }}
88+
{{- end }}
8389
labels:
8490
app: st2web
8591
tier: frontend
@@ -93,8 +99,12 @@ spec:
9399
app: st2web
94100
support: {{ template "supportMethod" . }}
95101
release: {{ .Release.Name }}
96-
# TODO: Consider to template it, if needed
97-
type: NodePort
102+
type: {{ .Values.st2web.service.type }}
103+
{{- if contains "ExternalName" .Values.st2web.service.type }}
104+
{{- if .Values.st2web.service.hostname }}
105+
externalName: {{ .Values.st2web.service.hostname }}
106+
{{- end }}
107+
{{- end }}
98108
ports:
99109
- protocol: TCP
100110
port: 443

values.yaml

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,16 @@ st2web:
212212
cpu: "50m"
213213
limits:
214214
memory: "100Mi"
215-
# TODO: Add Ingress and/or LoadBalancer setting as a way to expose service to public (#6)
215+
# TODO: Add Ingress setting as a way to expose service to public (#6).
216216
# ingress:
217+
service:
218+
# type can be one of "ClusterIP", "NodePort", "LoadBalancer" or "ExternalName"
219+
type: "NodePort"
220+
# The hostname associated with st2web service (externalName, added to external DNS, etc.)
221+
hostname: ""
222+
# For more information regarding annotations, see
223+
# https://kubernetes.io/docs/concepts/services-networking/service/#ssl-support-on-aws
224+
annotations: {}
217225
# Additional advanced settings to control pod/deployment placement
218226
nodeSelector: {}
219227
tolerations: []
@@ -388,3 +396,18 @@ kube-registry-proxy:
388396
host: st2packs-docker-registry.default.svc.cluster.local
389397
port: 5000
390398
hostPort: 5000
399+
400+
##
401+
## External DNS configuration (3rd party chart dependency)
402+
##
403+
## Creates a deployment of external-dns within the cluster to update DNS with CNAME -> ELB
404+
##
405+
## For values.yaml reference:
406+
## https://github.com/helm/charts/tree/master/stable/external-dns
407+
##
408+
## TODO: If eq st2web.service.type "LoadBalancer", set enabled to true. Any other cases?
409+
external-dns:
410+
enabled: false
411+
aws:
412+
zoneType: "public"
413+
domainFilters: []

0 commit comments

Comments
 (0)