chore: custom charts template namespace (#416)

* feat: update namespace logic in helm

Signed-off-by: Gaius <gaius.qi@gmail.com>
This commit is contained in:
Gaius 2021-07-02 18:26:00 +08:00
parent 31fc25a991
commit 94b2684da6
No known key found for this signature in database
GPG Key ID: 8B4E5D1290FA2FFB
16 changed files with 55 additions and 46 deletions

View File

@ -21,7 +21,6 @@ The following table lists the configurable parameters of the dragonfly chart, an
| Parameter | Description | Default | | Parameter | Description | Default |
| ----------------------------------------- | ------------------------------------------------------------ | ----------------------------- | | ----------------------------------------- | ------------------------------------------------------------ | ----------------------------- |
| `installation.namespace` | namespace for dragonfly installation | `dragonfly-system` |
| `installation.jaeger` | whether enable an all in one jaeger for tracing | `false` | | `installation.jaeger` | whether enable an all in one jaeger for tracing | `false` |
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
@ -29,7 +28,7 @@ Specify each parameter using the `--set key=value[,key=value]` argument to `helm
For example: For example:
```shell ```shell
helm install dragonfly https://... --set installation.namespace=kube-system helm install --namespace dragonfly-system dragonfly https://...
``` ```
## Reference ## Reference

View File

@ -1,30 +1,30 @@
1. [WIP] Get the scheduler URL by running these commands: 1. [WIP] Get the scheduler URL by running these commands:
{{- if contains "NodePort" .Values.scheduler.service.type }} {{- if contains "NodePort" .Values.scheduler.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Values.installation.namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "dragonfly.scheduler.fullname" . }}) export NODE_PORT=$(kubectl get --namespace {{ template "dragonfly.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "dragonfly.scheduler.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Values.installation.namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") export NODE_IP=$(kubectl get nodes --namespace {{ template "dragonfly.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.scheduler.service.type }} {{- else if contains "LoadBalancer" .Values.scheduler.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available. NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Values.installation.namespace }} svc -w {{ include "dragonfly.scheduler.fullname" . }}' You can watch the status of by running 'kubectl get --namespace {{ template "dragonfly.namespace" . }} svc -w {{ include "dragonfly.scheduler.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Values.installation.namespace }} {{ include "dragonfly.scheduler.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") export SERVICE_IP=$(kubectl get svc --namespace {{ template "dragonfly.namespace" . }} {{ include "dragonfly.scheduler.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.scheduler.service.port }} echo http://$SERVICE_IP:{{ .Values.scheduler.service.port }}
{{- else if contains "ClusterIP" .Values.scheduler.service.type }} {{- else if contains "ClusterIP" .Values.scheduler.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Values.installation.namespace }} -l "app={{ include "dragonfly.scheduler.fullname" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") export POD_NAME=$(kubectl get pods --namespace {{ template "dragonfly.namespace" . }} -l "app={{ include "dragonfly.scheduler.fullname" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Values.installation.namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") export CONTAINER_PORT=$(kubectl get pod --namespace {{ template "dragonfly.namespace" . }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
echo "Visit http://127.0.0.1:8002 to use your scheduler" echo "Visit http://127.0.0.1:8002 to use your scheduler"
kubectl --namespace {{ .Values.installation.namespace }} port-forward $POD_NAME 8002:$CONTAINER_PORT kubectl --namespace {{ template "dragonfly.namespace" . }} port-forward $POD_NAME 8002:$CONTAINER_PORT
{{- end }} {{- end }}
2. Get the dfdaemon port by running these commands: 2. Get the dfdaemon port by running these commands:
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Values.installation.namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") export CONTAINER_PORT=$(kubectl get pod --namespace {{ template "dragonfly.namespace" . }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
You can use $CONTAINER_PORT as a proxy port in Node. You can use $CONTAINER_PORT as a proxy port in Node.
3. Configure runtime to use dragonfly: 3. Configure runtime to use dragonfly:
https://github.com/dragonflyoss/Dragonfly2/blob/main/docs/en/user-guide/quick-start.md https://github.com/dragonflyoss/Dragonfly2/blob/main/docs/en/user-guide/quick-start.md
{{ if .Values.installation.jaeger }} {{ if .Values.installation.jaeger }}
4. Get Jaeger query URL by running these commands: 4. Get Jaeger query URL by running these commands:
export JAEGER_QUERY_PORT=$(kubectl --namespace {{ .Values.installation.namespace }} get services jaeger-all-in-one-query -o jsonpath="{.spec.ports[0].port}") export JAEGER_QUERY_PORT=$(kubectl --namespace {{ template "dragonfly.namespace" . }} get services jaeger-all-in-one-query -o jsonpath="{.spec.ports[0].port}")
export JAEGER_QUERY_POD=$(kubectl --namespace {{ .Values.installation.namespace }} get pod -l app.kubernetes.io/name=jaeger-all-in-one -o jsonpath='{range .items[*]}{.metadata.name}{end}' | head -n 1) export JAEGER_QUERY_POD=$(kubectl --namespace {{ template "dragonfly.namespace" . }} get pod -l app.kubernetes.io/name=jaeger-all-in-one -o jsonpath='{range .items[*]}{.metadata.name}{end}' | head -n 1)
kubectl --namespace {{ .Values.installation.namespace }} port-forward $JAEGER_QUERY_POD 16686:$JAEGER_QUERY_PORT kubectl --namespace {{ template "dragonfly.namespace" . }} port-forward $JAEGER_QUERY_POD 16686:$JAEGER_QUERY_PORT
echo "Visit http://127.0.0.1:16686/search?limit=20&lookback=1h&maxDuration&minDuration&service=dragonfly to query download events" echo "Visit http://127.0.0.1:16686/search?limit=20&lookback=1h&maxDuration&minDuration&service=dragonfly to query download events"
{{- end }} {{- end }}

View File

@ -6,6 +6,17 @@ Expand the name of the chart.
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}} {{- end -}}
{{/*
Allow the release namespace to be overridden for multi-namespace in combined charts
*/}}
{{- define "dragonfly.namespace" -}}
{{- if ne .Release.Namespace "default" -}}
{{- .Release.Namespace -}}
{{- else if .Values.namespaceOverride -}}
{{- .Values.namespaceOverride -}}
{{- end -}}
{{- end -}}
{{/* {{/*
Create a default fully qualified app name. 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). We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).

View File

@ -2,7 +2,7 @@ apiVersion: v1
kind: ConfigMap kind: ConfigMap
metadata: metadata:
name: {{ template "dragonfly.cdn.fullname" . }} name: {{ template "dragonfly.cdn.fullname" . }}
namespace: {{ .Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" . }}
labels: labels:
app: {{ template "dragonfly.fullname" . }} app: {{ template "dragonfly.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"

View File

@ -3,7 +3,7 @@ kind: Role
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
metadata: metadata:
name: {{template "dragonfly.cdn.fullname" . }}-role name: {{template "dragonfly.cdn.fullname" . }}-role
namespace: {{ .Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" . }}
rules: rules:
- apiGroups: - apiGroups:
- "" - ""
@ -22,7 +22,7 @@ kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
metadata: metadata:
name: {{template "dragonfly.cdn.fullname" . }}-role-binding name: {{template "dragonfly.cdn.fullname" . }}-role-binding
namespace: {{ .Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" . }}
roleRef: roleRef:
kind: Role kind: Role
name: {{template "dragonfly.cdn.fullname" . }}-role name: {{template "dragonfly.cdn.fullname" . }}-role
@ -30,4 +30,4 @@ roleRef:
subjects: subjects:
- kind: ServiceAccount - kind: ServiceAccount
name: {{template "dragonfly.cdn.fullname" . }} name: {{template "dragonfly.cdn.fullname" . }}
{{- end }} {{- end }}

View File

@ -2,4 +2,4 @@ apiVersion: v1
kind: ServiceAccount kind: ServiceAccount
metadata: metadata:
name: {{template "dragonfly.cdn.fullname" . }} name: {{template "dragonfly.cdn.fullname" . }}
namespace: {{ .Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" . }}

View File

@ -8,7 +8,7 @@ metadata:
heritage: {{ .Release.Service }} heritage: {{ .Release.Service }}
release: {{ .Release.Name }} release: {{ .Release.Name }}
name: {{ template "dragonfly.cdn.fullname" . }} name: {{ template "dragonfly.cdn.fullname" . }}
namespace: {{ .Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" . }}
{{- if .Values.cdn.statefulsetAnnotations }} {{- if .Values.cdn.statefulsetAnnotations }}
annotations: annotations:
{{ toYaml .Values.cdn.statefulsetAnnotations | indent 4 }} {{ toYaml .Values.cdn.statefulsetAnnotations | indent 4 }}

View File

@ -2,7 +2,7 @@ apiVersion: v1
kind: ConfigMap kind: ConfigMap
metadata: metadata:
name: {{ template "dragonfly.dfdaemon.fullname" . }} name: {{ template "dragonfly.dfdaemon.fullname" . }}
namespace: {{ .Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" . }}
labels: labels:
app: {{ template "dragonfly.fullname" . }} app: {{ template "dragonfly.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
@ -17,14 +17,14 @@ data:
{{- if .Values.dfdaemon.config.jaeger }} {{- if .Values.dfdaemon.config.jaeger }}
jaeger: {{ .Values.dfdaemon.config.jaeger }} jaeger: {{ .Values.dfdaemon.config.jaeger }}
{{- else if .Values.installation.jaeger }} {{- else if .Values.installation.jaeger }}
jaeger: http://jaeger-all-in-one-collector.{{ $.Values.installation.namespace }}.svc{{ $.Values.installation.clusterDomain }}:14268/api/traces jaeger: http://jaeger-all-in-one-collector.{{ template "dragonfly.namespace" $ }}.svc{{ $.Values.installation.clusterDomain }}:14268/api/traces
{{- end }} {{- end }}
scheduler: scheduler:
netAddrs: netAddrs:
{{- $count := .Values.scheduler.replicas | int}} {{- $count := .Values.scheduler.replicas | int}}
{{- range $i, $x := until $count }} {{- range $i, $x := until $count }}
- type: tcp - type: tcp
addr: {{template "dragonfly.scheduler.fullname" $ }}-{{$i}}.{{ $.Values.installation.namespace }}.svc{{ $.Values.installation.clusterDomain }}:{{ $.Values.scheduler.service.port }} addr: {{template "dragonfly.scheduler.fullname" $ }}-{{$i}}.{{ template "dragonfly.namespace" $ }}.svc{{ $.Values.installation.clusterDomain }}:{{ $.Values.scheduler.service.port }}
{{- end }} {{- end }}
scheduleTimeout: 5m scheduleTimeout: 5m
host: host:

View File

@ -2,7 +2,7 @@ apiVersion: apps/v1
kind: DaemonSet kind: DaemonSet
metadata: metadata:
name: {{ template "dragonfly.dfdaemon.fullname" . }} name: {{ template "dragonfly.dfdaemon.fullname" . }}
namespace: {{ .Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" . }}
labels: labels:
app: {{ template "dragonfly.dfdaemon.fullname" . }} app: {{ template "dragonfly.dfdaemon.fullname" . }}
chart: {{ .Chart.Name }}-{{ .Chart.Version }} chart: {{ .Chart.Name }}-{{ .Chart.Version }}

View File

@ -9,7 +9,7 @@ metadata:
app.kubernetes.io/name: jaeger-all-in-one app.kubernetes.io/name: jaeger-all-in-one
app.kubernetes.io/part-of: jaeger app.kubernetes.io/part-of: jaeger
name: jaeger-all-in-one name: jaeger-all-in-one
namespace: {{ .Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" . }}
--- ---
@ -23,7 +23,7 @@ metadata:
app.kubernetes.io/name: jaeger-all-in-one-ui-configuration app.kubernetes.io/name: jaeger-all-in-one-ui-configuration
app.kubernetes.io/part-of: jaeger app.kubernetes.io/part-of: jaeger
name: jaeger-all-in-one-ui-configuration name: jaeger-all-in-one-ui-configuration
namespace: {{ .Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" . }}
data: data:
ui: |- ui: |-
{ {
@ -52,7 +52,7 @@ metadata:
app.kubernetes.io/name: jaeger-all-in-one-sampling-configuration app.kubernetes.io/name: jaeger-all-in-one-sampling-configuration
app.kubernetes.io/part-of: jaeger app.kubernetes.io/part-of: jaeger
name: jaeger-all-in-one-sampling-configuration name: jaeger-all-in-one-sampling-configuration
namespace: {{ .Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" . }}
data: data:
sampling: |- sampling: |-
{ {
@ -74,7 +74,7 @@ metadata:
app.kubernetes.io/name: jaeger-all-in-one-collector app.kubernetes.io/name: jaeger-all-in-one-collector
app.kubernetes.io/part-of: jaeger app.kubernetes.io/part-of: jaeger
name: jaeger-all-in-one-collector-headless name: jaeger-all-in-one-collector-headless
namespace: {{ .Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" . }}
spec: spec:
clusterIP: None clusterIP: None
ports: ports:
@ -109,7 +109,7 @@ metadata:
app.kubernetes.io/name: jaeger-all-in-one-collector app.kubernetes.io/name: jaeger-all-in-one-collector
app.kubernetes.io/part-of: jaeger app.kubernetes.io/part-of: jaeger
name: jaeger-all-in-one-collector name: jaeger-all-in-one-collector
namespace: {{ .Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" . }}
spec: spec:
ports: ports:
- name: http-zipkin - name: http-zipkin
@ -143,7 +143,7 @@ metadata:
app.kubernetes.io/name: jaeger-all-in-one-query app.kubernetes.io/name: jaeger-all-in-one-query
app.kubernetes.io/part-of: jaeger app.kubernetes.io/part-of: jaeger
name: jaeger-all-in-one-query name: jaeger-all-in-one-query
namespace: {{ .Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" . }}
spec: spec:
ports: ports:
- name: http-query - name: http-query
@ -168,7 +168,7 @@ metadata:
app.kubernetes.io/name: jaeger-all-in-one-agent app.kubernetes.io/name: jaeger-all-in-one-agent
app.kubernetes.io/part-of: jaeger app.kubernetes.io/part-of: jaeger
name: jaeger-all-in-one-agent name: jaeger-all-in-one-agent
namespace: {{ .Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" . }}
spec: spec:
clusterIP: None clusterIP: None
ports: ports:
@ -206,7 +206,7 @@ metadata:
app.kubernetes.io/name: jaeger-all-in-one app.kubernetes.io/name: jaeger-all-in-one
app.kubernetes.io/part-of: jaeger app.kubernetes.io/part-of: jaeger
name: jaeger-all-in-one name: jaeger-all-in-one
namespace: {{ .Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" . }}
spec: spec:
selector: selector:
matchLabels: matchLabels:
@ -294,4 +294,4 @@ spec:
path: sampling.json path: sampling.json
name: jaeger-all-in-one-sampling-configuration name: jaeger-all-in-one-sampling-configuration
name: jaeger-all-in-one-sampling-configuration-volume name: jaeger-all-in-one-sampling-configuration-volume
{{- end }} {{- end }}

View File

@ -1,6 +1,6 @@
{{- if ne $.Values.installation.namespace "kube-system" }} {{- if ne $.Release.Namespace $.Values.namespaceOverride }}
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
name: {{ $.Values.installation.namespace }} name: {{ template "dragonfly.namespace" $ }}
{{- end }} {{- end }}

View File

@ -2,7 +2,7 @@ apiVersion: v1
kind: ConfigMap kind: ConfigMap
metadata: metadata:
name: {{ template "dragonfly.scheduler.fullname" . }} name: {{ template "dragonfly.scheduler.fullname" . }}
namespace: {{ .Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" . }}
labels: labels:
app: {{ template "dragonfly.fullname" . }} app: {{ template "dragonfly.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
@ -27,5 +27,5 @@ apiVersion: v1
kind: ConfigMap kind: ConfigMap
metadata: metadata:
name: scheduler-static-cdn name: scheduler-static-cdn
namespace: {{ .Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" . }}
{{- end}} {{- end}}

View File

@ -7,8 +7,8 @@ metadata:
component: "{{ .Values.scheduler.name }}" component: "{{ .Values.scheduler.name }}"
heritage: {{ .Release.Service }} heritage: {{ .Release.Service }}
release: {{ .Release.Name }} release: {{ .Release.Name }}
namespace: {{ .Values.installation.namespace }}
name: {{ template "dragonfly.scheduler.fullname" . }} name: {{ template "dragonfly.scheduler.fullname" . }}
namespace: {{ template "dragonfly.namespace" . }}
{{- if .Values.scheduler.statefulsetAnnotations }} {{- if .Values.scheduler.statefulsetAnnotations }}
annotations: annotations:
{{ toYaml .Values.scheduler.statefulsetAnnotations | indent 4 }} {{ toYaml .Values.scheduler.statefulsetAnnotations | indent 4 }}
@ -77,4 +77,4 @@ spec:
- name: cdn-config - name: cdn-config
configMap: configMap:
name: scheduler-static-cdn name: scheduler-static-cdn
{{- end}} {{- end}}

View File

@ -4,7 +4,7 @@ apiVersion: v1
kind: Service kind: Service
metadata: metadata:
name: {{ template "dragonfly.scheduler.fullname" $ }}-{{$i}} name: {{ template "dragonfly.scheduler.fullname" $ }}-{{$i}}
namespace: {{ $.Values.installation.namespace }} namespace: {{ template "dragonfly.namespace" $ }}
labels: labels:
app: {{ template "dragonfly.name" $ }} app: {{ template "dragonfly.name" $ }}
chart: {{ $.Chart.Name }}-{{ $.Chart.Version }} chart: {{ $.Chart.Name }}-{{ $.Chart.Version }}
@ -44,4 +44,4 @@ spec:
{{- end }} {{- end }}
{{- end }} {{- end }}
--- ---
{{- end }} {{- end }}

View File

@ -1,9 +1,9 @@
nameOverride: "" nameOverride: ""
namespaceOverride: "dragonfly-system"
fullnameOverride: "" fullnameOverride: ""
# values for dragonfly installation # values for dragonfly installation
installation: installation:
namespace: dragonfly-system
clusterDomain: "" clusterDomain: ""
# enable an all in one jaeger for tracing every downloading event # enable an all in one jaeger for tracing every downloading event
# should not use in production environment # should not use in production environment

View File

@ -92,7 +92,6 @@ git clone https://github.com/dragonflyoss/Dragonfly2.git
### Install ### Install
```shell ```shell
kubectl create ns dragonfly-system
helm install --namespace dragonfly-system dragonfly Dragonfly2/deploy/charts/dragonfly helm install --namespace dragonfly-system dragonfly Dragonfly2/deploy/charts/dragonfly
``` ```
@ -109,4 +108,4 @@ kubectl -n dragonfly-system wait --for=condition=ready --all --timeout=10m pod
Following [Configure Runtime](#configure-runtime) to configure runtime. Following [Configure Runtime](#configure-runtime) to configure runtime.
Following [Using Dragonfly](#using-dragonfly) to use Dragonfly. Following [Using Dragonfly](#using-dragonfly) to use Dragonfly.
## Upgrade Guide ## Upgrade Guide