Skip to content

Commit

Permalink
Add file-based configurations to services (onosproject#51)
Browse files Browse the repository at this point in the history
* Add support for values-based configuration of services

* Ensure configuration files generated in configmaps are parseable

* Generalize values file formats for services to hide implementation details and simplify configuration

* Default consensus database name to empty string

* Fix incorrect key in service configurations
  • Loading branch information
kuujo authored and woojoong88 committed Mar 23, 2020
1 parent 1129c56 commit 5cc88e8
Show file tree
Hide file tree
Showing 15 changed files with 172 additions and 82 deletions.
15 changes: 14 additions & 1 deletion onos-config/templates/configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,17 @@ metadata:
heritage: "{{ .Release.Service }}"
data:
onos.yaml: |-
{{ toYaml .Values.config | indent 4 }}
atomix:
controller: {{ .Values.store.controller }}
namespace: {{ .Release.Namespace }}
scope: {{ template "onos-config.fullname" . }}
databases:
{{- if .Values.store.consensus.database }}
consensus: {{ .Values.store.database }}
{{- else }}
consensus: {{ template "onos-config.fullname" . }}-consensus
{{- end }}
{{- if .Values.logging }}
logging:
{{ toYaml .Values.logging | indent 6 }}
{{- end}}
23 changes: 23 additions & 0 deletions onos-config/templates/consensus.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{{- if .Values.store.consensus.enabled }}
apiVersion: cloud.atomix.io/v1beta1
kind: Database
metadata:
{{- if .Values.store.database }}
name: {{ .Values.store.database }}
{{- else }}
name: {{ template "onos-config.fullname" . }}-consensus
{{- end }}
namespace: {{ .Release.Namespace }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
clusters: {{ .Values.store.consensus.clusters }}
template:
spec:
partitions: {{ .Values.store.consensus.partitions }}
backend:
image: {{ .Values.store.consensus.backend.image }}
replicas: {{ .Values.store.consensus.backend.replicas }}
{{- end }}
20 changes: 0 additions & 20 deletions onos-config/templates/database.yaml

This file was deleted.

16 changes: 15 additions & 1 deletion onos-config/templates/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ spec:
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
# *_NAMESPACE and *_NAME environment variables are recognized by onos-lib-go utilities.
# These variables should always be defined.
- name: POD_NAMESPACE
valueFrom:
fieldRef:
Expand All @@ -47,16 +49,28 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: SERVICE_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: SERVICE_NAME
value: {{ template "onos-config.fullname" . }}
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
# Note: Atomix environment variables remain for backwards compatibility.
# TODO: Remove Atomix environment variables once images have be updated to use new configuration file format
- name: ATOMIX_CONTROLLER
value: {{ .Values.store.controller | quote }}
- name: ATOMIX_APP
value: {{ include "onos-config.fullname" . }}
- name: ATOMIX_RAFT
value: {{ .Values.store.raftgroup }}
{{- if .Values.store.consensus.database }}
value: {{ .Values.store.consensus.database }}
{{- else }}
value: {{ template "onos-config.fullname" . }}-consensus
{{- end }}
- name: ATOMIX_NAMESPACE
value: {{ .Release.Namespace }}
args:
Expand Down
8 changes: 4 additions & 4 deletions onos-config/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ plugins:
# topoEndpoint: onos-topo-classic:5150

store:
enabled: true
raftgroup: onos-config-raft
controller: atomix-controller.kube-system.svc.cluster.local:5679
raft:
controller: "atomix-controller.kube-system.svc.cluster.local:5679"
consensus:
enabled: true
database: ""
partitions: 1
clusters: 1
backend:
Expand Down
15 changes: 14 additions & 1 deletion onos-ric/templates/configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,17 @@ metadata:
heritage: "{{ .Release.Service }}"
data:
onos.yaml: |-
{{ toYaml .Values.config | indent 4 }}
atomix:
controller: {{ .Values.store.controller }}
namespace: {{ .Release.Namespace }}
scope: {{ template "onos-ric.fullname" . }}
databases:
{{- if .Values.store.consensus.database }}
consensus: {{ .Values.store.database }}
{{- else }}
consensus: {{ template "onos-ric.fullname" . }}-consensus
{{- end }}
{{- if .Values.logging }}
logging:
{{ toYaml .Values.logging | indent 6 }}
{{- end}}
23 changes: 23 additions & 0 deletions onos-ric/templates/consensus.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{{- if .Values.store.consensus.enabled }}
apiVersion: cloud.atomix.io/v1beta1
kind: Database
metadata:
{{- if .Values.store.database }}
name: {{ .Values.store.database }}
{{- else }}
name: {{ template "onos-ric.fullname" . }}-consensus
{{- end }}
namespace: {{ .Release.Namespace }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
clusters: {{ .Values.store.consensus.clusters }}
template:
spec:
partitions: {{ .Values.store.consensus.partitions }}
backend:
image: {{ .Values.store.consensus.backend.image }}
replicas: {{ .Values.store.consensus.backend.replicas }}
{{- end }}
20 changes: 0 additions & 20 deletions onos-ric/templates/database.yaml

This file was deleted.

16 changes: 15 additions & 1 deletion onos-ric/templates/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ spec:
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
# *_NAMESPACE and *_NAME environment variables are recognized by onos-lib-go utilities.
# These variables should always be defined.
- name: POD_NAMESPACE
valueFrom:
fieldRef:
Expand All @@ -67,16 +69,28 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: SERVICE_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: SERVICE_NAME
value: {{ template "onos-ric.fullname" . }}
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
# Note: Atomix environment variables remain for backwards compatibility.
# TODO: Remove Atomix environment variables once images have be updated to use new configuration file format
- name: ATOMIX_CONTROLLER
value: {{ .Values.store.controller | quote }}
- name: ATOMIX_APP
value: {{ include "onos-ric.fullname" . }}
- name: ATOMIX_RAFT
value: {{ .Values.store.raftgroup }}
{{- if .Values.store.consensus.database }}
value: {{ .Values.store.consensus.database }}
{{- else }}
value: {{ template "onos-ric.fullname" . }}-consensus
{{- end }}
- name: ATOMIX_NAMESPACE
value: {{ .Release.Namespace }}
args:
Expand Down
10 changes: 5 additions & 5 deletions onos-ric/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ fullnameOverride: "onos-ric"
debug: false

store:
enabled: true
raftgroup: onos-ric-raft
controller: atomix-controller.kube-system.svc.cluster.local:5679
raft:
controller: "atomix-controller.kube-system.svc.cluster.local:5679"
consensus:
enabled: true
database: ""
partitions: 1
clusters: 1
backend:
Expand Down Expand Up @@ -49,4 +49,4 @@ tolerations: []

affinity: {}

config: {}
logging: {}
15 changes: 14 additions & 1 deletion onos-topo/templates/configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,17 @@ metadata:
heritage: "{{ .Release.Service }}"
data:
onos.yaml: |-
{{ toYaml .Values.config | indent 4 }}
atomix:
controller: {{ .Values.store.controller }}
namespace: {{ .Release.Namespace }}
scope: {{ template "onos-topo.fullname" . }}
databases:
{{- if .Values.store.consensus.database }}
consensus: {{ .Values.store.database }}
{{- else }}
consensus: {{ template "onos-topo.fullname" . }}-consensus
{{- end }}
{{- if .Values.logging }}
logging:
{{ toYaml .Values.logging | indent 6 }}
{{- end}}
23 changes: 23 additions & 0 deletions onos-topo/templates/consensus.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{{- if .Values.store.consensus.enabled }}
apiVersion: cloud.atomix.io/v1beta1
kind: Database
metadata:
{{- if .Values.store.database }}
name: {{ .Values.store.database }}
{{- else }}
name: {{ template "onos-topo.fullname" . }}-consensus
{{- end }}
namespace: {{ .Release.Namespace }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
clusters: {{ .Values.store.consensus.clusters }}
template:
spec:
partitions: {{ .Values.store.consensus.partitions }}
backend:
image: {{ .Values.store.consensus.backend.image }}
replicas: {{ .Values.store.consensus.backend.replicas }}
{{- end }}
20 changes: 0 additions & 20 deletions onos-topo/templates/database.yaml

This file was deleted.

20 changes: 17 additions & 3 deletions onos-topo/templates/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ spec:
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
# *_NAMESPACE and *_NAME environment variables are recognized by onos-lib-go utilities.
# These variables should always be defined.
- name: POD_NAMESPACE
valueFrom:
fieldRef:
Expand All @@ -44,18 +46,30 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: SERVICE_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: SERVICE_NAME
value: {{ template "onos-topo.fullname" . }}
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
# Note: Atomix environment variables remain for backwards compatibility.
# TODO: Remove Atomix environment variables once images have be updated to use new configuration file format
- name: ATOMIX_CONTROLLER
value: {{ .Values.store.controller | quote }}
- name: ATOMIX_NAMESPACE
value: {{ .Release.Namespace }}
- name: ATOMIX_APP
value: {{ include "onos-topo.fullname" . }}
- name: ATOMIX_RAFT
value: {{ .Values.store.raftgroup }}
- name: ATOMIX_NAMESPACE
value: {{ .Release.Namespace }}
{{- if .Values.store.consensus.database }}
value: {{ .Values.store.consensus.database }}
{{- else }}
value: {{ template "onos-topo.fullname" . }}-consensus
{{- end }}
args:
- "-caPath=/etc/onos/certs/tls.cacrt"
- "-keyPath=/etc/onos/certs/tls.key"
Expand Down
10 changes: 5 additions & 5 deletions onos-topo/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ fullnameOverride: "onos-topo"
debug: false

store:
enabled: true
raftgroup: onos-topo-raft
controller: atomix-controller.kube-system.svc.cluster.local:5679
raft:
controller: "atomix-controller.kube-system.svc.cluster.local:5679"
consensus:
enabled: true
database: ""
partitions: 1
clusters: 1
backend:
Expand All @@ -41,4 +41,4 @@ tolerations: []

affinity: {}

config: {}
logging: {}

0 comments on commit 5cc88e8

Please sign in to comment.