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 |
| ----------------------------------------- | ------------------------------------------------------------ | ----------------------------- |
| `installation.namespace` | namespace for dragonfly installation | `dragonfly-system` |
| `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`.
@ -29,7 +28,7 @@ Specify each parameter using the `--set key=value[,key=value]` argument to `helm
For example:
```shell
helm install dragonfly https://... --set installation.namespace=kube-system
helm install --namespace dragonfly-system dragonfly https://...
```
## Reference

View File

@ -1,30 +1,30 @@
1. [WIP] Get the scheduler URL by running these commands:
{{- 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_IP=$(kubectl get nodes --namespace {{ .Values.installation.namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
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 {{ template "dragonfly.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.scheduler.service.type }}
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" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Values.installation.namespace }} {{ include "dragonfly.scheduler.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
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 {{ template "dragonfly.namespace" . }} {{ include "dragonfly.scheduler.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.scheduler.service.port }}
{{- 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 CONTAINER_PORT=$(kubectl get pod --namespace {{ .Values.installation.namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
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 {{ 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"
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 }}
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.
3. Configure runtime to use dragonfly:
https://github.com/dragonflyoss/Dragonfly2/blob/main/docs/en/user-guide/quick-start.md
{{ if .Values.installation.jaeger }}
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_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)
kubectl --namespace {{ .Values.installation.namespace }} port-forward $JAEGER_QUERY_POD 16686:$JAEGER_QUERY_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 {{ 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 {{ 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"
{{- end }}
{{- end }}

View File

@ -6,6 +6,17 @@ Expand the name of the chart.
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- 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.
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
metadata:
name: {{ template "dragonfly.cdn.fullname" . }}
namespace: {{ .Values.installation.namespace }}
namespace: {{ template "dragonfly.namespace" . }}
labels:
app: {{ template "dragonfly.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"

View File

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

View File

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

View File

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

View File

@ -2,7 +2,7 @@ apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "dragonfly.dfdaemon.fullname" . }}
namespace: {{ .Values.installation.namespace }}
namespace: {{ template "dragonfly.namespace" . }}
labels:
app: {{ template "dragonfly.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
@ -17,14 +17,14 @@ data:
{{- if .Values.dfdaemon.config.jaeger }}
jaeger: {{ .Values.dfdaemon.config.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 }}
scheduler:
netAddrs:
{{- $count := .Values.scheduler.replicas | int}}
{{- range $i, $x := until $count }}
- 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 }}
scheduleTimeout: 5m
host:

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -92,7 +92,6 @@ git clone https://github.com/dragonflyoss/Dragonfly2.git
### Install
```shell
kubectl create ns dragonfly-system
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 [Using Dragonfly](#using-dragonfly) to use Dragonfly.
## Upgrade Guide
## Upgrade Guide