Admin Overall Architecture and Installation Steps

Reviewing the overall architecture of the Dubbo service governance system, Admin is a core component in the service governance control plane, responsible for service governance and visualization display for microservice clusters.

Admin Deployment Architecture

admin-core-components.png

Overall, the Admin deployment architecture is divided into the following parts:

  • The Admin main process, including service discovery metadata management, a visualization console, security authentication policy control, and other customized service governance capabilities.
  • Strong dependency components, including Mysql database, registration/configuration/metadata centers (which can be Kubernetes, Nacos, Zookeeper, etc.)
  • Optional dependency components, including Prometheus, Grafana, Zipkin, etc.

Install Admin

Dubboctl Installation

Download

Currently, Dubboctl is not formally released and can be tried as follows. Pull Dubbo Admin and compile Dubboctl

  1. git clone https://github.com/apache/dubbo-admin.git
  2. cd dubbo-admin/cmd/dubboctl
  3. go build -o dubboctl .

Place dubboctl in an executable path

  1. ln -s dubbo-admin/cmd/dubboctl/dubboctl /usr/local/bin/dubboctl

Install

The installation process will sequentially:

  1. Overlay the user-defined configuration profile and setting parameters onto the default profile to obtain the final profile
  1. # default profile
  2. apiVersion: dubbo.apache.org/v1alpha1
  3. kind: DubboOperator
  4. metadata:
  5. namespace: dubbo-system
  6. spec:
  7. profile: default
  8. namespace: dubbo-system
  9. componentsMeta:
  10. admin:
  11. enabled: true
  12. grafana:
  13. enabled: true
  14. repoURL: https://grafana.github.io/helm-charts
  15. version: 6.52.4
  16. nacos:
  17. enabled: true
  18. zookeeper:
  19. enabled: true
  20. repoURL: https://charts.bitnami.com/bitnami
  21. version: 11.1.6
  22. prometheus:
  23. enabled: true
  24. repoURL: https://prometheus-community.github.io/helm-charts
  25. version: 20.0.2
  26. skywalking:
  27. enabled: true
  28. repoURL: https://apache.jfrog.io/artifactory/skywalking-helm
  29. version: 4.3.0
  30. zipkin:
  31. enabled: true
  32. repoURL: https://openzipkin.github.io/zipkin
  33. version: 0.3.0

It is recommended to use a custom profile for configuration, enabling or disabling components in componentsMeta and configuring each component under components. The configuration values of each component are the values of helm charts. For specific component configurations, please refer to: Grafana: https://github.com/grafana/helm-charts/blob/main/charts/grafana/README.md Zookeeper: https://github.com/bitnami/charts/tree/main/bitnami/zookeeper/#installing-the-chart Prometheus: https://github.com/prometheus-community/helm-charts/tree/main/charts Skywalking: https://github.com/apache/skywalking-kubernetes/blob/master/chart/skywalking/README.md Zipkin: https://github.com/openzipkin/zipkin-helm

  1. # customization profile
  2. apiVersion: dubbo.apache.org/v1alpha1
  3. kind: DubboOperator
  4. metadata:
  5. namespace: dubbo-system
  6. spec:
  7. profile: default
  8. namespace: dubbo-system
  9. componentsMeta:
  10. admin:
  11. enabled: true
  12. grafana:
  13. enabled: true
  14. version: 6.31.0
  15. prometheus:
  16. enabled: false
  17. components:
  18. admin:
  19. replicas: 3
  20. grafana:
  21. testFramework:
  22. enabled: false
  1. Pull the required components based on the profile and generate the manifest. Currently, Admin and Nacos are local, no need to pull; Grafana, Zookeeper, Prometheus, Skywalking, Zipkin will pull from the official chart repository, specific addresses and versions can be seen in the above default profile
  2. Apply the manifest to the k8s cluster
  1. dubboctl manifest install # Install using default manifests
  2. # or
  3. dubboctl manifest generate | kubectl apply -f -
  1. dubboctl install --set spec.components.admin.replicas=2 # Set component configuration
  1. dubboctl install --set spec.componentsMeta.admin.enabled=true, spec.componentsMeta.grafana.enabled=false
  2. # Enable or disable components
  1. dubboctl install --set spec.componentsMeta.grafana.repoURL=https://grafana.github.io/helm-charts, spec.componentsMeta.grafana.version=6.31.0
  2. # Set repository address and version for remotely pulled components

Check installation effect

  1. kubectl get pod -n dubbo-system

Open Admin Console

  1. kubectl port-forward svc/dubbo-admin -n dubbo-system 38080:38080

Open the browser and visit: http://127.0.0.1:38080/

Helm Installation

Get the charts

  1. helm repo add https://charts.bitnami.com/bitnami
  2. helm repo add https://prometheus-community.github.io/helm-charts
  3. helm repo add https://grafana.github.io/helm-charts
  4. helm repo add https://apache.jfrog.io/artifactory/skywalking-helm
  5. helm repo add https://openzipkin.github.io/zipkin

Install zookeeper

  1. helm install zookeeper bitnami/zookeeper -n dubbo-system

Install prometheus

  1. helm install prometheus prometheus-community/prometheus -n dubbo-system

Install grafana

  1. helm install grafana grafana/grafana -n dubbo-system

Install skywalking

  1. helm install skywalking skywalking/skywalking -n dubbo-system

Install zipkin

  1. helm install zipkin openzipkin/zipkin -n dubbo-system

Check installation status

  1. helm ls -n dubbo-system ; kubectl get pods -n dubbo-system --output wide

VM Installation

Download

Download the Dubbo Admin release version

  1. curl -L https://dubbo.apache.org/installer.sh | VERSION=0.1.0 sh -
  2. # Admin needs to organize the release version

Place dubboctl in an executable path

  1. ln -s dubbo-admin-0.1.0/bin/dubbo-admin /usr/local/bin/dubbo-admin

Run

  1. dubbo-admin run -f override-configuration.yml

Configuration Manual (Configuration)

Configuration used to control the behavior of dubbo-admin

  1. # Environment type. Available values are: "kubernetes" or "universal"
  2. environment: universal # ENV: DUBBO_ENVIRONMENT
  3. # Mode in which Dubbo CP is running. Available values are: "standalone", "global", "zone"
  4. mode: standalone # ENV: DUBBO_MODE
  5. # Resource Store configuration
  6. store:
  7. # Type of Store used in the Control Plane. Available values are: "kubernetes", "postgres" or "memory"
  8. type: memory # ENV: DUBBO_STORE_TYPE
  9. # Kubernetes Store configuration (used when store.type=kubernetes)
  10. kubernetes:
  11. # Namespace where Control Plane is installed to.
  12. systemNamespace: dubbo-system # ENV: DUBBO_STORE_KUBERNETES_SYSTEM_NAMESPACE
  13. # Postgres Store configuration (used when store.type=postgres)
  14. mysql:
  15. # Host of the Postgres DB
  16. host: 127.0.0.1 # ENV: DUBBO_STORE_POSTGRES_HOST
  17. # Port of the Postgres DB
  18. port: 15432 # ENV: DUBBO_STORE_POSTGRES_PORT
  19. # User of the Postgres DB
  20. user: dubbo # ENV: DUBBO_STORE_POSTGRES_USER
  21. # Password of the Postgres DB
  22. password: dubbo # ENV: DUBBO_STORE_POSTGRES_PASSWORD
  23. # Database name of the Postgres DB
  24. dbName: dubbo # ENV: DUBBO_STORE_POSTGRES_DB_NAME
  25. # Connection Timeout to the DB in seconds
  26. connectionTimeout: 5 # ENV: DUBBO_STORE_POSTGRES_CONNECTION_TIMEOUT
  27. # Maximum number of open connections to the database
  28. # `0` value means number of open connections is unlimited
  29. maxOpenConnections: 50 # ENV: DUBBO_STORE_POSTGRES_MAX_OPEN_CONNECTIONS
  30. # Maximum number of connections in the idle connection pool
  31. # <0 value means no idle connections and 0 means default max idle connections
  32. maxIdleConnections: 50 # ENV: DUBBO_STORE_POSTGRES_MAX_IDLE_CONNECTIONS
  33. # TLS settings
  34. tls:
  35. # Mode of TLS connection. Available values are: "disable", "verifyNone", "verifyCa", "verifyFull"
  36. mode: disable # ENV: DUBBO_STORE_POSTGRES_TLS_MODE
  37. # Path to TLS Certificate of the client. Used in verifyCa and verifyFull modes
  38. certPath: # ENV: DUBBO_STORE_POSTGRES_TLS_CERT_PATH
  39. # Path to TLS Key of the client. Used in verifyCa and verifyFull modes
  40. keyPath: # ENV: DUBBO_STORE_POSTGRES_TLS_KEY_PATH
  41. # Path to the root certificate. Used in verifyCa and verifyFull modes.
  42. caPath: # ENV: DUBBO_STORE_POSTGRES_TLS_ROOT_CERT_PATH
  43. # MinReconnectInterval controls the duration to wait before trying to
  44. # re-establish the database connection after connection loss. After each
  45. # consecutive failure this interval is doubled, until MaxReconnectInterval
  46. # is reached. Successfully completing the connection establishment procedure
  47. # resets the interval back to MinReconnectInterval.
  48. minReconnectInterval: "10s" # ENV: DUBBO_STORE_POSTGRES_MIN_RECONNECT_INTERVAL
  49. # MaxReconnectInterval controls the maximum possible duration to wait before trying
  50. # to re-establish the database connection after connection loss.
  51. maxReconnectInterval: "60s" # ENV: DUBBO_STORE_POSTGRES_MAX_RECONNECT_INTERVAL
  52. server:
  53. port: 38080
  54. registry:
  55. address: xxx
  56. metadata-center:
  57. address: xxx
  58. config-center:
  59. address: xxx
  60. external-services:
  61. prometheus:
  62. # Prometheus service name is "metrics" and is in the "telemetry" namespace
  63. # http://prometheus.<dubbo_namespace_name>:9090
  64. url: "http://metrics.telemetry:9090/"
  65. tracing:
  66. # Enabled by default. Kiali will anyway fallback to disabled if
  67. # Jaeger is unreachable.
  68. enabled: true
  69. # Jaeger service name is "tracing" and is in the "telemetry" namespace.
  70. # Make sure the URL you provide corresponds to the non-GRPC enabled endpoint
  71. # if you set "use_grpc" to false.
  72. in_cluster_url: 'http://tracing.telemetry:16685/jaeger'
  73. use_grpc: true
  74. # Public facing URL of Jaeger
  75. url: 'http://my-jaeger-host/jaeger'
  76. grafana:
  77. enabled: true
  78. # Grafana service name is "grafana" and is in the "telemetry" namespace.
  79. in_cluster_url: 'http://grafana.telemetry:3000/'
  80. # Public facing URL of Grafana
  81. url: 'http://my-ingress-host/grafana'
  82. # More configurations

Open Admin Console

Open the browser and visit: http://127.0.0.1:38080/

Feedback

Was this page helpful?

Yes No

Last modified September 30, 2024: Update & Translate Overview Docs (#3040) (d37ebceaea7)