====================================================
CHART NAME: {{ .Chart.Name }}
VERSION: {{ .Chart.Name }}:{{ .Chart.AppVersion }}
====================================================
{{- if .Values.zookeeper.enabled }}
Registration Center：{{ .Values.zookeeper.name }}
VERSION: {{ .Values.zookeeper.name }}:{{ .Values.zookeeper.image.tag }}
{{- end }}
{{- if .Values.nacos.enabled }}
Registration Center：{{ .Values.nacos.name }}
VERSION: {{ .Values.nacos.name }}:{{ .Values.nacos.image.tag }}
{{- end }}
====================================================

   Get the Dubbo-admin URL to visit by running these commands in the same shell:
   {{- if contains "NodePort" .Values.service.type }}
     export NODE_PORT=$(kubectl get --namespace {{ include "dubbo-admin.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "dubbo-admin.fullname" . }})

     export NODE_IP=$(kubectl get nodes --namespace {{ include "dubbo-admin.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}")

     echo http://$NODE_IP:$NODE_PORT
   {{- else if contains "LoadBalancer" .Values.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 svc --namespace {{ include "dubbo-admin.namespace" . }} -w {{ include "dubbo-admin.fullname" . }}'

     export SERVICE_IP=$(kubectl get svc --namespace {{ include "dubbo-admin.namespace" . }} {{ include "dubbo-admin.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')

     http://$SERVICE_IP:{{ .Values.service.port -}}
   {{- else if contains "ClusterIP"  .Values.service.type }}

     export POD_NAME=$(kubectl get pods --namespace {{ include "dubbo-admin.namespace" . }} -l "app.kubernetes.io/name={{ include "dubbo-admin.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")

     kubectl --namespace {{ include "dubbo-admin.namespace" . }} port-forward $POD_NAME 38080
   {{- end }}

    Login Dubbo-admin default user and password
   **********************************************
          {{ .Chart.Name }}-username: root
          {{ .Chart.Name }}-password: root
   **********************************************


   {{ if .Values.ingress.enabled }}
   If you bind Dubbo-admin to 38080, please update values in values.yaml and reinstall:

   From outside the cluster, the server URL(s) are:
     {{- range .Values.ingress.hosts }}
     http://{{ . }}
     {{- end }}
   {{- else }}


{{- if not .Values.persistence.enabled }}
#################################################################################
######   WARNING: Persistence is disabled!!! You will lose your data when   #####
######            the Dubbo-admin pod is terminated.                        #####
#################################################################################
{{- end }}
{{- end }}