diff --git a/charts/README.md b/charts/README.md index 9b5505eb..0719ef62 100644 --- a/charts/README.md +++ b/charts/README.md @@ -1,20 +1,17 @@ -# Apache Dubbo Admin +# Apache Dubbo Admin for Kubernetes -A Helm chart for Dubbo Admin The ops and reference implementation for Apache Dubbo. +Apache Dubbo Admin is an Distributed application monitoring and management platform. + +![license](https://img.shields.io/badge/license-Apache--2.0-green.svg) +![Helm: v3](https://img.shields.io/static/v1?label=Helm&message=v3&color=informational&logo=helm) ## Prerequisites * Kubernetes v1.14+ * Helm v3+ -### Install - -```bash -helm install [RELEASE_NAME] dubbo-admin --namespace dubbo-system --create-namespace -``` - -### Uninstall +## Usage ```bash -helm delete [RELEASE_NAME] --namespace dubbo-system +helm install dubbo-admin charts/dubbo-admin ``` \ No newline at end of file diff --git a/charts/dubbo-admin/.helmignore b/charts/dubbo-admin/.helmignore index 8cade131..0e8a0eb3 100644 --- a/charts/dubbo-admin/.helmignore +++ b/charts/dubbo-admin/.helmignore @@ -14,10 +14,10 @@ *.swp *.bak *.tmp +*.orig *~ # Various IDEs -.vscode .project .idea/ *.tmproj -OWNERS +.vscode/ diff --git a/charts/dubbo-admin/Chart.yaml b/charts/dubbo-admin/Chart.yaml index 0e359111..cf65b0ff 100644 --- a/charts/dubbo-admin/Chart.yaml +++ b/charts/dubbo-admin/Chart.yaml @@ -1,13 +1,11 @@ apiVersion: v2 -appVersion: "" +appVersion: 3.2.11 name: dubbo-admin -description: The ops and reference implementation for Apache Dubbo -home: https://cn.dubbo.apache.org -kubeVersion: '>=1.20.0-0' +description: Distributed application monitoring and management platform. +home: https://dubbo.apache.org +kubeVersion: '>=1.28.0-0' maintainers: - - email: dev@dubbo.apache.org - name: dubbo -sources: - - https://github.com/apache/dubbo + - name: dubbo + email: dev@dubbo.apache.org type: application version: 0.5.0 \ No newline at end of file diff --git a/charts/dubbo-admin/README.md b/charts/dubbo-admin/README.md index 070f9b32..6082ad8e 100644 --- a/charts/dubbo-admin/README.md +++ b/charts/dubbo-admin/README.md @@ -1,14 +1,2 @@ -## 1. Project download to local -``` -git clone https://github.com/apache/dubbo-admin.git -``` +We no longer provide specific `values.yaml` configuration information. For more detailed content, please refer to the official website. -## 2. Switch project directory -``` -cd dubbo-admin/deploy/charts/dubbo-admin -``` - -## 3. Install dubbo-admin -``` -helm install dubbo-admin -f values.yaml . -``` diff --git a/charts/dubbo-admin/templates/NOTES.txt b/charts/dubbo-admin/templates/NOTES.txt new file mode 100644 index 00000000..dc306879 --- /dev/null +++ b/charts/dubbo-admin/templates/NOTES.txt @@ -0,0 +1,41 @@ +CHART NAME: {{ .Chart.Name }} +CHART VERSION: {{ .Chart.Version }} +APP VERSION: {{ .Chart.AppVersion }} +===================================== +{{- if contains "NodePort" .Values.service.type }} +You can execute the following command: + +export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "dubbo-admin.name" . }}) +export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + + echo http://$NODE_IP:$NODE_PORT + +{{- else if contains "LoadBalancer" .Values.service.type }} +You can execute the following command: + 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 {{ .Release.Namespace }} svc -w {{ include "dubbo-admin.name" . }}' + + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "dubbo-admin.name" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + + echo http://$SERVICE_IP:{{ .Values.service.port }} + +{{- else if contains "ClusterIP" .Values.service.type }} +You can execute the following command: + + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "dubbo-admin.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + + echo "Visit http://127.0.0.1:8080 to use your application" + + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} + +{{- if not .Values.persistence.enabled }} + +==================================================== + Not enabled for persistent storage. + If you have important data, please enable it. +==================================================== +{{- end }} + +For more details, please visit https://dubbo.apache.org. diff --git a/charts/dubbo-admin/templates/deploy.yaml b/charts/dubbo-admin/templates/deploy.yaml index ffa01573..9ca7b3ca 100644 --- a/charts/dubbo-admin/templates/deploy.yaml +++ b/charts/dubbo-admin/templates/deploy.yaml @@ -62,7 +62,7 @@ spec: successThreshold: {{ .Values.startupProbe.successThreshold }} failureThreshold: {{ .Values.startupProbe.failureThreshold }} resources: - {{- toYaml .Values.resources | nindent 12 }} + {{- toYaml .Values.resources | nindent 12 }} volumes: - name: application-properties configMap: diff --git a/charts/dubbo-admin/templates/pdb.yaml b/charts/dubbo-admin/templates/pdb.yaml index 14efdd19..7a3fdd51 100644 --- a/charts/dubbo-admin/templates/pdb.yaml +++ b/charts/dubbo-admin/templates/pdb.yaml @@ -13,5 +13,5 @@ spec: {{- end }} selector: matchLabels: - {{- include "dubbo-admin.matchLabels" . | nindent 6 }} + {{- include "dubbo-admin.matchLabels" . | nindent 6 }} {{- end -}} diff --git a/charts/dubbo-admin/templates/rbac.yaml b/charts/dubbo-admin/templates/rbac.yaml index 65f1ff38..d6c4a1bf 100644 --- a/charts/dubbo-admin/templates/rbac.yaml +++ b/charts/dubbo-admin/templates/rbac.yaml @@ -13,15 +13,15 @@ metadata: name: {{ include "dubbo-admin.name" . }} namespace: {{ include "dubbo-admin.namespace" . }} rules: - - apiGroups: - - "" - resources: - - pods - - deployments - verbs: - - get - - watch - - list +- apiGroups: + - "" + resources: + - pods + - deployments + verbs: + - get + - watch + - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding @@ -42,24 +42,24 @@ kind: ClusterRole metadata: name: {{ include "dubbo-admin.name" . }}-clusterrole rules: - - apiGroups: - - "" - resources: - - pods - - deployments - verbs: - - get - - watch - - list +- apiGroups: + - "" + resources: + - pods + - deployments + verbs: + - get + - watch + - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: {{ include "dubbo-admin.name" . }}-clusterrolebinding subjects: - - kind: ServiceAccount - name: dubbo-admin - namespace: default +- kind: ServiceAccount + name: dubbo-admin + namespace: default roleRef: kind: ClusterRole name: {{ include "dubbo-admin.name" . }}-clusterrole diff --git a/charts/dubbo-admin/values.yaml b/charts/dubbo-admin/values.yaml index c229a466..7396f213 100644 --- a/charts/dubbo-admin/values.yaml +++ b/charts/dubbo-admin/values.yaml @@ -1,76 +1,120 @@ +# Used to override the default deployment name. nameOverride: ~ - +# Used to override the default namespace. namespaceOverride: ~ - +# Used to specify node labels for pod scheduling. nodeSelector: ~ - +# Used to define affinity rules for pods. affinity: ~ - +# Used to define toleration rules for pods. tolerations: ~ - +# Defines the number of replicas for pods. replicas: 1 - +# Used to specify secrets needed for pulling images. imagePullSecrets: ~ image: + # Docker registry where the image is located. registry: docker.io + # Repository containing the image. repository: apache/dubbo-admin + # Tag of the image tag: 0.5.0 + # Pull policy for the image: IfNotPresent, Always, Never. pullPolicy: IfNotPresent serviceAccount: + # Enable or disable the creation of a service account. enabled: false + # Labels to be applied to the service account. labels: {} + # Annotations to be applied to the service account. annotations: {} rbac: + # Enable or disable Role-Based Access Control. enabled: false psp: + # Enable or disable the use of Pod Security Policies. enabled: false + # Labels to be applied to Pod Security Policies. labels: {} + # Annotations to be applied to Pod Security Policies. annotations: {} pdb: + # Enable or disable Pod Disruption Budget. enabled: false + # Labels to be applied to the Pod Disruption Budget. labels: {} + # Annotations to be applied to the Pod Disruption Budget. annotations: {} + # Minimum number of pods that must remain available. minAvailable: 1 + # Maximum number of unavailable pods during disruptions. maxUnavailable: 1 networkPolicy: + # Enable or disable the use of Network Policies. enabled: false readinessProbe: + # Configuration for HTTP GET probe. httpGet: + # Path to perform HTTP GET request. path: / + # Port on which to perform the HTTP GET request. port: 8080 + # Number of seconds after the container has started before readiness probes are initiated. initialDelaySeconds: 60 + # Number of seconds after which the probe times out. timeoutSeconds: 30 + # How often (in seconds) to perform the probe. periodSeconds: 10 + # Minimum consecutive successes for the probe to be considered successful after it has succeeded at least once. successThreshold: 1 + # Minimum consecutive failures for the probe to be considered failed after it has failed at least once. failureThreshold: 3 + # Timeout for executing the probe command. probeCommandTimeout: 1 livenessProbe: + # Configuration for HTTP GET probe. httpGet: + # Path to perform HTTP GET request. path: / + # Port on which to perform the HTTP GET request. port: 8080 + # Number of seconds after the container has started before liveness probes are initiated. initialDelaySeconds: 60 + # Number of seconds after which the probe times out. timeoutSeconds: 30 + # How often (in seconds) to perform the probe. periodSeconds: 10 + # Minimum consecutive successes for the probe to be considered successful after it has succeeded at least once. successThreshold: 1 + # Minimum consecutive failures for the probe to be considered failed after it has failed at least once. failureThreshold: 3 + # Timeout for executing the probe command. probeCommandTimeout: 1 startupProbe: + # Configuration for HTTP GET probe. httpGet: + # Path to perform HTTP GET request. path: / + # Port on which to perform the HTTP GET request. port: 8080 + # Number of seconds after the container has started before startup probes are initiated. initialDelaySeconds: 60 + # Number of seconds after which the probe times out. timeoutSeconds: 30 + # How often (in seconds) to perform the probe. periodSeconds: 10 + # Minimum consecutive successes for the probe to be considered successful after it has succeeded at least once. successThreshold: 1 + # Minimum consecutive failures for the probe to be considered failed after it has failed at least once. failureThreshold: 3 resources: {} @@ -82,87 +126,149 @@ resources: {} # memory: 128Mi service: + # Labels to be applied to the service. labels: {} + # Annotations to be applied to the service. annotations: {} + # Type of service (ClusterIP, NodePort, LoadBalancer, ExternalName). type: ClusterIP + # Cluster IP address assigned to the service. clusterIP: "" + # External IP addresses for the service. externalIPs: "" + # LoadBalancer IP address for the service. loadBalancerIP: "" + # IP ranges allowed to access the load balancer. loadBalancerSourceRanges: "" + # Node port number for the service (if type is NodePort). nodePort: "" + # Port on which the service is exposed. port: 38080 + # Target port to forward traffic to inside the pod. targetPort: http + # Port that the container listens on. containerPort: 8080 + # Protocol used for the service (TCP, UDP, SCTP). protocol: TCP + # Application protocol name. appProtocol: "" persistence: + # Enable or disable persistence enabled: false + # Labels to be applied to the persistence volume claim labels: {} + # Annotations to be applied to the persistence volume claim annotations: {} + # Storage class to use for the persistent volume claim storageClass: "" + # Access modes for the persistent volume claim (e.g., ReadWriteOnce, ReadOnlyMany, ReadWriteMany) accessModes: ReadWriteOnce + # Size of the persistent volume claim size: 10Gi + # Name of an existing PersistentVolumeClaim to use ClaimName: {} + # Configuration for emptyDir volume if used emptyDir: {} user: + # Default username for the application name: root + # Default password for the application password: root dubbo: + # Name of the Dubbo instance name: dubbo-admin + # Logger configuration for Dubbo logger: slf4j check: + # Session timeout in milliseconds sessionTimeoutMilli: 3600000 + # Token timeout in milliseconds tokenTimeoutMilli: 3600000 + # Secret used for signing (leave as ~ for no value) signSecret: ~ serverCompression: + # Enable or disable server compression enabled: true + # Mime types to be compressed mimeTypes: text/css,text/javascript,application/javascript + # Minimum response size (in bytes) to trigger compression minResponseSize: 10240 zookeeper: + # Enable or disable Zookeeper enabled: true + # Address of the Zookeeper instance address: zookeeper://zookeeper:2181 nacos: + # Enable or disable Nacos enabled: false + # Address of the Nacos instance address: nacos://nacos:8848 + # Nacos group group: DEFAULT_GROUP + # Nacos namespace namespace: public apollo: + # Enable or disable Apollo enabled: false + # Address of the Apollo instance address: apollo://apollo:8070 + # Token for authentication with Apollo (leave as ~ for no value) token: ~ + # Application ID registered in Apollo appId: test + # Environment in Apollo env: dev + # Cluster in Apollo cluster: default + # Namespace in Apollo namespace: dubbo mysql: + # Enable or disable MySQL enabled: false + # MySQL driver class name driverClassName: com.mysql.jdbc.Driver + # Address of the MySQL instance address: mysql://mysql:3306/dubbo-admin + # Encoding used by MySQL encode: utf8 + # Connection timeout in milliseconds connectTimeout: 1000 + # Socket timeout in milliseconds socketTimeout: 10000 + # Whether to automatically reconnect to MySQL on failure autoReconnect: true + # MySQL username username: sa + # MySQL password (leave as ~ for no value) password: ~ h2: + # Enable or disable H2 database enabled: true + # Mode of the H2 database (e.g., MYSQL, ORACLE) mode: MYSQL + # Location of H2 memory database mem: ~/dubbo-admin + # H2 username username: sa + # H2 password (leave empty if not needed) password: mybatisPlus: + # Global configuration for MyBatis Plus global: db: + # ID type configuration for MyBatis Plus (e.g., auto, input, none) idType: none + +