diff --git a/assets/scss/404.scss b/assets/scss/404.scss
new file mode 100644
index 000000000..74df99a3d
--- /dev/null
+++ b/assets/scss/404.scss
@@ -0,0 +1,4 @@
+.section-1 {
+ padding-top: 100px;
+ text-align: center;
+}
\ No newline at end of file
diff --git a/assets/scss/common.scss b/assets/scss/common.scss
index 72a4b5f78..363d185dc 100644
--- a/assets/scss/common.scss
+++ b/assets/scss/common.scss
@@ -14,3 +14,43 @@ h1, h2, h3 ,h4, h5, h6 {
html {
background-color: #f5f8f9;
}
+
+button {
+ border: none;
+
+ &:hover {
+ box-shadow: none;
+ }
+}
+
+.title-h1 {
+ font-size: 40px;
+ line-height: 1;
+ letter-spacing: -0.11px;
+ color: #ffffff;
+ text-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
+}
+
+.title-black-h2 {
+ text-shadow: 0 4px 8px rgba(35, 45, 65, 0.1);
+ font-size: 32px;
+ font-weight: bold;
+ line-height: 1.63;
+ color: #3d3e49;
+}
+
+.title-white-h2 {
+ text-shadow: 0 4px 8px rgba(35, 45, 65, 0.1);
+ font-size: 32px;
+ font-weight: bold;
+ line-height: 1.63;
+ color: #ffffff;
+}
+
+.title-p {
+ font-size: 16px;
+ line-height: 1.5;
+ letter-spacing: -0.04px;
+ color: #ffffff;
+ text-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
+}
diff --git a/assets/scss/service-mesh.scss b/assets/scss/service-mesh.scss
new file mode 100644
index 000000000..cf2b2e6a9
--- /dev/null
+++ b/assets/scss/service-mesh.scss
@@ -0,0 +1,175 @@
+@import 'variables';
+@import 'mixin';
+
+html {
+ background-color: #ffffff;
+}
+
+.section-1 {
+ position: relative;
+ height: 350px;
+ min-width: 1160px;
+
+ img {
+ width: 100%;
+ height: 100%;
+ object-fit:cover;
+ }
+
+ .title-div {
+ position: absolute;
+ width: 1160px;
+ top: 129px;
+ left: 50%;
+ transform: translateX(-50%);
+
+ h1 {
+ width: 1060px;
+ font-size: 40px;
+ text-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
+ line-height: 1;
+ letter-spacing: -0.11px;
+ color: #ffffff;
+ }
+
+ p {
+ width: 1060px;
+ margin-top: 25px;
+ font-size: 16px;
+ line-height: 1.5;
+ letter-spacing: -0.04px;
+ color: #ffffff;
+ text-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
+ }
+ }
+}
+
+.section-2 {
+ background-color: #f5f8f9;
+ padding-top: 60px;
+ & > div {
+ position: relative;
+ width: 1160px;
+ margin: 0 auto;
+
+ h2 {
+ width: 760px;
+ margin: 0 auto 45px;
+ text-align: center;
+ }
+
+ & > ul {
+ & > li:nth-child(2n) {
+ flex-direction: row-reverse;
+ }
+ & > li {
+ @include common-flex-style;
+ align-items: center;
+ margin-bottom: 20px;
+
+ & > div {
+ width: 460px;
+
+ h3 {
+ font-size: 24px;
+ line-height: 1;
+ color: #3d3e49;
+ }
+
+ p {
+ margin-top: 24px;
+ opacity: 0.9;
+ font-size: 16px;
+ line-height: 1.5;
+ color: #3d3e49;
+ }
+
+ li {
+ position: relative;
+ margin-top: 25px;
+ padding-left: 14px;
+ font-size: 16px;
+ color: #36435c;
+
+ &::before {
+ content: '';
+ position: absolute;
+ display: block;
+ width: 6px;
+ height: 6px;
+ top: 5px;
+ left: 0;
+ border-radius: 50%;
+ background-color: #00a971;
+ }
+
+ span {
+ font-weight: 600;
+ }
+ }
+ }
+
+ img {
+ width: 660px;
+ }
+ }
+ }
+ }
+}
+
+.section-3 {
+ position: relative;
+ padding-top: 80px;
+ text-align: center;
+ overflow: hidden;
+
+ .bg-left {
+ position: absolute;
+ top: 242px;
+ right: 50%;
+ transform: translateX(-200px);
+ }
+
+ .bg-right {
+ position: absolute;
+ top: 200px;
+ left: 50%;
+ transform: translateX(180px);
+ }
+
+ & > div {
+ position: relative;
+ width: 1160px;
+ margin: 0 auto;
+ img {
+ width: 955px;
+ margin-top: 40px;
+ }
+
+ p {
+ margin-top: 56px;
+ font-size: 16px;
+ line-height: 1.5;
+ letter-spacing: -0.04px;
+ color: #31383e;
+ }
+
+ button {
+ width: 263px;
+ height: 56px;
+ margin-top: 20px;
+ letter-spacing: -0.04px;
+ color: #ffffff;
+ font-size: 16px;
+ border-radius: 28px;
+ cursor: pointer;
+ box-shadow: 0 10px 50px 0 rgba(34, 43, 62, 0.1), 0 8px 16px 0 rgba(33, 43, 61, 0.2), 0 10px 50px 0 rgba(34, 43, 62, 0.1);
+ background-image: linear-gradient(to bottom, rgba(85, 188, 138, 0), rgba(85, 188, 138, 0.1) 97%), linear-gradient(to bottom, #55bc8a, #55bc8a);
+
+ &:hover {
+ box-shadow: none;
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/content/en/observability/_index.md b/content/en/observability/_index.md
new file mode 100644
index 000000000..c7996a2de
--- /dev/null
+++ b/content/en/observability/_index.md
@@ -0,0 +1,48 @@
+---
+title: "observability"
+
+css: "scss/service-mesh.scss"
+
+section1:
+ title: KubeSphere allows you to build visualizations simply and intuitively
+ content: KubeSphere provides rich observability from infrastructure to applications. It integrates your favorite tools for multi-dimensional monitoring metrics, multi-tenant log query and collection, alerting and notification.
+ image: /images/service-mesh/banner.jpg
+
+section2:
+ title: Discoverability, Observability, Security, Everything You Need in One Platform
+ list:
+ - title: Multi-dimensional Monitoring
+ image: /images/observability/multi-dimensional-monitoring.png
+ contentList:
+ - content: Infrastructure monitoring provides K8s control plane and cluster node metrics
+ - content: Application resources monitoring includes CPU, memory, network and storage metrics
+ - content: Resource usage ranking by node, workspace and project.
+ - content: Service component monitoring for user to quickly locate component failures
+ - content: Custom metrics support including application custom metrics dashboard (in v3.0.0)
+
+ - title: Log Query and Collection
+ image: /images/observability/log-query-and-collection.png
+ contentList:
+ - content: Multi-tenant log management, different tenants can only see their own log information.
+ - content: Multi-level log queries, including project, workload, Pod, container and keywords, supports drilling into each level to locate the issues.
+ - content: Support multiple log collection platforms, such as Elasticsearch, Kafka, Fluentd
+ - content: Service component monitoring for user to quickly locate component failures
+
+ - title: Flexible Alerting and Notification
+ image: /images/observability/flexible-alerting-and-notification.png
+ contentList:
+ - content: Rich alerting rules based on multi-tenancy and multi-dimensional monitoring metrics
+ - content: Flexible alerting policy allows you to customize an alerting policy that contains multiple alerting rules
+ - content: Multi-level monitoring metrics for alerting, including from infrastructure to workloads.
+ - content: Flexible alerting rules allows you to customize the detection period, duration and alerting priority of monitoring metrics
+ - content: Integration with AlertManager, support multiple notification channels (in v3.0.0)
+
+section3:
+ title: See Cloud Native Observability in KubeSphere
+ image: /images/service-mesh/15.jpg
+ content: Want to get started in action by following with the hands-on lab?
+ btnContent: Start Hands-on Lab
+ link:
+ bgLeft: /images/service-mesh/3-2.svg
+ bgRight: /images/service-mesh/3.svg
+---
\ No newline at end of file
diff --git a/content/en/service-mesh/_index.md b/content/en/service-mesh/_index.md
new file mode 100644
index 000000000..475ef51ff
--- /dev/null
+++ b/content/en/service-mesh/_index.md
@@ -0,0 +1,41 @@
+---
+title: "service mesh"
+
+css: "scss/service-mesh.scss"
+
+section1:
+ title: KubeSphere Service Mesh provides a simpler distribution of Istio with consolidated UX
+ content: If you’re running and scaling microservices on Kubernetes, it’s time to adopt the istio-based service mesh for your distributed system. We design a unified UI to integrate and manage tools including Istio, Envoy, Jaeger.
+ image: /images/service-mesh/banner.jpg
+
+section2:
+ title: What Makes KubeSphere Service Mesh Special
+ list:
+ - title: Traffic Management
+ image: /images/service-mesh/traffic-management.png
+ summary:
+ contentList:
+ - content: Canary release, provides canary rollouts, and staged rollouts with percentage-based traffic splits.
+ - content: Blue-green deployment allows the new version of the application to be deployed in the green environment and tested for functionality and performance.
+ - content: Traffic mirroring enables teams to bring changes to production with as little risk as possible.
+ - content: Circuit breakers allows users to set limits for calls to individual hosts within a service
+
+ - title: Visualization
+ image: /images/service-mesh/visualization.png
+ summary: observability is extremely useful in understanding cloud-native microservice interconnections. KubeSphere has the ability to visualize the connections between microservices and the topology of how they interconnect.
+ contentList:
+
+ - title: Distributed Tracing
+ image: /images/service-mesh/distributed-tracing.png
+ summary: Based on Jaeger, KubeSphere enables users to track how each service interacts with other services. It brings a deeper understanding about request latency, bottlenecks, serialization and parallelism via visualization.
+ contentList:
+
+section3:
+ title: See KubeSphere Service Mesh In Action
+ image: /images/service-mesh/15.jpg
+ content: Want to get started in action by following with the hands-on lab?
+ btnContent: Start Hands-on Lab
+ link:
+ bgLeft: /images/service-mesh/3-2.svg
+ bgRight: /images/service-mesh/3.svg
+---
\ No newline at end of file
diff --git a/layouts/404.html b/layouts/404.html
index 0bf36cdfd..8a518af0f 100644
--- a/layouts/404.html
+++ b/layouts/404.html
@@ -1,6 +1,6 @@
{{ define "main" }}
-
-
页面不存在
+
+
404
{{ end }}
\ No newline at end of file
diff --git a/layouts/observability/list.html b/layouts/observability/list.html
new file mode 100644
index 000000000..3d8c1c565
--- /dev/null
+++ b/layouts/observability/list.html
@@ -0,0 +1,52 @@
+{{ define "main" }}
+
+ {{ with .Params.section1}}
+
+
+
{{ .title }}
+
{{ .content }}
+
+ {{ end }}
+
+
+
+ {{ with .Params.section2 }}
+
+
{{ .title }}
+
+ {{ range .list }}
+
+
+
{{ .title }}
+ {{ if .summary }}
+
{{ .summary }}
+ {{ end }}
+ {{ if .contentList }}
+
+ {{ range .contentList}}
+
{{ .content | safeHTML }}
+ {{ end }}
+
+ {{ end }}
+
+
+
+ {{ end }}
+
+
+ {{ end }}
+
+
+
+ {{ with .Params.section3 }}
+
+
+
+
{{ .title }}
+
+
{{ .content }}
+
+
+ {{ end }}
+
+{{ end }}
\ No newline at end of file
diff --git a/layouts/service-mesh/list.html b/layouts/service-mesh/list.html
new file mode 100644
index 000000000..3d8c1c565
--- /dev/null
+++ b/layouts/service-mesh/list.html
@@ -0,0 +1,52 @@
+{{ define "main" }}
+
+ {{ with .Params.section1}}
+
+
+
{{ .title }}
+
{{ .content }}
+
+ {{ end }}
+
+
+
+ {{ with .Params.section2 }}
+
+
{{ .title }}
+
+ {{ range .list }}
+
+
+
{{ .title }}
+ {{ if .summary }}
+
{{ .summary }}
+ {{ end }}
+ {{ if .contentList }}
+
+ {{ range .contentList}}
+
{{ .content | safeHTML }}
+ {{ end }}
+
+ {{ end }}
+
+
+
+ {{ end }}
+
+
+ {{ end }}
+
+
+
+ {{ with .Params.section3 }}
+
+
+
+
{{ .title }}
+
+
{{ .content }}
+
+
+ {{ end }}
+
+{{ end }}
\ No newline at end of file
diff --git a/static/images/observability/flexible-alerting-and-notification.png b/static/images/observability/flexible-alerting-and-notification.png
new file mode 100644
index 000000000..69c474010
Binary files /dev/null and b/static/images/observability/flexible-alerting-and-notification.png differ
diff --git a/static/images/observability/log-query-and-collection.png b/static/images/observability/log-query-and-collection.png
new file mode 100644
index 000000000..4dec6e719
Binary files /dev/null and b/static/images/observability/log-query-and-collection.png differ
diff --git a/static/images/observability/multi-dimensional-monitoring.png b/static/images/observability/multi-dimensional-monitoring.png
new file mode 100644
index 000000000..2702bb51a
Binary files /dev/null and b/static/images/observability/multi-dimensional-monitoring.png differ
diff --git a/static/images/service-mesh/15.jpg b/static/images/service-mesh/15.jpg
new file mode 100644
index 000000000..c967fff82
Binary files /dev/null and b/static/images/service-mesh/15.jpg differ
diff --git a/static/images/service-mesh/3-2.svg b/static/images/service-mesh/3-2.svg
new file mode 100644
index 000000000..08b4568b8
--- /dev/null
+++ b/static/images/service-mesh/3-2.svg
@@ -0,0 +1,9 @@
+
diff --git a/static/images/service-mesh/3.svg b/static/images/service-mesh/3.svg
new file mode 100644
index 000000000..4dc929f93
--- /dev/null
+++ b/static/images/service-mesh/3.svg
@@ -0,0 +1,9 @@
+
diff --git a/static/images/service-mesh/banner.jpg b/static/images/service-mesh/banner.jpg
new file mode 100644
index 000000000..a0623be08
Binary files /dev/null and b/static/images/service-mesh/banner.jpg differ
diff --git a/static/images/service-mesh/distributed-tracing.png b/static/images/service-mesh/distributed-tracing.png
new file mode 100644
index 000000000..ea0ffed2b
Binary files /dev/null and b/static/images/service-mesh/distributed-tracing.png differ
diff --git a/static/images/service-mesh/traffic-management.png b/static/images/service-mesh/traffic-management.png
new file mode 100644
index 000000000..d33e5bf63
Binary files /dev/null and b/static/images/service-mesh/traffic-management.png differ
diff --git a/static/images/service-mesh/visualization.png b/static/images/service-mesh/visualization.png
new file mode 100644
index 000000000..3433c0881
Binary files /dev/null and b/static/images/service-mesh/visualization.png differ