Skip to content

Commit

Permalink
- group values.yaml variables
Browse files Browse the repository at this point in the history
- split ingress into two separate manifests to enable grpcurl to work (reflect endpoint)
- optional certificate for easy minikube deployment
- enable service type switch to workaround nginx ingress problems and get everything working in minikube
- add example etcd deployment with etcd-operator
  • Loading branch information
Witold Konior committed Jul 22, 2019
1 parent b383712 commit fdb9b0d
Show file tree
Hide file tree
Showing 8 changed files with 133 additions and 40 deletions.
25 changes: 23 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ GIT_COMMIT := $(shell git rev-parse HEAD 2>/dev/null)
build_docker: cqserver_docker

cqserver_docker:
docker build -f cmd/cq/Dockerfile -t $(DOCKER_REGISTRY)/cqserver:$(GIT_BRANCH)_$(GIT_COMMIT) -t $(DOCKER_REGISTRY)/cqserver:latest .
# eval $(minikube docker-env)
docker build -f cmd/cq/Dockerfile -t $(DOCKER_REGISTRY)/message_bus:$(GIT_BRANCH)_$(GIT_COMMIT) -t $(DOCKER_REGISTRY)/message_bus:latest .


test:
Expand Down Expand Up @@ -52,4 +53,24 @@ query/mocks/repository.go: query/repository.go
deployment-check: deployment-cqserver-check

deployment-cqserver-check:
helm install deployment/cqserver/ --debug --dry-run
helm install deployment/cqserver/ --debug --dry-run

# NOTE
# With nginx ingress in minikube is now at version 0.23 and have some problems with GRPC request proxying.
# Upgrading to 0.25 should solve this problem. However to workaround that in minikube we set NodePort service
# to get everything working instantly, check the node ports:
# $ kubectl describe svc --namespace tdc message-bus
deploy-minikube:
helm upgrade message-bus \
--install \
--kube-context minikube \
--set ImageTag=$(GIT_BRANCH)_$(GIT_COMMIT) \
--set DockerRegistry=$(DOCKER_REGISTRY) \
--set ServiceType=NodePort
--namespace=tdc deployment/cqserver

deploy-etcd-operator:
helm upgrade etcd-operator --install stable/etcd-operator --namespace tdc

deploy-etcd:
kubectl apply -f deployment/etcd/etcd.yaml --namespace tdc
4 changes: 3 additions & 1 deletion deployment/cqserver/templates/cert.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
{{- if .Values.CertManagerEnabled }}
{
"apiVersion": "certmanager.k8s.io/v1alpha1",
"kind": "Certificate",
Expand Down Expand Up @@ -26,4 +27,5 @@
},
"secretName": "{{ .Values.FQDN | replace "." "-"}}-tls-cert"
}
}
}
{{- end }}
45 changes: 34 additions & 11 deletions deployment/cqserver/templates/ingress.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: extensions/v1beta1
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: "{{ .Release.Name }}"
name: "{{ .Release.Name }}-collector"
labels:
heritage: {{ .Release.Service | quote }}
release: {{ .Release.Name | quote }}
Expand All @@ -15,21 +15,44 @@ metadata:
# We get unencrypted traffic inside cluster, to use TLS also internally we need to enable
# annotation below + provide TLS configuration into our service accordingly.
# nginx.ingress.kubernetes.io/backend-protocol: "GRPCS"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
# nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
tls:
- hosts:
- "{{ .Values.FQDN }}"
secretName: {{ .Values.FQDN | replace "." "-"}}-tls-cert
- "{{ .Values.CollectorFQDN }}"
secretName: {{ .Values.CollectorFQDN | replace "." "-"}}-tls-cert
rules:
- host: "{{ .Values.FQDN }}"
- host: "{{ .Values.CollectorFQDN }}"
http:
paths:
- path: /query.QueryService
backend:
serviceName: "{{ .Release.Name }}"
servicePort: {{ .Values.QueryPort }}
- path: /collector.CollectorService
- path: /
backend:
serviceName: "{{ .Release.Name }}"
servicePort: {{ .Values.CollectorPort }}
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: "{{ .Release.Name }}-query"
labels:
heritage: {{ .Release.Service | quote }}
release: {{ .Release.Name | quote }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
component: "{{ .Release.Name }}"
annotations:
helm.sh/created: {{ .Release.Time.Seconds | quote }}
kubernetes.io/ingress.class: {{ .Values.IngressClass }}
nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
spec:
tls:
- hosts:
- "{{ .Values.QueryFQDN }}"
secretName: {{ .Values.QueryFQDN | replace "." "-"}}-tls-cert
rules:
- host: "{{ .Values.QueryFQDN }}"
http:
paths:
- path: /
backend:
serviceName: "{{ .Release.Name }}"
servicePort: {{ .Values.QueryPort }}
1 change: 1 addition & 0 deletions deployment/cqserver/templates/service.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ metadata:
chart: "{{.Chart.Name}}-{{.Chart.Version}}"
component: "{{.Release.Name}}"
spec:
type: {{ .Values.ServiceType }}
selector:
app: "{{ .Release.Name }}"
ports:
Expand Down
20 changes: 13 additions & 7 deletions deployment/cqserver/values.yaml
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
Name: "cqserver"
RepoName: "cqserver"
RepoName: "message_bus"
ImageTag: "v0.0.1"
Registry: "jozuenoon"
Servers: 2
HealthCheckPort: 5000
CollectorPort: 9000
QueryPort: 8000
Scheme: "HTTP"
ImagePullPolicy: "Always"
ImagePullPolicy: "IfNotPresent"

# Service
ServiceType: ClusterIP

# Ingress configuration
IngressClass: "nginx"
FQDN: "example.com"
QueryFQDN: "query.message-bus.traffic"
CollectorFQDN: "collector.message-bus.traffic"
CertManagerEnabled: false

# Pod disruption budget
MinAvailable: 1

ETCDEndpoints: ["http://etcd-0:2379", "http://etcd-1:2379", "http://etcd-2:2379"]
# Configuration
ETCDEndpoints: "http://etcd-client:2379"
CollectorPort: 9000
QueryPort: 8000
HealthCheckPort: 5000
7 changes: 7 additions & 0 deletions deployment/etcd/etcd.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
apiVersion: etcd.database.coreos.com/v1beta2
kind: EtcdCluster
metadata:
name: "etcd"
spec:
size: 3
version: "3.2.13"
6 changes: 4 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,16 @@ go 1.12

require (
github.com/coreos/etcd v3.3.13+incompatible
github.com/fullstorydev/grpcurl v1.3.1 // indirect
github.com/golang/protobuf v1.3.2
github.com/google/go-cmp v0.2.0
github.com/google/uuid v1.1.1
github.com/inconshreveable/log15 v0.0.0-20180818164646-67afb5ed74ec
github.com/json-iterator/go v1.1.6 // indirect
github.com/mattn/go-colorable v0.1.2 // indirect
github.com/mattn/go-runewidth v0.0.4 // indirect
github.com/mitchellh/cli v1.0.0 // indirect
github.com/mitchellh/go-homedir v1.1.0
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.1 // indirect
github.com/oklog/run v1.0.0
github.com/oklog/ulid/v2 v2.0.2
github.com/olekukonko/tablewriter v0.0.1
Expand Down
Loading

0 comments on commit fdb9b0d

Please sign in to comment.