This is an automated email from the ASF dual-hosted git repository.
wu-sheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking-helm.git
The following commit(s) were added to refs/heads/master by this push:
new da0e267 Replace booster-ui with Horizon UI (#187)
da0e267 is described below
commit da0e267f877b9b8e5f7728ae4ea7dc7723a2a073
Author: 吴晟 Wu Sheng <[email protected]>
AuthorDate: Tue May 19 10:51:04 2026 +0800
Replace booster-ui with Horizon UI (#187)
---
README.md | 101 +++++++++++++++++++-
chart/operator/templates/crds.yaml | 35 ++++++-
chart/skywalking/README.md | 24 +++--
chart/skywalking/templates/NOTES.txt | 22 +++++
chart/skywalking/templates/ui-configmap.yaml | 46 +++++++++
chart/skywalking/templates/ui-deployment.yaml | 61 +++++++++---
chart/skywalking/templates/ui-ingress.yaml | 2 +-
chart/skywalking/templates/ui-pvc.yaml | 44 +++++++++
chart/skywalking/templates/ui-svc.yaml | 2 +
chart/skywalking/values.yaml | 118 ++++++++++++++++++++++--
test/e2e/e2e-banyandb-cluster.yaml | 115 ++++++++++++-----------
test/e2e/e2e-banyandb-standalone.yaml | 115 ++++++++++++-----------
test/e2e/e2e-elasticsearch.yaml | 115 ++++++++++++-----------
test/e2e/env | 14 ++-
test/e2e/swck/oap-agent-adapter-hpa.yaml | 4 +-
test/e2e/swck/oap-agent-banyandb.yaml | 4 +-
test/e2e/swck/oap-ui-agent-elasticsearch.yaml | 4 +-
test/e2e/swck/oap-ui-agent-oapserverconfig.yaml | 4 +-
test/e2e/swck/oap-ui-agent-satellite.yaml | 4 +-
test/e2e/values.yaml | 18 ++++
20 files changed, 644 insertions(+), 208 deletions(-)
diff --git a/README.md b/README.md
index ea4e4f3..7f051e8 100644
--- a/README.md
+++ b/README.md
@@ -19,12 +19,103 @@ There are required values that you must set explicitly
when deploying SkyWalking
| ---- | ----------- | ------- |
| `oap.image.tag` | the OAP docker image tag | `10.4.0` |
| `oap.storageType` | the storage type of the OAP | `elasticsearch`,
`postgresql`, `banyandb`, etc. |
-| `ui.image.tag` | the UI docker image tag | `10.4.0` |
+| `ui.image.tag` | the Horizon UI docker image tag | `horizon-1.0.0` |
You can set these required values via command line (e.g. `--set
oap.image.tag=10.4.0 --set oap.storageType=elasticsearch`),
or edit them in a separate file(e.g.
[`values.yaml`](chart/skywalking/values.yaml),
[`values-my-es.yaml`](chart/skywalking/values-my-es.yaml))
and use `-f <filename>` or `--values=<filename>` to set them.
+## Web UI (Horizon UI)
+
+The web UI shipped by this chart is [Apache SkyWalking Horizon
UI](https://github.com/apache/skywalking-horizon-ui),
+which replaces the legacy `skywalking-booster-ui`. Compared to booster-ui:
+
+- The container bundles a Node-based BFF in front of the SPA. It connects to
OAP on **two** ports: the GraphQL query port (`12800`, `oap.ports.rest`) and
the admin REST port (`17128`, `oap.ports.admin`, available on OAP 10.5+).
+- The container exposes **port 8081** (was 8080) and **does not pass-through
`/graphql`** to OAP. Callers that previously talked to the UI's GraphQL
endpoint (e.g. `swctl --base-url=http://<ui>/graphql`) must now talk to the OAP
service directly (`http://<oap>:12800/graphql`).
+- The BFF requires **authentication**. There is no built-in `admin/admin`
fallback — `ui.config.auth.local.users` ships **empty**, and the BFF refuses to
start until you provide at least one user.
+- The full `horizon.yaml` schema (server, oap, auth, rbac, session, audit,
debugLog) is owned upstream:
+ - Canonical commented example:
[horizon.example.yaml](https://github.com/apache/skywalking-horizon-ui/blob/main/horizon.example.yaml)
(also shipped inside the image at `/app/horizon.example.yaml`)
+ - Per-section reference:
[docs/setup/horizon-yaml.md](https://github.com/apache/skywalking-horizon-ui/blob/main/docs/setup/horizon-yaml.md)
+
+ Anything you set under `ui.config:` in your Helm values is rendered verbatim
into `horizon.yaml`, so the upstream docs apply 1:1.
+- Release images are published to Docker Hub as
`apache/skywalking-ui:horizon-x.y.z`. Pre-release / dev images live at
`ghcr.io/apache/skywalking-horizon-ui` (tags: SHA, `vX.Y.Z`, `main`).
+
+### Quick demo install (publicly-known credentials)
+
+For a first-run / trusted-network demo, paste the snippet below into a values
file. It seeds two users — **`admin/admin`** (admin role) and
**`skywalking/skywalking`** (viewer + maintainer) — using `argon2id` hashes of
those plaintext passwords.
+
+> ⚠ The hashes below are publicly known in this repo. Use only on trusted
networks; rotate before exposing the UI externally.
+
+```yaml
+# demo-values.yaml
+ui:
+ config:
+ auth:
+ backend: local
+ local:
+ users:
+ - username: admin # password: admin
+ passwordHash:
"$argon2id$v=19$m=65536,t=3,p=4$eemqy1r72oSXR58y8VpRqw$Bn/dULrmJTHEi3263KfgWDEwQmUsqNLi3xwyv/DekHM"
+ roles: [admin]
+ - username: skywalking # password: skywalking
+ passwordHash:
"$argon2id$v=19$m=65536,t=3,p=4$Zqj8HhQDqm8d5c2MipHYZw$BsaCnu4bdd4uadIldx3wwYLsdo47Thxb7Lv1MXpWG2Q"
+ roles: [viewer, maintainer]
+```
+
+```shell
+helm install "${SKYWALKING_RELEASE_NAME}" \
+ oci://registry-1.docker.io/apache/skywalking-helm \
+ --version "${SKYWALKING_RELEASE_VERSION}" \
+ -n "${SKYWALKING_RELEASE_NAMESPACE}" \
+ --set oap.image.tag=<release> \
+ --set oap.storageType=elasticsearch \
+ --set ui.image.tag=horizon-<release> \
+ -f demo-values.yaml
+```
+
+Then port-forward and log in as `admin/admin`:
+
+```shell
+kubectl port-forward -n "${SKYWALKING_RELEASE_NAMESPACE}" \
+ svc/${SKYWALKING_RELEASE_NAME}-skywalking-helm-ui 8080:80
+open http://127.0.0.1:8080
+```
+
+### Production: hash via Kubernetes Secret
+
+For anything beyond a demo, swap the publicly-known hash for one you generated
yourself and feed it through a Secret + `${VAR}` interpolation:
+
+```shell
+HASH=$(cd skywalking-horizon-ui && pnpm --filter bff cli:hash
'your-strong-password' | tail -1)
+
+kubectl create secret generic horizon-admin \
+ -n "${SKYWALKING_RELEASE_NAMESPACE}" \
+ --from-literal=HORIZON_ADMIN_HASH="$HASH"
+
+cat > my-values.yaml <<'EOF'
+ui:
+ envFromSecret: horizon-admin
+ config:
+ auth:
+ local:
+ users:
+ - username: admin
+ passwordHash: "${HORIZON_ADMIN_HASH}"
+ roles: [admin]
+EOF
+
+helm install "${SKYWALKING_RELEASE_NAME}" \
+ oci://registry-1.docker.io/apache/skywalking-helm \
+ --version "${SKYWALKING_RELEASE_VERSION}" \
+ -n "${SKYWALKING_RELEASE_NAMESPACE}" \
+ --set oap.image.tag=<release> \
+ --set oap.storageType=elasticsearch \
+ --set ui.image.tag=horizon-<release> \
+ -f my-values.yaml
+```
+
+Full `horizon.yaml` reference:
https://github.com/apache/skywalking-horizon-ui/blob/main/docs/setup/horizon-yaml.md
+
# Install
Let's set some variables for convenient use later.
@@ -44,7 +135,7 @@ helm install "${SKYWALKING_RELEASE_NAME}" \
-n "${SKYWALKING_RELEASE_NAMESPACE}" \
--set oap.image.tag=10.4.0 \
--set oap.storageType=elasticsearch \
- --set ui.image.tag=10.4.0
+ --set ui.image.tag=horizon-1.0.0
```
To use BanyanDB as storage solution, you can try
@@ -56,7 +147,7 @@ helm install "${SKYWALKING_RELEASE_NAME}" \
-n "${SKYWALKING_RELEASE_NAMESPACE}" \
--set oap.image.tag=10.4.0 \
--set oap.storageType=banyandb \
- --set ui.image.tag=10.4.0 \
+ --set ui.image.tag=horizon-1.0.0 \
--set elasticsearch.enabled=false \
--set banyandb.enabled=true \
--set banyandb.image.tag=0.10.1
@@ -135,7 +226,7 @@ here are some examples.
helm install "${SKYWALKING_RELEASE_NAME}" ${REPO}/skywalking -n
"${SKYWALKING_RELEASE_NAMESPACE}" \
--set oap.image.tag=10.4.0 \
--set oap.storageType=elasticsearch \
- --set ui.image.tag=10.4.0 \
+ --set ui.image.tag=horizon-1.0.0 \
--set eck-operator.installCRDs=false
```
@@ -179,7 +270,7 @@ helm -n istio-system install skywalking \
-n "${SKYWALKING_RELEASE_NAMESPACE}" \
--set oap.image.tag=10.4.0 \
--set oap.storageType=elasticsearch \
- --set ui.image.tag=10.4.0
+ --set ui.image.tag=horizon-1.0.0
```
## Install development version using source codes
diff --git a/chart/operator/templates/crds.yaml
b/chart/operator/templates/crds.yaml
index 7c613f1..8431b64 100644
--- a/chart/operator/templates/crds.yaml
+++ b/chart/operator/templates/crds.yaml
@@ -3424,7 +3424,7 @@ kind: CustomResourceDefinition
metadata:
annotations:
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include
"operator.fullname" . }}-serving-cert
- controller-gen.kubebuilder.io/version: v0.14.0
+ controller-gen.kubebuilder.io/version: v0.19.0
name: uis.operator.skywalking.apache.org
spec:
conversion:
@@ -3501,7 +3501,26 @@ spec:
description: UISpec defines the desired state of UI
properties:
OAPServerAddress:
- description: Backend OAP server address
+ description: |-
+ Backend OAP server address.
+ For kind=booster, exported as the SW_OAP_ADDRESS env var.
+ For kind=horizon, used as oap.queryUrl in the generated
horizon.yaml.
+ type: string
+ OAPServerAdminAddress:
+ description: |-
+ OAPServerAdminAddress is the OAP admin host (port 17128 by
default; runtime-rule,
+ dsl-debug, inspect, status). Only used when kind=horizon. If
unset, defaults to
+ http://<name>-oap.<namespace>:17128.
+ type: string
+ OAPServerZipkinAddress:
+ description: |-
+ OAPServerZipkinAddress is the OAP Zipkin REST host. Only
used when kind=horizon.
+ If unset, defaults to <OAPServerAddress>/zipkin.
+ type: string
+ config:
+ description: |-
+ Config is a raw horizon.yaml that, when set, fully replaces
the operator-generated
+ config mounted into the Horizon UI container. Only used when
kind=horizon.
type: string
image:
description: Image is the UI Docker image to deploy.
@@ -3510,6 +3529,16 @@ spec:
description: Count is the number of UI pods
format: int32
type: integer
+ kind:
+ default: horizon
+ description: |-
+ Kind selects which SkyWalking web UI to deploy.
+ "horizon" deploys the next-generation Horizon UI (default).
+ "booster" deploys the legacy Booster UI image.
+ enum:
+ - horizon
+ - booster
+ type: string
service:
description: Service relevant settings
properties:
@@ -3677,4 +3706,4 @@ spec:
storage: true
subresources:
status: {}
-{{- end }}
\ No newline at end of file
+{{- end }}
diff --git a/chart/skywalking/README.md b/chart/skywalking/README.md
index 418b05c..f2b8996 100644
--- a/chart/skywalking/README.md
+++ b/chart/skywalking/README.md
@@ -55,7 +55,8 @@ The following table lists the configurable parameters of the
Skywalking chart an
| `oap.image.tag` | OAP container image tag
| `6.1.0`
|
| `oap.image.pullPolicy` | OAP container image pull policy
| `IfNotPresent`
|
| `oap.ports.grpc` | OAP grpc port for tracing or metric
| `11800`
|
-| `oap.ports.rest` | OAP http port for Web UI
| `12800`
|
+| `oap.ports.rest` | OAP http port for the GraphQL query
protocol (used by the UI and by `swctl`)
| `12800`
|
+| `oap.ports.admin` | OAP admin REST port (runtime-rule,
DSL debugging, inspect, status). Required by Horizon UI's admin features;
available on OAP 10.5+
| `17128`
|
| `oap.ports.zipkinreceiver` | OAP http port for Zipkin
receiver(not exposed by default)
| `9411`
|
| `oap.ports.zipkinquery` | OAP http port for querying Zipkin
traces and UI(not exposed by default)
| `9412`
|
| `oap.replicas` | OAP k8s deployment replicas
| `2`
|
@@ -72,10 +73,11 @@ The following table lists the configurable parameters of
the Skywalking chart an
| `oap.readinessProbe` | Configuration fields for the
[readinessProbe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/)
| `tcpSocket.port: 12800` <br> `initialDelaySeconds: 5` <br>
`periodSeconds: 10`
| `oap.env` | OAP environment variables
| `[]`
|
| `oap.securityContext` | Allows you to set the
[securityContext](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod)
for the pod
| `fsGroup: 1000`<br>`runAsUser: 1000`
|
+| `ui.enabled` | Deploy the Horizon UI. Set `false`
to skip the UI Deployment, Service, Ingress, ConfigMap, and PVC entirely
(useful when an external UI talks to OAP directly)
| `true`
|
| `ui.name` | Web UI deployment name
| `ui`
|
-| `ui.replicas` | Web UI k8s deployment replicas
| `1`
|
-| `ui.image.repository` | Web UI container image name
|
`skywalking.docker.scarf.sh/apache/skywalking-ui`
|
-| `ui.image.tag` | Web UI container image tag
| `6.1.0`
|
+| `ui.replicas` | Web UI k8s deployment replicas.
Keep at `1` unless your ingress provides sticky sessions — the Horizon BFF
holds the session table in memory
| `1`
|
+| `ui.image.repository` | Horizon UI container image. Release
images: Docker Hub `apache/skywalking-ui` tagged `horizon-x.y.z`. Dev images:
`ghcr.io/apache/skywalking-horizon-ui`
|
`skywalking.docker.scarf.sh/apache/skywalking-ui`
|
+| `ui.image.tag` | Horizon UI image tag (required),
e.g. `horizon-1.0.0`
| `null`
|
| `ui.image.pullPolicy` | Web UI container image pull policy
| `IfNotPresent`
|
| `ui.nodeAffinity` | Web UI node affinity policy
| `{}`
|
| `ui.nodeSelector` | Web UI labels for pod assignment
| `{}`
|
@@ -87,12 +89,22 @@ The following table lists the configurable parameters of
the Skywalking chart an
| `ui.ingress.tls` | Associate TLS with the Ingress
| `[]`
|
| `ui.service.type` | Web UI svc type
| `ClusterIP`
|
| `ui.service.externalPort` | external port for the service
| `80`
|
-| `ui.service.internalPort` | internal port for the service
| `8080`
|
+| `ui.service.internalPort` | internal port for the service
(Horizon BFF binds 8081)
| `8081`
|
| `ui.service.externalIPs` | external IP addresses
| `nil`
|
| `ui.service.loadBalancerIP` | Load Balancer IP address
| `nil`
|
| `ui.service.annotations` | Kubernetes service annotations
| `{}`
|
| `ui.service.loadBalancerSourceRanges` | Limit load balancer source IPs to
list of CIDRs (where available))
| `[]`
|
-| `ui.securityContext` | Allows you to set the
[securityContext](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod)
for the pod
| `fsGroup: 1000`<br>`runAsUser: 1000`
|
+| `ui.securityContext` | Pod
[securityContext](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod).
The image runs as the non-root `horizon` user; `fsGroup` makes mounted PVCs
group-writable for that user
| `fsGroup: 101`
|
+| `ui.livenessProbe` | TCP liveness probe
| `tcpSocket.port: 8081`
|
+| `ui.readinessProbe` | HTTP readiness probe; verifies the
BFF is up and the auth backend is healthy. `/api/auth/health` is the only
unauthenticated BFF health endpoint
| `httpGet.path:
/api/auth/health, port: 8081`
|
+| `ui.persistence.enabled` | Mount a PVC at `/data` for audit
log / setup / alarm state / wire debug log. When `false`, state lands in the
container's writable layer and is lost on pod restart
| `false`
|
+| `ui.persistence.existingClaim` | Use a pre-created PVC; if empty,
the chart creates one
| `""`
|
+| `ui.persistence.storageClass` | Storage class for the chart-managed
PVC
| `""`
|
+| `ui.persistence.accessModes` | PVC access modes
| `[ReadWriteOnce]`
|
+| `ui.persistence.size` | PVC size
| `1Gi`
|
+| `ui.config` | `horizon.yaml` content (deep-merged
onto chart defaults that point `oap.queryUrl`/`adminUrl` at the in-cluster
OAP). See the upstream
[`horizon.example.yaml`](https://github.com/apache/skywalking-horizon-ui/blob/main/horizon.example.yaml)
and [horizon.yaml
reference](https://github.com/apache/skywalking-horizon-ui/blob/main/docs/setup/horizon-yaml.md).
`auth.local.users` defaults to empty (BFF refuses to start); see the root
README "Web UI" sect [...]
+| `ui.envFromSecret` | Reference a Secret whose keys are
exposed as env vars in the BFF container, for use with `${VAR}` interpolation
in `ui.config` (e.g. admin password hash)
| `""`
|
+| `ui.extraEnv` | Extra env vars passed to the BFF
container
| `[]`
|
| `oapInit.nodeAffinity` | OAP init job node affinity policy
| `{}`
|
| `oapInit.nodeSelector` | OAP init job labels for master pod
assignment
| `{}`
|
| `oapInit.tolerations` | OAP init job tolerations
| `[]`
|
diff --git a/chart/skywalking/templates/NOTES.txt
b/chart/skywalking/templates/NOTES.txt
index 1da5c4d..8d02cad 100644
--- a/chart/skywalking/templates/NOTES.txt
+++ b/chart/skywalking/templates/NOTES.txt
@@ -27,6 +27,11 @@ Your release is named {{ .Release.Name }}.
Learn more, please visit https://skywalking.apache.org/
+{{- if not .Values.ui.enabled }}
+The web UI is disabled in this release (ui.enabled=false). No UI Deployment,
+Service, ConfigMap, Ingress, or PVC was created. OAP is still reachable on
+its GraphQL port (default 12800) for any external UI you point at it.
+{{- else }}
Get the UI URL by running these commands:
{{- if .Values.ui.ingress.enabled }}
{{- range .Values.ui.ingress.hosts }}
@@ -46,3 +51,20 @@ Get the UI URL by running these commands:
kubectl port-forward svc/{{ include "skywalking.ui.fullname" . }} 8080:{{
.Values.ui.service.externalPort }} --namespace {{ .Release.Namespace }}
{{- end }}
+NOTE on Horizon UI auth:
+
+The web UI is Apache SkyWalking Horizon UI. Its BFF refuses to start when
+no users are configured — there is no built-in "admin/admin" fallback.
+
+If your `ui.config.auth.local.users` list is empty, the UI pod will
+CrashLoopBackOff. See the README "Web UI" section for:
+
+ - a copy-pastable demo snippet (publicly-known admin/admin hash)
+ - the production Secret + ${VAR} interpolation pattern
+
+Full horizon.yaml config reference and upstream example:
+
https://github.com/apache/skywalking-horizon-ui/blob/main/docs/setup/horizon-yaml.md
+
https://github.com/apache/skywalking-horizon-ui/blob/main/horizon.example.yaml
+ (also shipped inside the image at /app/horizon.example.yaml)
+{{- end }}
+
diff --git a/chart/skywalking/templates/ui-configmap.yaml
b/chart/skywalking/templates/ui-configmap.yaml
new file mode 100644
index 0000000..81b22f7
--- /dev/null
+++ b/chart/skywalking/templates/ui-configmap.yaml
@@ -0,0 +1,46 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+{{- if .Values.ui.enabled }}
+{{- /*
+horizon.yaml is built by deep-merging:
+ 1. chart-managed defaults that point at the in-cluster OAP service
+ 2. whatever the operator put in `ui.config`
+The merge order means user values win on every field except oap.queryUrl /
+oap.adminUrl, where we always default to the in-cluster service if the
+operator left them unset.
+*/ -}}
+{{- $defaults := dict
+ "oap" (dict
+ "queryUrl" (printf "http://%s:%v" (include "skywalking.oap.fullname" .)
.Values.oap.ports.rest)
+ "adminUrl" (printf "http://%s:%v" (include "skywalking.oap.fullname" .)
(default 17128 .Values.oap.ports.admin))
+ )
+}}
+{{- $userConfig := default (dict) .Values.ui.config }}
+{{- $merged := mergeOverwrite (deepCopy $defaults) (deepCopy $userConfig) }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: {{ template "skywalking.ui.fullname" . }}
+ labels:
+ app: {{ template "skywalking.name" . }}
+ chart: {{ .Chart.Name }}-{{ .Chart.Version }}
+ component: "{{ .Values.ui.name }}"
+ heritage: {{ .Release.Service }}
+ release: {{ .Release.Name }}
+data:
+ horizon.yaml: |
+{{ toYaml $merged | indent 4 }}
+{{- end }}
diff --git a/chart/skywalking/templates/ui-deployment.yaml
b/chart/skywalking/templates/ui-deployment.yaml
index 4945f3c..eb4c6c7 100644
--- a/chart/skywalking/templates/ui-deployment.yaml
+++ b/chart/skywalking/templates/ui-deployment.yaml
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+{{- if .Values.ui.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
@@ -25,6 +26,11 @@ metadata:
release: {{ .Release.Name }}
spec:
replicas: {{ .Values.ui.replicas }}
+ # Horizon UI's BFF holds the session table in memory. Recreate (not
+ # RollingUpdate) avoids the brief window of two pods serving traffic with
+ # disjoint session state.
+ strategy:
+ type: Recreate
selector:
matchLabels:
app: {{ template "skywalking.name" . }}
@@ -36,9 +42,12 @@ spec:
app: {{ template "skywalking.name" . }}
component: "{{ .Values.ui.name }}"
release: {{ .Release.Name }}
- {{- if .Values.ui.podAnnotations }}
annotations:
-{{ toYaml .Values.ui.podAnnotations | indent 8 }}
+ # Roll the pod when horizon.yaml changes — ConfigMap subPath mounts
+ # don't auto-update at runtime.
+ checksum/config: {{ include (print $.Template.BasePath
"/ui-configmap.yaml") . | sha256sum }}
+ {{- with .Values.ui.podAnnotations }}
+{{ toYaml . | indent 8 }}
{{- end }}
spec:
{{- with .Values.ui.securityContext }}
@@ -74,14 +83,44 @@ spec:
resources:
{{ toYaml .Values.ui.resources | indent 10 }}
{{- end }}
+{{- if .Values.ui.livenessProbe }}
+ livenessProbe:
+{{ toYaml .Values.ui.livenessProbe | indent 10 }}
+{{- end }}
+{{- if .Values.ui.readinessProbe }}
+ readinessProbe:
+{{ toYaml .Values.ui.readinessProbe | indent 10 }}
+{{- end }}
+{{- if or .Values.ui.envFromSecret .Values.ui.extraEnv }}
env:
- - name: SW_OAP_ADDRESS
- value: "http://{{ template "skywalking.oap.fullname" . }}:{{
.Values.oap.ports.rest }}"
-{{- if .Values.oap.ports.zipkinquery }}
- - name: SW_ZIPKIN_ADDRESS
- value: "http://{{ template "skywalking.oap.fullname" . }}:{{
.Values.oap.ports.zipkinquery }}"
+{{- range .Values.ui.extraEnv }}
+ - {{ toYaml . | nindent 10 | trim }}
+{{- end }}
+{{- end }}
+{{- if .Values.ui.envFromSecret }}
+ envFrom:
+ - secretRef:
+ name: {{ .Values.ui.envFromSecret }}
+{{- end }}
+ volumeMounts:
+ - name: horizon-config
+ mountPath: /app/horizon.yaml
+ subPath: horizon.yaml
+ readOnly: true
+ - name: horizon-data
+ mountPath: /data
+ volumes:
+ - name: horizon-config
+ configMap:
+ name: {{ template "skywalking.ui.fullname" . }}
+ items:
+ - key: horizon.yaml
+ path: horizon.yaml
+ - name: horizon-data
+{{- if .Values.ui.persistence.enabled }}
+ persistentVolumeClaim:
+ claimName: {{ default (printf "%s-data" (include
"skywalking.ui.fullname" .)) .Values.ui.persistence.existingClaim }}
+{{- else }}
+ emptyDir: {}
+{{- end }}
{{- end }}
- {{- range $key, $value := .Values.ui.env }}
- - name: {{ $key }}
- value: {{ $value | quote }}
- {{- end }}
diff --git a/chart/skywalking/templates/ui-ingress.yaml
b/chart/skywalking/templates/ui-ingress.yaml
index 4d3cb57..94c146b 100644
--- a/chart/skywalking/templates/ui-ingress.yaml
+++ b/chart/skywalking/templates/ui-ingress.yaml
@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-{{- if .Values.ui.ingress.enabled }}
+{{- if and .Values.ui.enabled .Values.ui.ingress.enabled }}
{{- $serviceName := include "skywalking.ui.fullname" . }}
{{- $servicePort := .Values.ui.service.externalPort }}
{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }}
diff --git a/chart/skywalking/templates/ui-pvc.yaml
b/chart/skywalking/templates/ui-pvc.yaml
new file mode 100644
index 0000000..3f331a9
--- /dev/null
+++ b/chart/skywalking/templates/ui-pvc.yaml
@@ -0,0 +1,44 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+{{- if and .Values.ui.enabled .Values.ui.persistence.enabled (not
.Values.ui.persistence.existingClaim) }}
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ name: {{ template "skywalking.ui.fullname" . }}-data
+ labels:
+ app: {{ template "skywalking.name" . }}
+ chart: {{ .Chart.Name }}-{{ .Chart.Version }}
+ component: "{{ .Values.ui.name }}"
+ heritage: {{ .Release.Service }}
+ release: {{ .Release.Name }}
+ {{- with .Values.ui.persistence.annotations }}
+ annotations:
+{{ toYaml . | indent 4 }}
+ {{- end }}
+spec:
+ accessModes:
+{{ toYaml .Values.ui.persistence.accessModes | indent 4 }}
+ resources:
+ requests:
+ storage: {{ .Values.ui.persistence.size | quote }}
+ {{- if .Values.ui.persistence.storageClass }}
+ {{- if (eq "-" .Values.ui.persistence.storageClass) }}
+ storageClassName: ""
+ {{- else }}
+ storageClassName: {{ .Values.ui.persistence.storageClass | quote }}
+ {{- end }}
+ {{- end }}
+{{- end }}
diff --git a/chart/skywalking/templates/ui-svc.yaml
b/chart/skywalking/templates/ui-svc.yaml
index 6250c83..46b2528 100644
--- a/chart/skywalking/templates/ui-svc.yaml
+++ b/chart/skywalking/templates/ui-svc.yaml
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+{{- if .Values.ui.enabled }}
apiVersion: v1
kind: Service
metadata:
@@ -61,3 +62,4 @@ spec:
{{- if .Values.ui.service.loadBalancerIP }}
loadBalancerIP: {{ .Values.ui.service.loadBalancerIP }}
{{- end }}
+{{- end }}
diff --git a/chart/skywalking/values.yaml b/chart/skywalking/values.yaml
index f633102..f51d059 100644
--- a/chart/skywalking/values.yaml
+++ b/chart/skywalking/values.yaml
@@ -41,6 +41,11 @@ oap:
# zabbix: 10051
grpc: 11800
rest: 12800
+ # admin REST exposed by OAP 10.5+. Horizon UI's BFF talks to this for
+ # runtime-rule, DSL debugging, inspect, status, and config dump. Set to
+ # null (or remove) if the deployed OAP version predates 10.5 — Horizon
+ # admin features will be unavailable in that case.
+ admin: 17128
# zipkinreceiver: 9411
# zipkinquery: 9412
replicas: 2
@@ -133,11 +138,22 @@ oap:
# path: /usr/share/elasticsearch/config/certs
ui:
+ # Set to false to skip the UI deployment entirely — no Deployment, Service,
+ # Ingress, ConfigMap, or PVC will be created. Useful when an external UI
+ # talks to OAP directly, or when only the OAP backend is wanted.
+ enabled: true
name: ui
+ # Horizon UI's BFF holds the active session table in memory; a multi-replica
+ # deployment without sticky routing breaks logins on every other request.
+ # Keep replicas: 1 unless your ingress provides sticky sessions.
replicas: 1
image:
+ # Horizon UI release images ship to Docker Hub `apache/skywalking-ui`
+ # tagged `horizon-<x.y.z>` (e.g. `horizon-1.0.0`). Dev / pre-release
+ # images live at `ghcr.io/apache/skywalking-horizon-ui` and are tagged
+ # by SHA / `vX.Y.Z` / `main`.
repository: skywalking.docker.scarf.sh/apache/skywalking-ui
- tag: null # Must be set explicitly
+ tag: null # Must be set explicitly, e.g. horizon-1.0.0
pullPolicy: IfNotPresent
# podAnnotations:
# example: oap-foo
@@ -160,7 +176,8 @@ ui:
type: ClusterIP
# clusterIP: None
externalPort: 80
- internalPort: 8080
+ # Horizon UI's BFF binds 8081 by default.
+ internalPort: 8081
## nodePort is the port on each node on which this service is exposed when
type=NodePort
## Default: auto-allocated port if not specified. 30080 is just an example
##
@@ -180,11 +197,98 @@ ui:
annotations: {}
## Limit load balancer source ips to list of CIDRs (where available)
# loadBalancerSourceRanges: []
- securityContext: {}
- # runAsUser: 1000
- # runAsGroup: 1000
- # fsGroup: 1000
- env:
+ # The image runs as a non-root alpine system user `horizon`. PVCs mounted
+ # at /data and (optionally) /app/bundled_templates must be group-writable
+ # by that user; fsGroup defaults to 101 (alpine's typical `nobody` GID).
+ securityContext:
+ fsGroup: 101
+ # Persistent state directory used by the BFF for audit log, setup state,
+ # alarm state, and wire debug log. Without persistence these files land in
+ # the container's writable layer and are lost on pod restart.
+ persistence:
+ enabled: false
+ # existingClaim: ""
+ # storageClass: ""
+ accessModes:
+ - ReadWriteOnce
+ size: 1Gi
+ annotations: {}
+ resources: {}
+ livenessProbe:
+ tcpSocket:
+ port: 8081
+ initialDelaySeconds: 30
+ periodSeconds: 20
+ readinessProbe:
+ # /api/auth/health is the only unauthenticated BFF health endpoint —
+ # /api/oap/info is gated behind a logged-in session and returns 401
+ # to an unauthenticated kubelet probe.
+ httpGet:
+ path: /api/auth/health
+ port: 8081
+ initialDelaySeconds: 10
+ periodSeconds: 10
+ failureThreshold: 6
+ # `config` is rendered verbatim into the `horizon.yaml` ConfigMap mounted
+ # at /app/horizon.yaml. Schema and field reference:
+ #
https://github.com/apache/skywalking-horizon-ui/blob/main/docs/setup/horizon-yaml.md
+ # See also /app/horizon.example.yaml inside the image for the upstream
+ # commented example.
+ #
+ # Chart-managed defaults wire `oap.queryUrl` / `oap.adminUrl` to the
+ # in-cluster OAP service. Anything you set here merges over the defaults
+ # via Helm's mergeOverwrite semantics.
+ #
+ # `auth.local.users` is intentionally empty by default — Horizon's BFF
+ # refuses to start without it, which is the upstream's "no default
+ # admin/admin" stance. See the README "Web UI" section for two paths:
+ # a copy-pastable demo snippet (publicly-known admin/admin hash) or the
+ # production Secret + `${VAR}` interpolation pattern.
+ config:
+ server:
+ host: 0.0.0.0
+ port: 8081
+ oap:
+ # queryUrl / adminUrl default to the in-cluster OAP service when unset.
+ # Override here if you point the UI at an external OAP cluster.
+ # queryUrl: http://skywalking-oap:12800
+ # adminUrl: http://skywalking-oap:17128
+ timeoutMs: 15000
+ # auth:
+ # username: skywalking
+ # password: "${HORIZON_OAP_PW}"
+ auth:
+ backend: local
+ local:
+ users: []
+ # - username: admin
+ # passwordHash: "${HORIZON_ADMIN_HASH}"
+ # roles: [admin]
+ rbac:
+ enabled: true
+ session:
+ ttlMinutes: 60
+ cookieName: horizon_sid
+ # Flip to true when serving over HTTPS (browser refuses Secure
+ # cookies over plain HTTP).
+ cookieSecure: false
+ # Optional: pass extra env vars into the BFF container. Use this to
+ # provide values referenced by `${VAR}` interpolation in `config`
+ # (e.g. admin password hash, OAP basic-auth password) without baking
+ # them into the ConfigMap.
+ # extraEnv:
+ # - name: HORIZON_ADMIN_HASH
+ # valueFrom:
+ # secretKeyRef:
+ # name: horizon-admin
+ # key: passwordHash
+ extraEnv: []
+ # Optional: reference a pre-created Secret whose keys are exposed as env
+ # vars in the BFF container (shortcut for the common ConfigMap+Secret
+ # pattern). The Secret must define keys referenced in `config` via
+ # ${VAR} interpolation.
+ # envFromSecret: horizon-secrets
+ envFromSecret: ""
oapInit:
diff --git a/test/e2e/e2e-banyandb-cluster.yaml
b/test/e2e/e2e-banyandb-cluster.yaml
index df21347..d21c050 100644
--- a/test/e2e/e2e-banyandb-cluster.yaml
+++ b/test/e2e/e2e-banyandb-cluster.yaml
@@ -22,8 +22,8 @@ setup:
kind:
expose-ports:
- namespace: istio-system
- resource: service/skywalking-ui
- port: 80
+ resource: service/skywalking-oap
+ port: 12800
steps:
- name: install yq
command: bash test/e2e/setup-e2e-shell/install.sh yq
@@ -75,6 +75,9 @@ setup:
- namespace: istio-system
resource: deployments/skywalking-satellite
for: condition=available
+ - namespace: istio-system
+ resource: deployments/skywalking-ui
+ for: condition=available
- name: Deploy demo services
command: |
kubectl apply -f
https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/platform/kube/bookinfo.yaml
@@ -102,138 +105,138 @@ verify:
interval: 10s
cases:
# service list
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
service ls
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
service ls
expected: expected/service.yml
# service instance list
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage
expected: expected/service-instance.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews
expected: expected/service-instance.yml
# service endpoint
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
endpoint list --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
endpoint list --service-name=e2e::productpage
expected: expected/service-endpoint-productpage.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
endpoint list --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
endpoint list --service-name=e2e::reviews
expected: expected/service-endpoint-reviews.yml
# service metrics: e2e::productpage
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_sla --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_sla --service-name=e2e::productpage
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_cpm --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_cpm --service-name=e2e::productpage
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_resp_time --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_resp_time --service-name=e2e::productpage
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_apdex --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_apdex --service-name=e2e::productpage
expected: expected/metrics-has-value.yml
# service metrics: e2e::reviews
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_sla --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_sla --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_cpm --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_cpm --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_resp_time --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_resp_time --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_apdex --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_apdex --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_sidecar_internal_req_latency_nanos
--service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_sidecar_internal_req_latency_nanos
--service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_sidecar_internal_resp_latency_nanos
--service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_sidecar_internal_resp_latency_nanos
--service-name=e2e::reviews
expected: expected/metrics-has-value.yml
# service instance metrics: e2e::productpage
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_resp_time
--service-name=e2e::productpage --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_resp_time
--service-name=e2e::productpage --instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_cpm --service-name=e2e::productpage
--instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_cpm --service-name=e2e::productpage
--instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_sla --service-name=e2e::productpage
--instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_sla --service-name=e2e::productpage
--instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
# service instance metrics: e2e::reviews
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_resp_time
--service-name=e2e::reviews --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_resp_time
--service-name=e2e::reviews --instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_cpm --service-name=e2e::reviews
--instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_cpm --service-name=e2e::reviews
--instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_sla --service-name=e2e::reviews
--instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_sla --service-name=e2e::reviews
--instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_sidecar_internal_req_latency_nanos
--service-name=e2e::reviews --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_sidecar_internal_req_latency_nanos
--service-name=e2e::reviews --instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_sidecar_internal_resp_latency_nanos
--service-name=e2e::reviews --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_sidecar_internal_resp_latency_nanos
--service-name=e2e::reviews --instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
# service endpoint metrics: e2e::productpage GET:/productpage
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_cpm --endpoint-name=GET:/productpage
--service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_cpm --endpoint-name=GET:/productpage
--service-name=e2e::productpage
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_resp_time --endpoint-name=GET:/productpage
--service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_resp_time --endpoint-name=GET:/productpage
--service-name=e2e::productpage
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_sla --endpoint-name=GET:/productpage
--service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_sla --endpoint-name=GET:/productpage
--service-name=e2e::productpage
expected: expected/metrics-has-value.yml
# service endpoint metrics: e2e::reviews GET:/reviews/0
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_cpm --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_cpm --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_resp_time --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_resp_time --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_sla --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_sla --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_sidecar_internal_req_latency_nanos
--endpoint-name=GET:/reviews/0 --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_sidecar_internal_req_latency_nanos
--endpoint-name=GET:/reviews/0 --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_sidecar_internal_resp_latency_nanos
--endpoint-name=GET:/reviews/0 --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_sidecar_internal_resp_latency_nanos
--endpoint-name=GET:/reviews/0 --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
# dependency service
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
dependency service --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
dependency service --service-name=e2e::productpage
expected: expected/dependency-services-productpage.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
dependency service --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
dependency service --service-name=e2e::reviews
expected: expected/dependency-services-reviews.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
dependency instance --service-name=e2e::productpage
--dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
dependency instance --service-name=e2e::productpage
--dest-service-name=e2e::reviews
expected: expected/dependency-services-instance-productpage.yml
# service relation metrics
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_relation_client_cpm
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_relation_client_cpm
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_relation_server_cpm
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_relation_server_cpm
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_client_sidecar_internal_req_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_client_sidecar_internal_req_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_server_sidecar_internal_req_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_server_sidecar_internal_req_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_client_sidecar_internal_resp_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_client_sidecar_internal_resp_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_server_sidecar_internal_resp_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_server_sidecar_internal_resp_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
# service instance relation metrics, e2e::productpage -> e2e::reviews
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_relation_client_cpm \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_relation_client_cpm \
--service-name=e2e::productpage --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' - ) \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' - ) \
--dest-service-name=e2e::reviews --dest-instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' - ) \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' - ) \
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_relation_server_cpm \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_relation_server_cpm \
--service-name=e2e::productpage --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' - ) \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' - ) \
--dest-service-name=e2e::reviews --dest-instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' - ) \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' - ) \
expected: expected/metrics-has-value.yml
diff --git a/test/e2e/e2e-banyandb-standalone.yaml
b/test/e2e/e2e-banyandb-standalone.yaml
index 244cb66..adf2e03 100644
--- a/test/e2e/e2e-banyandb-standalone.yaml
+++ b/test/e2e/e2e-banyandb-standalone.yaml
@@ -22,8 +22,8 @@ setup:
kind:
expose-ports:
- namespace: istio-system
- resource: service/skywalking-ui
- port: 80
+ resource: service/skywalking-oap
+ port: 12800
steps:
- name: install yq
command: bash test/e2e/setup-e2e-shell/install.sh yq
@@ -72,6 +72,9 @@ setup:
- namespace: istio-system
resource: deployments/skywalking-satellite
for: condition=available
+ - namespace: istio-system
+ resource: deployments/skywalking-ui
+ for: condition=available
- name: Deploy demo services
command: |
kubectl apply -f
https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/platform/kube/bookinfo.yaml
@@ -99,138 +102,138 @@ verify:
interval: 10s
cases:
# service list
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
service ls
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
service ls
expected: expected/service.yml
# service instance list
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage
expected: expected/service-instance.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews
expected: expected/service-instance.yml
# service endpoint
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
endpoint list --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
endpoint list --service-name=e2e::productpage
expected: expected/service-endpoint-productpage.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
endpoint list --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
endpoint list --service-name=e2e::reviews
expected: expected/service-endpoint-reviews.yml
# service metrics: e2e::productpage
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_sla --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_sla --service-name=e2e::productpage
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_cpm --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_cpm --service-name=e2e::productpage
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_resp_time --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_resp_time --service-name=e2e::productpage
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_apdex --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_apdex --service-name=e2e::productpage
expected: expected/metrics-has-value.yml
# service metrics: e2e::reviews
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_sla --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_sla --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_cpm --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_cpm --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_resp_time --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_resp_time --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_apdex --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_apdex --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_sidecar_internal_req_latency_nanos
--service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_sidecar_internal_req_latency_nanos
--service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_sidecar_internal_resp_latency_nanos
--service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_sidecar_internal_resp_latency_nanos
--service-name=e2e::reviews
expected: expected/metrics-has-value.yml
# service instance metrics: e2e::productpage
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_resp_time
--service-name=e2e::productpage --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_resp_time
--service-name=e2e::productpage --instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_cpm --service-name=e2e::productpage
--instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_cpm --service-name=e2e::productpage
--instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_sla --service-name=e2e::productpage
--instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_sla --service-name=e2e::productpage
--instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
# service instance metrics: e2e::reviews
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_resp_time
--service-name=e2e::reviews --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_resp_time
--service-name=e2e::reviews --instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_cpm --service-name=e2e::reviews
--instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_cpm --service-name=e2e::reviews
--instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_sla --service-name=e2e::reviews
--instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_sla --service-name=e2e::reviews
--instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_sidecar_internal_req_latency_nanos
--service-name=e2e::reviews --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_sidecar_internal_req_latency_nanos
--service-name=e2e::reviews --instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_sidecar_internal_resp_latency_nanos
--service-name=e2e::reviews --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_sidecar_internal_resp_latency_nanos
--service-name=e2e::reviews --instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
# service endpoint metrics: e2e::productpage GET:/productpage
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_cpm --endpoint-name=GET:/productpage
--service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_cpm --endpoint-name=GET:/productpage
--service-name=e2e::productpage
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_resp_time --endpoint-name=GET:/productpage
--service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_resp_time --endpoint-name=GET:/productpage
--service-name=e2e::productpage
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_sla --endpoint-name=GET:/productpage
--service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_sla --endpoint-name=GET:/productpage
--service-name=e2e::productpage
expected: expected/metrics-has-value.yml
# service endpoint metrics: e2e::reviews GET:/reviews/0
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_cpm --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_cpm --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_resp_time --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_resp_time --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_sla --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_sla --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_sidecar_internal_req_latency_nanos
--endpoint-name=GET:/reviews/0 --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_sidecar_internal_req_latency_nanos
--endpoint-name=GET:/reviews/0 --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_sidecar_internal_resp_latency_nanos
--endpoint-name=GET:/reviews/0 --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_sidecar_internal_resp_latency_nanos
--endpoint-name=GET:/reviews/0 --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
# dependency service
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
dependency service --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
dependency service --service-name=e2e::productpage
expected: expected/dependency-services-productpage.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
dependency service --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
dependency service --service-name=e2e::reviews
expected: expected/dependency-services-reviews.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
dependency instance --service-name=e2e::productpage
--dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
dependency instance --service-name=e2e::productpage
--dest-service-name=e2e::reviews
expected: expected/dependency-services-instance-productpage.yml
# service relation metrics
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_relation_client_cpm
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_relation_client_cpm
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_relation_server_cpm
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_relation_server_cpm
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_client_sidecar_internal_req_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_client_sidecar_internal_req_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_server_sidecar_internal_req_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_server_sidecar_internal_req_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_client_sidecar_internal_resp_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_client_sidecar_internal_resp_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_server_sidecar_internal_resp_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_server_sidecar_internal_resp_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
# service instance relation metrics, e2e::productpage -> e2e::reviews
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_relation_client_cpm \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_relation_client_cpm \
--service-name=e2e::productpage --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' - ) \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' - ) \
--dest-service-name=e2e::reviews --dest-instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' - ) \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' - ) \
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_relation_server_cpm \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_relation_server_cpm \
--service-name=e2e::productpage --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' - ) \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' - ) \
--dest-service-name=e2e::reviews --dest-instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' - ) \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' - ) \
expected: expected/metrics-has-value.yml
diff --git a/test/e2e/e2e-elasticsearch.yaml b/test/e2e/e2e-elasticsearch.yaml
index 4afe7e7..54133e7 100644
--- a/test/e2e/e2e-elasticsearch.yaml
+++ b/test/e2e/e2e-elasticsearch.yaml
@@ -22,8 +22,8 @@ setup:
kind:
expose-ports:
- namespace: istio-system
- resource: service/skywalking-ui
- port: 80
+ resource: service/skywalking-oap
+ port: 12800
steps:
- name: install yq
command: bash test/e2e/setup-e2e-shell/install.sh yq
@@ -71,6 +71,9 @@ setup:
- namespace: istio-system
resource: deployments/skywalking-satellite
for: condition=available
+ - namespace: istio-system
+ resource: deployments/skywalking-ui
+ for: condition=available
- name: Deploy demo services
command: |
kubectl apply -f
https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/platform/kube/bookinfo.yaml
@@ -98,138 +101,138 @@ verify:
interval: 10s
cases:
# service list
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
service ls
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
service ls
expected: expected/service.yml
# service instance list
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage
expected: expected/service-instance.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews
expected: expected/service-instance.yml
# service endpoint
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
endpoint list --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
endpoint list --service-name=e2e::productpage
expected: expected/service-endpoint-productpage.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
endpoint list --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
endpoint list --service-name=e2e::reviews
expected: expected/service-endpoint-reviews.yml
# service metrics: e2e::productpage
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_sla --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_sla --service-name=e2e::productpage
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_cpm --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_cpm --service-name=e2e::productpage
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_resp_time --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_resp_time --service-name=e2e::productpage
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_apdex --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_apdex --service-name=e2e::productpage
expected: expected/metrics-has-value.yml
# service metrics: e2e::reviews
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_sla --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_sla --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_cpm --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_cpm --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_resp_time --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_resp_time --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_apdex --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_apdex --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_sidecar_internal_req_latency_nanos
--service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_sidecar_internal_req_latency_nanos
--service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_sidecar_internal_resp_latency_nanos
--service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_sidecar_internal_resp_latency_nanos
--service-name=e2e::reviews
expected: expected/metrics-has-value.yml
# service instance metrics: e2e::productpage
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_resp_time
--service-name=e2e::productpage --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_resp_time
--service-name=e2e::productpage --instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_cpm --service-name=e2e::productpage
--instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_cpm --service-name=e2e::productpage
--instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_sla --service-name=e2e::productpage
--instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_sla --service-name=e2e::productpage
--instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
# service instance metrics: e2e::reviews
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_resp_time
--service-name=e2e::reviews --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_resp_time
--service-name=e2e::reviews --instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_cpm --service-name=e2e::reviews
--instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_cpm --service-name=e2e::reviews
--instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_sla --service-name=e2e::reviews
--instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_sla --service-name=e2e::reviews
--instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_sidecar_internal_req_latency_nanos
--service-name=e2e::reviews --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_sidecar_internal_req_latency_nanos
--service-name=e2e::reviews --instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_sidecar_internal_resp_latency_nanos
--service-name=e2e::reviews --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_sidecar_internal_resp_latency_nanos
--service-name=e2e::reviews --instance-name=$( \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' -
)
expected: expected/metrics-has-value.yml
# service endpoint metrics: e2e::productpage GET:/productpage
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_cpm --endpoint-name=GET:/productpage
--service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_cpm --endpoint-name=GET:/productpage
--service-name=e2e::productpage
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_resp_time --endpoint-name=GET:/productpage
--service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_resp_time --endpoint-name=GET:/productpage
--service-name=e2e::productpage
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_sla --endpoint-name=GET:/productpage
--service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_sla --endpoint-name=GET:/productpage
--service-name=e2e::productpage
expected: expected/metrics-has-value.yml
# service endpoint metrics: e2e::reviews GET:/reviews/0
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_cpm --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_cpm --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_resp_time --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_resp_time --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_sla --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_sla --endpoint-name=GET:/reviews/0
--service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_sidecar_internal_req_latency_nanos
--endpoint-name=GET:/reviews/0 --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_sidecar_internal_req_latency_nanos
--endpoint-name=GET:/reviews/0 --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=endpoint_sidecar_internal_resp_latency_nanos
--endpoint-name=GET:/reviews/0 --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=endpoint_sidecar_internal_resp_latency_nanos
--endpoint-name=GET:/reviews/0 --service-name=e2e::reviews
expected: expected/metrics-has-value.yml
# dependency service
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
dependency service --service-name=e2e::productpage
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
dependency service --service-name=e2e::productpage
expected: expected/dependency-services-productpage.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
dependency service --service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
dependency service --service-name=e2e::reviews
expected: expected/dependency-services-reviews.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
dependency instance --service-name=e2e::productpage
--dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
dependency instance --service-name=e2e::productpage
--dest-service-name=e2e::reviews
expected: expected/dependency-services-instance-productpage.yml
# service relation metrics
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_relation_client_cpm
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_relation_client_cpm
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_relation_server_cpm
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_relation_server_cpm
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_client_sidecar_internal_req_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_client_sidecar_internal_req_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_server_sidecar_internal_req_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_server_sidecar_internal_req_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_client_sidecar_internal_resp_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_client_sidecar_internal_resp_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_server_sidecar_internal_resp_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_server_sidecar_internal_resp_latency_nanos
--service-name=e2e::productpage --dest-service-name=e2e::reviews
expected: expected/metrics-has-value.yml
# service instance relation metrics, e2e::productpage -> e2e::reviews
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_relation_client_cpm \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_relation_client_cpm \
--service-name=e2e::productpage --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' - ) \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' - ) \
--dest-service-name=e2e::reviews --dest-instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' - ) \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' - ) \
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=service_instance_relation_server_cpm \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
metrics exec --expression=service_instance_relation_server_cpm \
--service-name=e2e::productpage --instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' - ) \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::productpage | yq e '.[0].name' - ) \
--dest-service-name=e2e::reviews --dest-instance-name=$( \
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' - ) \
+ swctl --display yaml
--base-url=http://${service_skywalking_oap_host}:${service_skywalking_oap_12800}/graphql
instance list --service-name=e2e::reviews | yq e '.[0].name' - ) \
expected: expected/metrics-has-value.yml
diff --git a/test/e2e/env b/test/e2e/env
index fc6284d..a9097f4 100644
--- a/test/e2e/env
+++ b/test/e2e/env
@@ -15,8 +15,18 @@
OAP_TAG=a0cec0ca237792497d2da0b65757d11f58c3f342
OAP_REPO=ghcr.io/apache/skywalking/oap
-UI_TAG=a0cec0ca237792497d2da0b65757d11f58c3f342
-UI_REPO=ghcr.io/apache/skywalking/ui
+# Horizon UI dev images are published to GHCR by the
apache/skywalking-horizon-ui
+# repo (tags: full commit SHA, vX.Y.Z, main). Release images live on Docker Hub
+# at apache/skywalking-ui:horizon-x.y.z. CI pins to a SHA so re-runs are
+# reproducible — bump this when a new horizon-ui feature/fix needs CI coverage.
+UI_TAG=80565f563b6ea47c274141029d8ef6bd33b7eeac
+UI_REPO=ghcr.io/apache/skywalking-horizon-ui
+# SWCK operator dev image — published by apache/skywalking-swck's
+# publish-docker.yml on every master push. Bump SWCK_OPERATOR_TAG when
+# the SWCK PR with Horizon UI support gets merged & released; the chart's
+# own default (apache/skywalking-swck:v0.9.0) stays unchanged for users.
+SWCK_OPERATOR_REPO=ghcr.io/apache/skywalking-swck/operator
+SWCK_OPERATOR_TAG=d299bc05ee230f5f366584054db5b099ca60166f
SATELLITE_TAG=v35bfaff6352b4dc351a706772796a1f79b651c14
SATELLITE_REPO=ghcr.io/apache/skywalking-satellite/skywalking-satellite
BANYANDB_TAG=5dedaa1aa5106dd87ad9d6c5f08c63deefee5579
diff --git a/test/e2e/swck/oap-agent-adapter-hpa.yaml
b/test/e2e/swck/oap-agent-adapter-hpa.yaml
index 99c49dc..96ac3a4 100644
--- a/test/e2e/swck/oap-agent-adapter-hpa.yaml
+++ b/test/e2e/swck/oap-agent-adapter-hpa.yaml
@@ -58,7 +58,9 @@ setup:
helm dep up chart/operator
helm install operator chart/operator
--namespace=skywalking-swck-system \
--create-namespace \
- --set fullnameOverride=skywalking-swck
+ --set fullnameOverride=skywalking-swck \
+ --set image.repository=$SWCK_OPERATOR_REPO \
+ --set image.tag=$SWCK_OPERATOR_TAG
wait:
- namespace: skywalking-swck-system
resource: deployment/skywalking-swck-operator
diff --git a/test/e2e/swck/oap-agent-banyandb.yaml
b/test/e2e/swck/oap-agent-banyandb.yaml
index fe02c6d..364b349 100644
--- a/test/e2e/swck/oap-agent-banyandb.yaml
+++ b/test/e2e/swck/oap-agent-banyandb.yaml
@@ -46,7 +46,9 @@ setup:
helm dep up chart/operator
helm install operator chart/operator
--namespace=skywalking-swck-system \
--create-namespace \
- --set fullnameOverride=skywalking-swck
+ --set fullnameOverride=skywalking-swck \
+ --set image.repository=$SWCK_OPERATOR_REPO \
+ --set image.tag=$SWCK_OPERATOR_TAG
wait:
- namespace: skywalking-swck-system
resource: deployment/skywalking-swck-operator
diff --git a/test/e2e/swck/oap-ui-agent-elasticsearch.yaml
b/test/e2e/swck/oap-ui-agent-elasticsearch.yaml
index 81f4b60..994f441 100644
--- a/test/e2e/swck/oap-ui-agent-elasticsearch.yaml
+++ b/test/e2e/swck/oap-ui-agent-elasticsearch.yaml
@@ -46,7 +46,9 @@ setup:
helm dep up chart/operator
helm install operator chart/operator
--namespace=skywalking-swck-system \
--create-namespace \
- --set fullnameOverride=skywalking-swck
+ --set fullnameOverride=skywalking-swck \
+ --set image.repository=$SWCK_OPERATOR_REPO \
+ --set image.tag=$SWCK_OPERATOR_TAG
wait:
- namespace: skywalking-swck-system
resource: deployment/skywalking-swck-operator
diff --git a/test/e2e/swck/oap-ui-agent-oapserverconfig.yaml
b/test/e2e/swck/oap-ui-agent-oapserverconfig.yaml
index fb54bc4..46c7bc6 100644
--- a/test/e2e/swck/oap-ui-agent-oapserverconfig.yaml
+++ b/test/e2e/swck/oap-ui-agent-oapserverconfig.yaml
@@ -49,7 +49,9 @@ setup:
helm dep up chart/operator
helm install operator chart/operator
--namespace=skywalking-swck-system \
--create-namespace \
- --set fullnameOverride=skywalking-swck
+ --set fullnameOverride=skywalking-swck \
+ --set image.repository=$SWCK_OPERATOR_REPO \
+ --set image.tag=$SWCK_OPERATOR_TAG
wait:
- namespace: skywalking-swck-system
resource: deployment/skywalking-swck-operator
diff --git a/test/e2e/swck/oap-ui-agent-satellite.yaml
b/test/e2e/swck/oap-ui-agent-satellite.yaml
index 7653ddc..c2822cb 100644
--- a/test/e2e/swck/oap-ui-agent-satellite.yaml
+++ b/test/e2e/swck/oap-ui-agent-satellite.yaml
@@ -46,7 +46,9 @@ setup:
helm dep up chart/operator
helm install operator chart/operator
--namespace=skywalking-swck-system \
--create-namespace \
- --set fullnameOverride=skywalking-swck
+ --set fullnameOverride=skywalking-swck \
+ --set image.repository=$SWCK_OPERATOR_REPO \
+ --set image.tag=$SWCK_OPERATOR_TAG
wait:
- namespace: skywalking-swck-system
resource: deployment/skywalking-swck-operator
diff --git a/test/e2e/values.yaml b/test/e2e/values.yaml
index ebbd206..9b3a9b4 100644
--- a/test/e2e/values.yaml
+++ b/test/e2e/values.yaml
@@ -18,6 +18,24 @@ oap:
metadata-service-mapping.yaml: |
serviceName: e2e::${LABELS."service.istio.io/canonical-name"}
serviceInstanceName: ${NAME}
+
+# E2E runs with the chart's shipped defaults — admin/admin and
+# skywalking/skywalking — so a developer port-forwarding into a kind cluster
+# can log in interactively while reproducing a CI failure. These are the
+# same hashes that ship in chart/skywalking/values.yaml; we re-state them
+# here so the test overlay is explicit about what the credentials are.
+ui:
+ config:
+ auth:
+ backend: local
+ local:
+ users:
+ - username: admin # password: admin
+ passwordHash:
"$argon2id$v=19$m=65536,t=3,p=4$eemqy1r72oSXR58y8VpRqw$Bn/dULrmJTHEi3263KfgWDEwQmUsqNLi3xwyv/DekHM"
+ roles: [admin]
+ - username: skywalking # password: skywalking
+ passwordHash:
"$argon2id$v=19$m=65536,t=3,p=4$Zqj8HhQDqm8d5c2MipHYZw$BsaCnu4bdd4uadIldx3wwYLsdo47Thxb7Lv1MXpWG2Q"
+ roles: [viewer, maintainer]
elasticsearch:
nodeSets:
- name: default