first-build

This commit is contained in:
ll_admin 2020-04-29 15:35:58 +08:00
parent f44140f06f
commit 975432336e
122 changed files with 3369 additions and 0 deletions

9
.gitignore vendored Normal file
View File

@ -0,0 +1,9 @@
# Project dependencies
.cache
node_modules
# Build directory
/public
.DS_Store
.idea
/resources

View File

@ -1,2 +1,6 @@
# website # website
kubesphere website kubesphere website
## tip
hugo extend version

6
archetypes/default.md Normal file
View File

@ -0,0 +1,6 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,103 @@
/* BEGIN Regular */
@font-face {
font-family: Roboto;
src: url("./Roboto-Regular.woff2") format("woff2"),
url("./Roboto-Regular.woff") format("woff"),
url('./Roboto-Regular.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: Roboto;
src: url("./Roboto-Regular.woff2") format("woff2"),
url("./Roboto-Regular.woff") format("woff"),
url('./Roboto-Regular.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
/* END Regular */
/* BEGIN Italic */
@font-face {
font-family: Roboto;
src: url("./Roboto-Italic.woff2") format("woff2"),
url("./Roboto-Italic.woff") format("woff"),
url('./Roboto-Italic.ttf') format('truetype');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: Roboto;
src: url("./Roboto-Italic.woff2") format("woff2"),
url("./Roboto-Italic.woff") format("woff"),
url('./Roboto-Italic.ttf') format('truetype');
font-weight: normal;
font-style: italic;
}
/* END Italic */
/* BEGIN Medium */
@font-face {
font-family: Roboto;
src: url("./Roboto-Medium.woff2") format("woff2"),
url("./Roboto-Medium.woff") format("woff"),
url('./Roboto-Medium.ttf') format('truetype');
font-weight: 500;
font-style: normal;
}
/* END Medium */
/* BEGIN Medium Italic */
@font-face {
font-family: Roboto;
src: url("./Roboto-MediumItalic.woff2") format("woff2"),
url("./Roboto-MediumItalic.woff") format("woff"),
url('./Roboto-MediumItalic.ttf') format('truetype');
font-weight: 500;
font-style: italic;
}
/* END Medium Italic */
/* BEGIN Bold */
@font-face {
font-family: Roboto;
src: url("./Roboto-Bold.woff2") format("woff2"),
url("./Roboto-Bold.woff") format("woff"),
url('./Roboto-Bold.ttf') format('truetype');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: Roboto;
src: url("./Roboto-Bold.woff2") format("woff2"),
url("./Roboto-Bold.woff") format("woff"),
url('./Roboto-Bold.ttf') format('truetype');
font-weight: bold;
font-style: normal;
}
/* END Bold */
/* BEGIN Bold Italic */
@font-face {
font-family: Roboto;
src: url("./Roboto-BoldItalic.woff2") format("woff2"),
url("./Roboto-BoldItalic.woff") format("woff"),
url('./Roboto-BoldItalic.ttf') format('truetype');
font-weight: 700;
font-style: italic;
}
@font-face {
font-family: Roboto;
src: url("./Roboto-BoldItalic.woff2") format("woff2"),
url("./Roboto-BoldItalic.woff") format("woff"),
url('./Roboto-BoldItalic.ttf') format('truetype');
font-weight: bold;
font-style: italic;
}
/* END Bold Italic */

86
assets/scss/doc.scss Normal file
View File

@ -0,0 +1,86 @@
@import "variables";
@import "markdown";
body {
background: #eff4f9;
}
.left-div {
position: fixed;
top: 0px;
left: 0px;
width: 280px;
height: 100vh;
background-color: rgb(36, 46, 66);
box-shadow: rgba(101, 125, 149, 0.2) 4px 0px 8px 0px;
overflow-y: auto;
color: rgb(255, 255, 255);
z-index: 2;
transition: left 0.2s ease-in-out;
a {
color: #ffffff;
}
.nav-menu {
ul {
display: none;
padding-left: 20px;
}
.ul-active {
display: block;
}
li {
margin: 5px 0;
}
p {
cursor: pointer;
margin: 5px 0;
svg {
width: 16px;
height: 16px;
margin-top: 1px;
margin-right: 8px;
vertical-align: top;
transform: rotate(-90deg);
transition: all 0.2s ease;
}
.arrow-open {
transform: rotate(0deg);
}
}
.active a {
color: rgb(85, 188, 138);
}
}
}
.middle-div {
position: relative;
margin-left: 280px;
.header-div {
.logo {
height: 32px;
}
}
.content-div {
padding: 20px;
margin-right: 260px;
}
.menu-div {
position: fixed;
top: 0px;
right: 0px;
width: 240px;
padding: 10px;
height: 100vh;
overflow-y: auto;
font-size: 12px;
box-shadow: rgb(213, 222, 231) -1px 0px 0px 0px;
}
}

49
assets/scss/docs.scss Normal file
View File

@ -0,0 +1,49 @@
.logo {
height: 32px;
}
.header-div {
max-width: 1160px;
margin: 0px auto;
text-align: center;
.list-div {
text-align: left;
margin-top: 80px;
ul {
li {
margin-bottom: 10px;
h3 {
position: relative;
margin-bottom: 0px;
font-size: 16px;
font-weight: 600;
line-height: 1.75;
color: rgb(48, 62, 90);
}
p {
font-size: 12px;
line-height: 2;
letter-spacing: 0.4px;
color: rgb(101, 125, 149);
margin-bottom: 4px;
a {
display: inline-block;
padding-right: 20px;
margin: 4px 20px 4px 0px;
border-right: 1px solid rgb(213, 222, 231);
}
a:last-of-type {
padding-right: 0px;
border-right: none;
}
}
}
}
}
}

10
assets/scss/else.scss Normal file
View File

@ -0,0 +1,10 @@
html {
background-color: #f5f8f9;
}
.bg-1 {
position: absolute;
top: 0;
right: 0;
z-index: -1;
}

52
assets/scss/footer.scss Normal file
View File

@ -0,0 +1,52 @@
.footer {
width: 100%;
padding: 118px 0;
& > .footer-main {
width: 1160px;
margin: 0 auto;
& > .up-main {
& > div {
display: inline-block;
vertical-align: top;
}
.left-div {
width: 360px;
.foot-logo {
height: 32px;
}
}
.right-div {
width: 720px;
margin-left: 60px;
& > ul {
li {
display: inline-block;
margin-right: 60px;
vertical-align: top;
}
li:last-child {
margin-right: 0;
}
}
.h3 {
font-weight: 600;
line-height: 1.5;
color: #171c34;
margin-bottom: 10px;
}
a {
display: block;
line-height: 2;
color: #919aa3;
font-family: $font-family-id;
}
}
}
}
}

100
assets/scss/header.scss Normal file
View File

@ -0,0 +1,100 @@
.navigation {
position: fixed;
z-index: 10;
top: 0;
left: 0;
right: 0;
height: 100px;
vertical-align: middle;
opacity: .96;
box-shadow: 0 4px 8px 0 rgba(36,46,66,.2);
background-color: #f5f8f9!important;
border-color: transparent!important;
}
.header-container {
position: relative;
width: 1160px;
margin: 0 auto;
}
.logo {
position: absolute;
left: 0;
padding: 34px 0;
height: 32px;
}
.nav {
width: 800px;
height: 100px;
margin: 0 auto;
line-height: 100px;
text-align: center;
& > li {
display: inline-block;
margin: 0 20px;
position: relative;
color: #242e42;
font-size: 16px;
text-align: center;
line-height: 20px;
cursor: pointer;
}
& > .active {
a {
color: #55bc8a;
}
}
}
.menu-li {
position: absolute;
top: 0;
right: 0;
}
.menu-active {
span {
color: #55bc8a;
}
.active {
a {
color: #55bc8a;
}
}
}
.menu-li:hover .dropdown-menu {
display: block;
}
.dropdown-menu {
display: none;
position: absolute;
width: 200px;
left: 50%;
transform: translateX(-50%);
padding-left: 0;
background: #ffffff;
text-align: center;
line-height: 30px;
.active {
a {
color: #55bc8a;
}
}
}
.language-menu {
top: 40px;
cursor: pointer;
.dropdown-menu {
width: 120px;
}
}
.main-section {
padding-top: 100px;
}

408
assets/scss/home.scss Normal file
View File

@ -0,0 +1,408 @@
@import 'reset';
@import 'variables';
@import 'else';
@import 'header';
@import 'footer';
.section-div-1 {
width: 1160px;
margin: 0 auto;
.banner-title {
display: inline-block;
vertical-align: top;
width: 460px;
margin-top: 140px;
margin-right: 25px;
.banner-activities {
padding: 8px 12px;
margin-bottom: 40px;
border-radius: 22px;
background-color: #e3e9ef;
.banner-tag {
height: 24px;
min-width: 58px;
padding: 2px 12px;
margin-right: 12px;
border-radius: 4px;
background-image: linear-gradient(152deg,#51b484,#329dce);
font-size: 14px;
font-weight: 600;
line-height: 20px;
box-sizing: border-box;
text-align: center;
color: #fff;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
a {
display: inline-block;
font-family: $font-family-id;
font-size: 14px;
line-height: 24px;
color: #36435c;
word-break: keep-all;
white-space: pre;
}
}
.h1 {
font-family: $font-family-id;
font-size: 30px;
font-weight: 600;
line-height: 1.4;
color: #171c34;
text-shadow: 0 8px 16px rgba(35,45,65,.16);
margin-bottom: 16px;
}
.banner-sub-title {
margin-bottom: 16px;
text-shadow: 0 8px 16px rgba(35,45,65,.16);
color: #171c34;
}
p {
font-family: $font-family-id;
font-size: 16px;
line-height: 2;
color: #919aa3;
margin-bottom: 20px;
}
.install-button {
margin-top: 20px;
margin-right: 13px;
padding: 7px 20px;
font-weight: 600;
color: #fff;
background-color: #242e42;
box-shadow: 0 10px 50px 0 rgba(34,43,62,.1), 0 8px 16px 0 rgba(33,43,61,.2);
height: 48px;
border-radius: 30px;
font-size: 16px;
border: none;
}
}
.banner-snapshot {
position: relative;
display: inline-block;
vertical-align: top;
width: 670px;
height: 440px;
margin-top: 40px;
.banner-snapshot-sub {
position: absolute;
top: 10px;
left: 314px;
width: 280px;
}
}
}
.section-div-2 {
width: 1160px;
margin: 0 auto;
padding-top: 120px;
text-align: center;
.h1 {
font-size: 32px;
line-height: 1.63;
color: #171c34;
text-shadow: 0 4px 8px rgba(35,45,65,.1);
margin-bottom: 20px;
}
& > p {
width: 640px;
font-size: 14px;
margin: 0 auto 50px;
line-height: 2;
color: #485b7f;
}
.feature-cards {
font-size: 0;
.feature-card + .feature-card {
margin-left: 40px;
}
.feature-card {
display: inline-block;
width: 280px;
height: 280px;
padding: 60px 40px;
border-radius: 8px;
background-color: #fff;
vertical-align: top;
img {
width: 60px;
height: 60px;
margin-bottom: 30px;
}
.h2 {
font-size: 24px;
margin-bottom: 20px;
line-height: 1.33;
color: #4d5566;
text-shadow: 0 4px 8px rgba(35,45,65,.1);
}
p {
line-height: 1.71;
color: #8f94a1;
font-size: 14px;
a {
color: #8f94a1;
}
}
}
}
}
.section-div-3 {
padding-bottom: 60px;
padding-top: 120px;
text-align: center;
.app-install-title {
position: relative;
padding: 80px 0;
height: 268px;
min-width: 1188px;
text-align: center;
background-image: linear-gradient(115deg,#4a499a,#8552c3);
.left {
position: absolute;
top: 0;
left: 0;
}
.right {
position: absolute;
top: 130px;
right: 0;
}
div {
font-family: $font-family-id;
text-align: center;
color: #fff;
text-shadow: 0 8px 16px rgba(35,45,65,.16);
font-size: 32px;
font-weight: 600;
line-height: 1.75;
}
p {
max-width: 752px;
height: 64px;
margin: 16px auto 0;
font-size: 16px;
line-height: 2;
font-family: $font-family-id;
text-align: center;
color: #fff;
}
}
.slider-wrapper {
position: relative;
margin: -132px auto 0;
height: 612px;
width: 1188px;
border-radius: 8px;
box-shadow: 0 2px 4px 0 rgba(36,46,66,.12);
background-color: #fff;
overflow: hidden;
.slider-repeat {
position: relative;
-webkit-animation: scrollUp 30s linear infinite;
animation: scrollUp 30s linear infinite;
font-size: 0;
text-align: center;
.app {
display: inline-block;
width: 260px;
height: 128px;
padding: 0 6px;
margin-right: 12px;
margin-bottom: 12px;
border-radius: 4px;
box-shadow: 0 4px 8px 0 rgba(36,46,66,.06), 0 8px 16px 0 rgba(36,46,66,.12);
background-color: #fff;
text-align: left;
vertical-align: top;
.app-header {
display: flex;
padding: 12px 6px;
border-bottom: 1px solid #e3e9ef;
.app-icon {
width: 40px;
height: 40px;
margin-right: 12px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.app-title {
display: inline;
.app-name {
font-family: $font-family-id;
font-size: 12px;
font-weight: 600;
line-height: 20px;
color: #242e42;
}
.app-version {
font-size: 12px;
font-weight: 400;
line-height: 20px;
color: #79879c;
}
}
}
.app-desc {
height: 30px;
padding: 12px 6px;
font-family: PingFang SC,Lantinghei SC,Helvetica Neue,Helvetica,Arial,Microsoft YaHei,,STHeitiSC-Light,simsun,,WenQuanYi Zen Hei,WenQuanYi Micro Hei,sans-serif;
overflow: hidden;
font-size: 12px;
font-weight: 400;
line-height: 20px;
color: #79879c;
}
}
}
}
}
@keyframes scrollUp {
0% {
-webkit-transform: translateY(0);
transform: translateY(0);
}
100% {
-webkit-transform: translateY(-840px);
transform: translateY(-840px);
}
}
.section-div-4 {
width: 1160px;
margin: 0 auto;
padding-top: 120px;
text-align: center;
.h1 {
font-size: 32px;
line-height: 1.63;
color: #171c34;
text-shadow: 0 4px 8px rgba(35,45,65,.1);
margin-bottom: 20px;
}
& > p {
width: 640px;
font-size: 16px;
margin: 0 auto 50px;
line-height: 2;
color: #485b7f;
}
.contribute-cards {
width: 100%;
max-width: 1188px;
margin: 0 auto;
.contribute-card {
width: 100%;
padding: 40px;
border-radius: 8px;
margin-top: 24px;
background-color: #fff;
-webkit-transition: all .3s ease;
transition: all .3s ease;
text-align: left;
.contribute-title {
margin-bottom: 12px;
font-size: 18px;
font-weight: 600;
line-height: 1.56;
color: #171c34;
}
p {
line-height: 1.71;
color: #485b7f;
font-family: $font-family-id;
}
li {
position: relative;
font-family: $font-family-id;
line-height: 2.14;
color: #919aa3;
word-break: break-all;
}
a {
color: #55bc8a;
}
}
li:before {
content: "";
display: block;
position: absolute;
top: 14px;
left: -18px;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
width: 6px;
height: 6px;
border-radius: 50%;
background-color: #55bc8a;
}
}
}
.section-div-5 {
display: flex;
justify-content: center;
min-height: 120px;
margin-top: 48px;
padding: 30px 0;
background-color: rgba(143,148,161,.06);
text-align: center;
& > div {
font-size: 16px;
line-height: 2;
color: #919aa3;
img {
height: 60px;
}
}
}

466
assets/scss/markdown.scss Normal file
View File

@ -0,0 +1,466 @@
$mobile-max-width: 768px;
.md-body {
font-family: $font-family-id;
font-size: 16px;
line-height: 2;
word-wrap: break-word;
color: #485b7f;
}
.md-body::before {
display: table;
content: '';
}
.md-body::after {
display: table;
clear: both;
content: '';
}
.md-body > *:first-child {
margin-top: 0 !important;
}
.md-body > *:last-child {
margin-bottom: 0 !important;
}
.md-body a {
color: #55bc8a;
text-decoration: none;
}
.md-body .absent {
color: #cb2431;
}
.md-body .anchor {
float: left;
padding-right: 4px;
margin-left: -20px;
line-height: 1;
}
.md-body .anchor:focus {
outline: none;
}
.md-body p,
.md-body blockquote,
.md-body ul,
.md-body ol,
.md-body dl,
.md-body table,
.md-body pre {
margin: 0 0 12px;
}
.md-body hr {
height: 0.25em;
padding: 0;
margin: 24px 0;
background-color: #e1e4e8;
border: 0;
}
.md-body blockquote {
padding: 0 1em;
border-left: 4px solid #cfd9df;
font-size: 14px;
line-height: 1.71;
color: #8f94a1;
}
.md-body blockquote > p {
font-size: 14px;
line-height: 1.71;
color: #8f94a1;
}
.md-body blockquote > :first-child {
margin-top: 0;
}
.md-body blockquote > :last-child {
margin-bottom: 0;
}
.md-body kbd {
display: inline-block;
padding: 3px 5px;
font-size: 11px;
line-height: 10px;
color: #444d56;
vertical-align: middle;
background-color: #fafbfc;
border: solid 1px #c6cbd1;
border-bottom-color: #959da5;
border-radius: 3px;
box-shadow: inset 0 -1px 0 #959da5;
}
.md-body h1,
.md-body h2,
.md-body h3,
.md-body h4,
.md-body h5,
.md-body h6 {
margin-top: 30px;
margin-bottom: 20px;
font-weight: 600;
line-height: 1.5;
color: #171c34;
}
.md-body h1 .octicon-link,
.md-body h2 .octicon-link,
.md-body h3 .octicon-link,
.md-body h4 .octicon-link,
.md-body h5 .octicon-link,
.md-body h6 .octicon-link {
color: #1b1f23;
vertical-align: middle;
visibility: hidden;
}
.md-body h1:hover .anchor,
.md-body h2:hover .anchor,
.md-body h3:hover .anchor,
.md-body h4:hover .anchor,
.md-body h5:hover .anchor,
.md-body h6:hover .anchor {
text-decoration: none;
}
.md-body h1:hover .anchor .octicon-link,
.md-body h2:hover .anchor .octicon-link,
.md-body h3:hover .anchor .octicon-link,
.md-body h4:hover .anchor .octicon-link,
.md-body h5:hover .anchor .octicon-link,
.md-body h6:hover .anchor .octicon-link {
visibility: visible;
}
.md-body h1 tt,
.md-body h1 code,
.md-body h2 tt,
.md-body h2 code,
.md-body h3 tt,
.md-body h3 code,
.md-body h4 tt,
.md-body h4 code,
.md-body h5 tt,
.md-body h5 code,
.md-body h6 tt,
.md-body h6 code {
font-size: inherit;
}
.md-body h1 {
padding-bottom: 0.3em;
font-size: 2em;
border-bottom: 1px solid #eaecef;
}
.md-body h2 {
font-size: 32px;
font-weight: normal;
line-height: 1.63;
text-align: center;
color: #171c34;
text-shadow: 0 4px 8px rgba(35, 45, 65, 0.1);
margin-bottom: 60px;
@media only screen and (max-width: $mobile-max-width) {
margin-bottom: 20px;
}
}
.md-body h3 {
font-size: 1.4em;
}
.md-body h4 {
font-size: 1.2em;
}
.md-body h5 {
font-size: 1em;
}
.md-body h6 {
font-size: 0.85em;
color: #6a737d;
}
.md-body ul,
.md-body ol {
padding-left: 2em;
}
.md-body ul.no-list,
.md-body ol.no-list {
padding: 0;
list-style-type: none;
}
.md-body ul ul,
.md-body ul ol,
.md-body ol ol,
.md-body ol ul {
margin-top: 0;
margin-bottom: 0;
}
.md-body li {
word-wrap: break-word;
}
.md-body li > p {
margin-top: 16px;
}
.md-body li + li {
margin-top: 0.25em;
}
.md-body dl {
padding: 0;
}
.md-body dl dt {
padding: 0;
margin-top: 16px;
font-size: 1em;
font-style: italic;
font-weight: 600;
}
.md-body dl dd {
padding: 0 16px;
margin-bottom: 16px;
}
.md-body table {
display: table;
width: 100%;
overflow: auto;
border-collapse: collapse;
}
.md-body table th {
font-weight: 600;
border-radius: 3px;
background-color: #ecf0f2;
border: solid 1px #cfd9df;
text-align: left;
}
.md-body table th,
.md-body table td {
padding: 6px 13px;
border: 1px solid #dfe2e5;
}
.md-body table tr {
background-color: #fff;
border-top: 1px solid #c6cbd1;
}
.md-body table tr:nth-child(2n) {
background-color: #f6f8fa;
}
.md-body table img {
background-color: transparent;
}
.md-body img {
max-width: 100%;
box-sizing: content-box;
background-color: #fff;
border-radius: 5px;
box-shadow: 0 4px 15px 0 rgba(7, 42, 68, 0.1);
}
.md-body img[align='right'] {
padding-left: 20px;
}
.md-body img[align='left'] {
padding-right: 20px;
}
.md-body .emoji {
max-width: none;
vertical-align: text-top;
background-color: transparent;
}
.md-body span.frame {
display: block;
overflow: hidden;
}
.md-body span.frame > span {
display: block;
float: left;
width: auto;
padding: 7px;
margin: 13px 0 0;
overflow: hidden;
border: 1px solid #dfe2e5;
}
.md-body span.frame span img {
display: block;
float: left;
}
.md-body span.frame span span {
display: block;
padding: 5px 0 0;
clear: both;
color: #24292e;
}
.md-body span.align-center {
display: block;
overflow: hidden;
clear: both;
}
.md-body span.align-center > span {
display: block;
margin: 13px auto 0;
overflow: hidden;
text-align: center;
}
.md-body span.align-center span img {
margin: 0 auto;
text-align: center;
}
.md-body span.align-right {
display: block;
overflow: hidden;
clear: both;
}
.md-body span.align-right > span {
display: block;
margin: 13px 0 0;
overflow: hidden;
text-align: right;
}
.md-body span.align-right span img {
margin: 0;
text-align: right;
}
.md-body span.float-left {
display: block;
float: left;
margin-right: 13px;
overflow: hidden;
}
.md-body span.float-left span {
margin: 13px 0 0;
}
.md-body span.float-right {
display: block;
float: right;
margin-left: 13px;
overflow: hidden;
}
.md-body span.float-right > span {
display: block;
margin: 13px auto 0;
overflow: hidden;
text-align: right;
}
.md-body code,
.md-body tt {
padding: 0.2em 0.4em;
margin: 0;
font-size: 85%;
background-color: rgba(27, 31, 35, 0.05);
border-radius: 3px;
}
.md-body code br,
.md-body tt br {
display: none;
}
.md-body del code {
text-decoration: inherit;
}
.md-body pre {
word-wrap: normal;
}
.md-body pre > code {
display: inline-block;
white-space: pre;
font-family: Monaco;
font-size: 14px;
line-height: 1.71;
color: #ffffff;
}
.md-body .highlight {
margin-bottom: 16px;
}
.md-body .highlight pre {
margin-bottom: 0;
word-break: normal;
}
.md-body .highlight pre,
.md-body pre {
margin-bottom: 20px;
overflow: auto;
font-size: 85%;
line-height: 1.45;
border-radius: 5px;
background-color: #242e42;
border: solid 1px #242e42;
}
.md-body .csv-data td,
.md-body .csv-data th {
padding: 5px;
overflow: hidden;
font-size: 12px;
line-height: 1;
text-align: left;
white-space: nowrap;
}
.md-body .csv-data .blob-num {
padding: 10px 8px 9px;
text-align: right;
background: #fff;
border: 0;
}
.md-body .csv-data tr {
border-top: 0;
}
.md-body .csv-data th {
font-weight: 600;
background: #f6f8fa;
border-top: 0;
}

30
assets/scss/reset.scss Normal file
View File

@ -0,0 +1,30 @@
body,div,dl,dt,dd,ul,ol,li,tr,td,th,
h1,h2,h3,h4,h5,h6,hr,br,img,table,
input,form,a,p,textarea{
padding: 0;
margin: 0;
}
ul,ol,li{
list-style: none;
}
a{
text-decoration: none;
color: black;
}
img{
border: 0;
}
.clearfloat {
zoom: 1;
}
.clearfloat:after {
display: block;
clear: both;
content: "";
visibility: hidden;
height: 0;
}

View File

@ -0,0 +1,4 @@
$font-family: 'PingFang SC', 'Lantinghei SC', 'Helvetica Neue', Helvetica, Arial,
'Microsoft YaHei', 微软雅黑, STHeitiSC-Light, simsun, 宋体,
'WenQuanYi Zen Hei', 'WenQuanYi Micro Hei', sans-serif;
$font-family-id: Roboto, $font-family;

125
config.toml Normal file
View File

@ -0,0 +1,125 @@
baseURL = "http://example.org/"
languageCode = "en-us"
[params]
logo = "images/logo.svg"
bg1 = "images/bg-1.svg"
img1 = "images/1.svg"
img2 = "images/2.png"
left = "images/left.svg"
right = "images/right.svg"
cloud = "images/cloud-native1.png"
certified = "images/certified.svg"
[languages.en]
title = "KubeSphere | Enterprise container platform, built on Kubernetes"
description = "KubeSphere is an open source container platform based on Kubernetes for enterprise app development and deployment, suppors installing anywhere from on-premise datacenter to any cloud to edge."
languageName ="English"
contentDir = "content/en"
weight = 1
[[languages.en.menu.main]]
weight = 1
name = "Open Source"
hasChildren = true
[[languages.en.menu.main]]
parent = "Open Source"
name = "Open Source Projects"
URL = "projects"
weight = 1
[[languages.en.menu.main]]
parent = "Open Source"
name = "KubeCon & QCon"
URL = "conferences"
weight = 2
[[languages.en.menu.main]]
parent = "Open Source"
name = "Technology Blogs"
URL = "blogs"
weight = 3
[[languages.en.menu.main]]
parent = "Open Source"
name = "Video Resources"
URL = "videos"
weight = 4
[[languages.en.menu.main]]
name = "Quick Installation"
URL = "install"
weight = 2
[[languages.en.menu.main]]
weight = 3
name = "Documentation"
URL = "docs"
[[languages.en.menu.main]]
weight = 4
name = "Forum"
URL = "forum"
[[languages.en.menu.main]]
weight = 5
name = "News"
URL = "trends"
[languages.zh]
title = "KubeSphere-以应用为中心的开源容器平台"
description = "KubeSphere 是在 Kubernetes 之上构建的以应用为中心的开源容器平台,支持部署和运行在任何基础设施之上,帮助企业轻松应对敏捷开发、自动化运维、应用快速交付、微服务治理、多租户管理、监控日志告警、服务与网络管理等业务场景"
languageName = "简体中文"
weight = 2
contentDir = "content/zh"
[[languages.zh.menu.main]]
weight = 1
name = "开源社区"
hasChildren = true
[[languages.zh.menu.main]]
parent = "开源社区"
name = "开源项目"
URL = "projects"
weight = 1
[[languages.zh.menu.main]]
parent = "开源社区"
name = "KubeCon & QCon"
URL = "conferences"
weight = 2
[[languages.zh.menu.main]]
parent = "开源社区"
name = "技术博客"
URL = "blogs"
weight = 3
[[languages.zh.menu.main]]
parent = "开源社区"
name = "视频资源"
URL = "videos"
weight = 4
[[languages.zh.menu.main]]
name = "快速安装"
URL = "install"
weight = 2
[[languages.zh.menu.main]]
weight = 3
name = "文档中心"
URL = "docs"
[[languages.zh.menu.main]]
weight = 4
name = "开发者社区"
URL = "forum"
[[languages.zh.menu.main]]
weight = 5
name = "动态"
URL = "trends"

View File

@ -0,0 +1,4 @@
---
title: "page1"
---

View File

@ -0,0 +1,4 @@
---
title: "page1"
---

View File

@ -0,0 +1,4 @@
---
title: "docs"
---

View File

@ -0,0 +1,9 @@
---
title: "introductions"
weight: 1
_build:
render: false
description: "Help you to better understand KubeSphere with detailed graphics and contents"
---

View File

@ -0,0 +1,118 @@
---
title: "all-in-one"
weight: 2
---
## All-in-One Installation
For those who are new to KubeSphere and looking for a quick way to discover the platform, the all-in-one mode is your best choice to install it since it is one-click and hassle-free configuration installation with provisioning KubeSphere and Kubernetes on your machine.
## Prerequisites
If your machine is behind a firewall, you need to open the ports by following the document [Ports Requirement](https://kubesphere.io/docs/v2.1/en/installation/port-firewall/) for more information.
## Step 1: Prepare Linux Machine
A Linux machine that is either a virtual machine or bare metal. This machine requires at a minimum:
- Hardware:
- CPU: 2 Cores for minimal, 8 Cores for complete setup
- Memory: 4 GB for minimal, 16 GB for complete setup
- Operating Systems:
- CentOS 7.4 ~ 7.7 (`64-bit`)
- Ubuntu 16.04/18.04 LTS (`64-bit`)
- RHEL 7.4 (`64-bit`)
- Debian Stretch 9.5 (`64-bit`)
> - For `Ubuntu 16.04` OS, it's recommended to select the latest `16.04.5`.
> - If you are using Ubuntu 18.04, you need to use the root user to install.
> - If the Debian system does not have the sudo command installed, you need to execute the `apt update && apt install sudo` command using root before installation.
## Step 2: Download Installer Package
Execute the following commands to download Installer 2.1.1 and unpack it.
```bash
$ curl -L https://kubesphere.io/download/stable/latest > installer.tar.gz \
&& tar -zxf installer.tar.gz && cd kubesphere-all-v2.1.1/scripts
```
> Please note: the installer will be started with a default minimal installation only, if there are 8 Cores and 16 GB RAM available in your machine, please enable more pluggable components in `kubesphere-all-v2.1.1/conf/common.yaml`, see [Complete Installation](https://kubesphere.io/docs/v2.1/en/installation/complete-installation/)
## Step 3: Get Started with Installation
You should not do anything except executing one command as follows. The installer will complete all things for you automatically including install/update dependency packages, install Kubernetes (Defaults to 1.16.7), storage service and so on.
**Note:**
> - Generally speaking, do not modify any configuration.
> - KubeSphere installs `calico` by default. If you would like to use a different network plugin, you are allowed to change the configuration in `conf/common.yaml`. You are also allowed to modify other configurations such as storage class, pluggable components, etc.
> - The default storage class is [OpenEBS](https://openebs.io/) which is a kind of [Local Volume](https://kubernetes.io/docs/concepts/storage/volumes/#local) to provision persistence storage service. OpenEBS supports [dynamic provisioning PV](https://docs.openebs.io/docs/next/uglocalpv.html#Provision-OpenEBS-Local-PV-based-on-hostpath). It will be installed automatically for your testing environment.
> - Please refer [storage configurations](https://kubesphere.io/docs/v2.1/en/installation/storage-configuration/) for supported storage class.
> - Since the default subnet for Cluster IPs is 10.233.0.0/18, and the default subnet for Pod IPs is 10.233.64.0/18, the node IPs must not use the two IP range. You can modify the default subnets `kube_service_addresses` or `kube_pods_subnet` in the file `conf/common.yaml` to avoid conflicts.
**1.** Execute the following command:
```
$ ./install.sh
```
**2.** Enter `1` to select `all-in-one` mode to start:
```bash
################################################
KubeSphere Installer Menu
################################################
* 1) All-in-one
* 2) Multi-node
* 3) Quit
################################################
https://kubesphere.io/ 2020-02-24
################################################
Please input an option: 1
```
**3.** Verify if KubeSphere is installed successfully or not
**(1).** If you see "Successful" returned after installation completed, it means your environment is ready to use. The console service is exposed through nodeport 30880 by default.
```bash
successsful!
#####################################################
### Welcome to KubeSphere! ###
#####################################################
Console: http://192.168.0.8:30880
Account: admin
Password: P@88w0rd
NOTEPlease modify the default password after login.
#####################################################
```
> Note: The information above is saved in a log file that you can view by following the [guide](https://kubesphere.io/docs/v2.1/en/installation/verify-components/).
**(2).** You will be able to use default account and password to log in the console to take a tour of KubeSphere.
<font color=red>Note: After log in console, please verify the monitoring status of service components in the "Cluster Status". If any service is not ready, please wait patiently untill all components get running up.</font>
![](https://pek3b.qingstor.com/kubesphere-docs/png/20191125003158.png)
### Enable Pluggable Components
If you start with a default minimal installation, execute the following command to open the configmap in order to enable more pluggable components at your will. Make sure your cluster has enough CPU and memory, see [Enable Pluggable Components](https://kubesphere.io/docs/v2.1/en/installation/pluggable-components/).
```bash
kubectl edit cm -n kubesphere-system ks-installer
```
### FAQ
If you have further questions please do not hesitate to raise issues on [GitHub](https://github.com/kubesphere/kubesphere/issues).

View File

@ -0,0 +1,25 @@
---
title: "what-is-kubesphere"
weight: 1
---
# what-is-kubesphere
测试markdown
## second
测试markdown
## second
测试markdown
## second
测试markdown
## second
测试markdown

View File

@ -0,0 +1,7 @@
---
title: "quick-start"
weight: 2
description: "Get a quick overview of the basic features of KubeSphere with several quick-start examples."
_build:
render: false
---

View File

@ -0,0 +1,145 @@
---
title: "quick-start-guide"
weight: 1
---
## Objective
In this quickstart, as a cluster admin, you will learn how to create workspaces, roles and user accounts, and then invite new users into the workspace to create their projects and DevOps projects. This tutorial is used to help beginners to become familiar with multi-tenant management.
## Prerequisites
- You need to [install KubeSphere](https://kubesphere.io/en/install).
- You need a default admin account.
## Hands-on Lab
Generally, the hierarchy relationship of Cluster, Workspace, Project and DevOps Project showing as the following graph, and there are common built-in roles existed in these orgnizations within each level.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716231511.png)
### Cluster Admin
The role of cluster-admin is able to create accounts for other users and assign roles to them. There are three common roles in cluster level, it also supports customizing new roles.
|Built-in Roles|Responsibility|
|---|---|
|cluster-admin|Have the highest privileges for the cluster, can manage any resources|
|workspaces-manager|The workspace managers, can manage all of the resources, e.g. projects, DevOps projects, members and roles |
|cluster-regular| The regular users in the cluster, they are not authorized until they have been invited to the workspace|
#### Step 1: Create roles and accounts
First, we will create a new role (user-manager), grants account management and role management authority to this role, then we will create an account and grant the user-manager role to this account.
|Account Name|Cluster Role|Responsibility|
|---|---|---|
|user-manager|user-manager|Manage cluster accounts and roles|
1.1 To get started, login KubeSphere with the `admin` account, click **Platform** and then navigate to **Platform Roles** page, click **Create** to create a role which is used to manage all accounts and roles.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716112614.png)
1.2. Fill in the basic information and authority settings of the role, e.g. `Name : user-manager`.
1.3. Check all the boxes for both **Account Management** and **Role Management**, then click **Create**.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716112826.png)
1.4. Click **Platform**, then navigate to **Accounts** page and click **Create** to create an account.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716112945.png)
1.5. Fill in the basic information, notice that select `user-manger` as its role.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716113050.png)
1.6. Log out and Sign in with the `user-manager` account, then navigate to **Account** and create 4 accounts according to the following table. Please reference the above steps to create these 4 accounts.
|Account Name|Cluster Role|Responsibility|
|---|---|---|
|ws-manager|workspaces-manager|Create and manage all workspaces|
|ws-admin|cluster-regular|Manage all resources under the specified workspace<br> (This example is used to invite new members to join the workspace.)|
|project-admin|cluster-regular|Create and manage projects, DevOps projects, invite new members|
|project-regular|cluster-regular|The regular user will be invited to the project and DevOps project by the project-admin, <br> we use this account to create workloads, pipelines and other resources under the specified project|
1.7. Verify the 4 accounts that we created in step 1.6.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716114245.png)
### Workspace Admin
#### Step 2: Create a Workspace
Workspace is the base of implementing the multi-tenant mechanism, it's also the base unit for projects and DevOps projects managment.
2.1. Sign in with `ws-manager` that we created in Step 1, then click **Workspace** and click **Create Workspace**, name it as demo-workspace and appoint `ws-admin` as Workspace Manager, who has the highest administrative authority of the workspace.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716130007.png)
2.2. Logout and sign in with `ws-admin` after `demo-workspace` has been created. Then click **View Workspace**, select **Worksapce Management → Members Management** and click **Invite Member**.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716130330.png)
2.3. Invite both `project-admin` and `project-regular` and grant them `workspace-regular` accordingly, click **OK** to save it. Now there are 3 members in the `demo-workspace`.
|User Name|Role in the Workspace|Responsibility|
|---|---|---|
|ws-admin|workspace-admin|Manage all resources under the workspace<br> (We use this account to invite new members into the workspace)|
|project-admin|workspace-regular|Create and manage projects, DevOps projects, and invite new members to join|
|project-regular|workspace-viewer|Will be invited by project-admin to join the project and DevOps project. <br> we use this account to create workloads, pipelines, etc|
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716130517.png)
### Project Admin and DevOps Admin
#### Step 3: Create a Project
3.1. Sign in with `project-admin` that we created in Step 1, then click **Create** and select **Create a resource project**.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716131852.png)
3.2. Name it as `demo-project` and keep the advanced settings as the default values, then click **Create**.
3.3. Choosing **Project Settings → Project Members** and click **Invite Member**.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716132750.png)
3.4. Invite `project-regular` to this project and grant this user **operator** accordingly.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716132840.png)
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716132920.png)
#### Step 4: Set the Gateway
Before creating a route, you need to enable a gateway for this project.
4.1. We still use `project-admin`, Choose **Project Settings → Internet Access** and click **Set Gateway**.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716134430.png)
4.2. Keep the access method as `NodePort` and click `Save`.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716134742.png)
4.3. Now we are able to see the Gateway Address (192.168.0.88), the NodePort of http and https respectively.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716134849.png)
#### Step 5: Create DevOps Project
5.1. In this step, click **Projects** and click `Create Project` button, then select **Create a DevOps project**.
5.2. Fill in the basic information, e.g. `demo-devops`, then click **Create** button, it will jump to `demo-devops` page.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716133420.png)
5.3. Similarly, navigate to **Project Management → Project Members**, then click **Invite Member** and grant `project-regular` as the role of `maintainer`, which is used to create pipeline, credentials, etc.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716133626.png)
## Next Step
Tutorial 2 - [Expose your App: Create a Service and Ingress](ingress-demo.md).

View File

@ -0,0 +1,6 @@
---
title: "second"
weight: 2
_build:
render: false
---

View File

@ -0,0 +1,21 @@
---
title: "second-a"
weight: 2
---
## second
测试markdown
## second
测试markdown
## second
测试markdown
## second
测试markdown

View File

@ -0,0 +1,7 @@
---
title: "third"
weight: 1
_build:
render: false
---

View File

@ -0,0 +1,20 @@
---
title: "aaaaaa"
weight: 1
---
## second
测试markdown
## second
测试markdown
## second
测试markdown
## second
测试markdown

View File

@ -0,0 +1,4 @@
---
title: "page1"
---

View File

@ -0,0 +1,4 @@
---
title: "page1"
---

View File

@ -0,0 +1,4 @@
---
title: "About"
---

View File

@ -0,0 +1,4 @@
---
title: "second"
---

View File

@ -0,0 +1,4 @@
---
title: "page1"
---

View File

@ -0,0 +1,4 @@
---
title: "page1"
---

View File

@ -0,0 +1,4 @@
---
title: "page1"
---

View File

@ -0,0 +1,4 @@
---
title: "page1"
---

View File

@ -0,0 +1,4 @@
---
title: "docs"
---

View File

@ -0,0 +1,9 @@
---
title: "介绍"
weight: 1
_build:
render: false
description: "介绍"
---

View File

@ -0,0 +1,115 @@
---
title: "all-in-one"
weight: 2
---
## All-in-One 模式
对于首次接触 KubeSphere 的用户,想寻找一个最快安装和体验 KubeSphere 的方式All-in-One 模式支持一键安装 KubeSphere 和 Kubernetes 至一台目标机器。
> 提示:
> - KubeSphere 2.1 已支持 `自定义安装各个功能组件`,默认仅开启`最小化安装`,用户可根据**机器配置选择安装所需要的组件**,参考 [安装说明](https://kubesphere.io/docs/v2.1/zh-CN/installation/intro/#自定义安装可插拔的功能组件) 开启可选组件的安装。
> - 若在云平台使用在线安装,可在安装前 [配置镜像加速器](https://kubesphere.com.cn/forum/d/149-kubesphere-v2-1-0),或通过调高带宽的方式来加快安装速度。
## 前提条件
建议关闭机器的防火墙,若未关闭防火墙则需要开放相关端口,参考 [需开放的端口](https://kubesphere.io/docs/v2.1/zh-CN/installation/port-firewall/)。
## 第一步: 准备主机
1. 本文将演示 All-in-One 安装,请准备一台干净的机器(虚拟机或物理机),安装前关闭防火墙,并确保您的机器符合以下的最小要求:
- 机器配置:
- CPU: 最小化安装需 2 Cores完整安装需 8 Cores
- Memory: 最小化安装需 4 GB完整安装需 16 GB
- 操作系统:
- CentOS 7.4 ~ 7.7 (64-bit)
- Ubuntu 16.04/18.04 LTS (64-bit)
- RHEL 7.4 (64-bit)
- Debian Stretch 9.5 (64-bit)
> 说明:
> - 若使用 ubuntu 16.04 建议使用其最新的版本 16.04.5
> - 若使用 ubuntu 18.04,则需要使用 root 用户;
> - 若 Debian 系统未安装 sudo 命令,则需要在安装前使用 root 用户执行 `apt update && apt install sudo` 命令安装 sudo 命令后再进行安装。
## 第二步: 准备安装包
下载 `KubeSphere 2.1.1` 安装包至待安装机器,进入安装目录。
```bash
curl -L https://kubesphere.io/download/stable/v2.1.1 > installer.tar.gz \
&& tar -zxf installer.tar.gz && cd kubesphere-all-v2.1.1/scripts
```
> 注意: Installer 默认仅开启了最小化安装,若需要开启所有组件进行完整安装,请在 `kubesphere-all-v2.1.1/conf/common.yaml` 中将可选功能组件设置为 true请参考 [完整安装](https://kubesphere.com.cn/docs/v2.1/zh-CN/installation/complete-installation/),或在最小化安装后再开启可插拔功能组件。
## 第三步: 安装 KubeSphere
> 注意:由于 Kubernetes 集群的 Cluster IP 子网网段默认是 `10.233.0.0/18`Pod 的子网网段默认是 `10.233.64.0/18`,因此安装 KubeSphere 的节点 IP 地址范围不应与以上两个网段有重复,若遇到地址范围冲突可在配置文件 `conf/vars.yaml` 修改 `kube_service_addresses``kube_pods_subnet` 的参数。
参考以下步骤开始 all-in-one 安装:
**1.** 建议使用 `root` 用户安装,执行 `install.sh` 脚本:
```bash
$ ./install.sh
```
**2.** 输入数字 `1` 选择第一种即 all-in-one 模式开始安装:
```bash
################################################
KubeSphere Installer Menu
################################################
* 1) All-in-one
* 2) Multi-node
* 3) Quit
################################################
https://kubesphere.io/ 2020-02-24
################################################
Please input an option: 1
```
**3.** 测试 KubeSphere 单节点安装是否成功:
**(1)** 待安装脚本执行完后,当看到如下 `"Successful"` 界面,则说明 KubeSphere 安装成功。
> 说明:安装时间跟网络情况和带宽、机器配置、安装节点个数等因素有关,已测试过的 all-in-one 模式,在网络良好的情况下以规格列表最小配置安装用时大约为 20 分钟。
```bash
successsful!
#####################################################
### Welcome to KubeSphere! ###
#####################################################
Console: http://192.168.0.8:30880
Account: admin
Password: P@88w0rd
NOTEPlease modify the default password after login.
#####################################################
```
> 提示:如需要再次查看以上的界面信息,可在安装包目录下执行 `cat kubesphere/kubesphere_running` 命令查看。
**(2)** 安装成功后,浏览器访问对应的 URL`http://{$IP}:30880`,即可进入 KubeSphere 登录界面,可使用默认的用户名和密码登录 KubeSphere 控制台体验,**登录后请立即修改默认密码**。参阅 [快速入门](https://kubesphere.io/docs/v2.1/zh-CN/quick-start/quick-start-guide/) 帮助您快速上手 KubeSphere。
> 提示:若需要在外网访问,请配置防火墙的端口策略,确保外网流量可以通过 30880 端口。
![](https://pek3b.qingstor.com/kubesphere-docs/png/20191020153911.png)
<font color=red>注意:登陆 Console 后请在 "集群状态" 查看服务组件的监控状态,待所有组件启动完成后即可开始使用,通常所有服务组件都将在 10 分钟内启动完成。</font>
![](https://pek3b.qingstor.com/kubesphere-docs/png/20191014095317.png)
若遇到安装问题需要协助支持,请在 [社区论坛](https://kubesphere.com.cn/forum/) 搜索解决方法或发布帖子,社区会尽快跟踪解决。

View File

@ -0,0 +1,25 @@
---
title: "什么是kubesphere"
weight: 1
---
# what-is-kubesphere
测试markdown
## second
测试markdown
## second
测试markdown
## second
测试markdown
## second
测试markdown

View File

@ -0,0 +1,7 @@
---
title: "快速开始"
weight: 2
description: "快速开始"
_build:
render: false
---

View File

@ -0,0 +1,145 @@
---
title: "快速开始引导"
weight: 1
---
## Objective
In this quickstart, as a cluster admin, you will learn how to create workspaces, roles and user accounts, and then invite new users into the workspace to create their projects and DevOps projects. This tutorial is used to help beginners to become familiar with multi-tenant management.
## Prerequisites
- You need to [install KubeSphere](https://kubesphere.io/en/install).
- You need a default admin account.
## Hands-on Lab
Generally, the hierarchy relationship of Cluster, Workspace, Project and DevOps Project showing as the following graph, and there are common built-in roles existed in these orgnizations within each level.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716231511.png)
### Cluster Admin
The role of cluster-admin is able to create accounts for other users and assign roles to them. There are three common roles in cluster level, it also supports customizing new roles.
|Built-in Roles|Responsibility|
|---|---|
|cluster-admin|Have the highest privileges for the cluster, can manage any resources|
|workspaces-manager|The workspace managers, can manage all of the resources, e.g. projects, DevOps projects, members and roles |
|cluster-regular| The regular users in the cluster, they are not authorized until they have been invited to the workspace|
#### Step 1: Create roles and accounts
First, we will create a new role (user-manager), grants account management and role management authority to this role, then we will create an account and grant the user-manager role to this account.
|Account Name|Cluster Role|Responsibility|
|---|---|---|
|user-manager|user-manager|Manage cluster accounts and roles|
1.1 To get started, login KubeSphere with the `admin` account, click **Platform** and then navigate to **Platform Roles** page, click **Create** to create a role which is used to manage all accounts and roles.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716112614.png)
1.2. Fill in the basic information and authority settings of the role, e.g. `Name : user-manager`.
1.3. Check all the boxes for both **Account Management** and **Role Management**, then click **Create**.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716112826.png)
1.4. Click **Platform**, then navigate to **Accounts** page and click **Create** to create an account.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716112945.png)
1.5. Fill in the basic information, notice that select `user-manger` as its role.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716113050.png)
1.6. Log out and Sign in with the `user-manager` account, then navigate to **Account** and create 4 accounts according to the following table. Please reference the above steps to create these 4 accounts.
|Account Name|Cluster Role|Responsibility|
|---|---|---|
|ws-manager|workspaces-manager|Create and manage all workspaces|
|ws-admin|cluster-regular|Manage all resources under the specified workspace<br> (This example is used to invite new members to join the workspace.)|
|project-admin|cluster-regular|Create and manage projects, DevOps projects, invite new members|
|project-regular|cluster-regular|The regular user will be invited to the project and DevOps project by the project-admin, <br> we use this account to create workloads, pipelines and other resources under the specified project|
1.7. Verify the 4 accounts that we created in step 1.6.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716114245.png)
### Workspace Admin
#### Step 2: Create a Workspace
Workspace is the base of implementing the multi-tenant mechanism, it's also the base unit for projects and DevOps projects managment.
2.1. Sign in with `ws-manager` that we created in Step 1, then click **Workspace** and click **Create Workspace**, name it as demo-workspace and appoint `ws-admin` as Workspace Manager, who has the highest administrative authority of the workspace.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716130007.png)
2.2. Logout and sign in with `ws-admin` after `demo-workspace` has been created. Then click **View Workspace**, select **Worksapce Management → Members Management** and click **Invite Member**.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716130330.png)
2.3. Invite both `project-admin` and `project-regular` and grant them `workspace-regular` accordingly, click **OK** to save it. Now there are 3 members in the `demo-workspace`.
|User Name|Role in the Workspace|Responsibility|
|---|---|---|
|ws-admin|workspace-admin|Manage all resources under the workspace<br> (We use this account to invite new members into the workspace)|
|project-admin|workspace-regular|Create and manage projects, DevOps projects, and invite new members to join|
|project-regular|workspace-viewer|Will be invited by project-admin to join the project and DevOps project. <br> we use this account to create workloads, pipelines, etc|
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716130517.png)
### Project Admin and DevOps Admin
#### Step 3: Create a Project
3.1. Sign in with `project-admin` that we created in Step 1, then click **Create** and select **Create a resource project**.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716131852.png)
3.2. Name it as `demo-project` and keep the advanced settings as the default values, then click **Create**.
3.3. Choosing **Project Settings → Project Members** and click **Invite Member**.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716132750.png)
3.4. Invite `project-regular` to this project and grant this user **operator** accordingly.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716132840.png)
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716132920.png)
#### Step 4: Set the Gateway
Before creating a route, you need to enable a gateway for this project.
4.1. We still use `project-admin`, Choose **Project Settings → Internet Access** and click **Set Gateway**.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716134430.png)
4.2. Keep the access method as `NodePort` and click `Save`.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716134742.png)
4.3. Now we are able to see the Gateway Address (192.168.0.88), the NodePort of http and https respectively.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716134849.png)
#### Step 5: Create DevOps Project
5.1. In this step, click **Projects** and click `Create Project` button, then select **Create a DevOps project**.
5.2. Fill in the basic information, e.g. `demo-devops`, then click **Create** button, it will jump to `demo-devops` page.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716133420.png)
5.3. Similarly, navigate to **Project Management → Project Members**, then click **Invite Member** and grant `project-regular` as the role of `maintainer`, which is used to create pipeline, credentials, etc.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190716133626.png)
## Next Step
Tutorial 2 - [Expose your App: Create a Service and Ingress](ingress-demo.md).

View File

@ -0,0 +1,6 @@
---
title: "第二级"
weight: 2
_build:
render: false
---

View File

@ -0,0 +1,21 @@
---
title: "second-a"
weight: 2
---
## second
测试markdown
## second
测试markdown
## second
测试markdown
## second
测试markdown

View File

@ -0,0 +1,7 @@
---
title: "第三级"
weight: 1
_build:
render: false
---

View File

@ -0,0 +1,20 @@
---
title: "测试第三级"
weight: 1
---
## second
测试markdown
## second
测试markdown
## second
测试markdown
## second
测试markdown

View File

@ -0,0 +1,4 @@
---
title: "page1"
---

View File

@ -0,0 +1,4 @@
---
title: "page1"
---

View File

@ -0,0 +1,4 @@
---
title: "About"
---

View File

@ -0,0 +1,4 @@
---
title: "second"
---

View File

@ -0,0 +1,4 @@
---
title: "page1"
---

View File

@ -0,0 +1,4 @@
---
title: "page1"
---

38
data/en/footer.yaml Normal file
View File

@ -0,0 +1,38 @@
footer:
list:
- title: Products
list:
- content: Community Edition
link: /en
- content: QKE
link: https://appcenter.qingcloud.com/apps/app-cmgbd5k2/KubeSphere%C2%AE%EF%B8%8F%EF%BC%88QKE%EF%BC%89#Introduction
- content: Commercial Service
link: https://kubesphere.qingcloud.com/
- title: Related Products
list:
- content: AppCenter
link: https://appcenter.qingcloud.com/
- content: NeonSAN
link: https://www.qingcloud.com/products/qingstor-neonsan/
- content: QingCloud
link: https://www.qingcloud.com/products/qingstor-neonsan/
- content: OpenPitrix
link: https://openpitrix.io/
- title: KubeSphere Docs
list:
- content: Introduction
link: https://kubesphere.io/docs/v2.1/zh-CN/introduction/intro/
- content: Installation
link: https://kubesphere.io/docs/v2.1/zh-CN/installation/intro/
- content: Tutorial
link: https://kubesphere.io/docs/v2.1/zh-CN/quick-start/quick-start-guide/
- content: API Documentation
link: https://kubesphere.io/docs/v2.1/zh-CN/api-reference/api-docs/
- title: About
list:
- content: News
link: https://activity.qingcloud.com/event/kubesphere2019/
- content: Contact
link: https://www.qingcloud.com/contactus
- content: Careers
link: https://www.qingcloud.com/jobs

113
data/en/home.yaml Normal file
View File

@ -0,0 +1,113 @@
home:
list:
- icon: "images/easy.svg"
title: "Easy"
content: "A CNCF certified Kubernetes platform, 100% open source, built and improved by the community. KubeSphere can be deployed on a Kubernetes cluster or Linux machines, supports online and air-gapped installation"
- icon: "images/flexible.svg"
title: "Flexible"
content: "Delivers DevOps, service mesh, observability, application management, multi-tenancy, storage and networking management in an unified platform. These functionalities are loosely coupled with the platform since they are pluggable and optional. Other tools are easy to integrate and play"
- icon: "images/efficient.svg"
title: "Efficient"
content: "KubeSphere delivers consolidated views while integrating a wide breadth of ecosystem tools around Kubernetes and offers consistent user experience to reduce complexity, enabling teams to easily get started with cloud native stack"
appList:
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."

38
data/zh/footer.yaml Normal file
View File

@ -0,0 +1,38 @@
footer:
list:
- title: 产品
list:
- content: KubeSphere 容器平台
link: /en
- content: QKE
link: https://appcenter.qingcloud.com/apps/app-cmgbd5k2/KubeSphere%C2%AE%EF%B8%8F%EF%BC%88QKE%EF%BC%89#Introduction
- content: 商业服务
link: https://kubesphere.qingcloud.com/
- title: 相关产品
list:
- content: AppCenter
link: https://appcenter.qingcloud.com/
- content: NeonSAN
link: https://www.qingcloud.com/products/qingstor-neonsan/
- content: QingCloud
link: https://www.qingcloud.com/products/qingstor-neonsan/
- content: OpenPitrix
link: https://openpitrix.io/
- title: 文档中心
list:
- content: 产品介绍
link: https://kubesphere.io/docs/v2.1/zh-CN/introduction/intro/
- content: 安装
link: https://kubesphere.io/docs/v2.1/zh-CN/installation/intro/
- content: 快速入门
link: https://kubesphere.io/docs/v2.1/zh-CN/quick-start/quick-start-guide/
- content: API 文档
link: https://kubesphere.io/docs/v2.1/zh-CN/api-reference/api-docs/
- title: 关于
list:
- content: 动态
link: https://activity.qingcloud.com/event/kubesphere2019/
- content: 联系我们
link: https://www.qingcloud.com/contactus
- content: 加入我们
link: https://www.qingcloud.com/jobs

112
data/zh/home.yaml Normal file
View File

@ -0,0 +1,112 @@
home:
list:
- icon: "images/easy.svg"
title: "易用"
content: "面向开发、测试、运维友好的 UI向导式用户体验通过 KubeSphere 控制台将 Kubernetes 的能力以一种极简的方式输送给用户。"
- icon: "images/flexible.svg"
title: "灵活"
content: "支持开源的存储与网络插件,如用户对网络和存储有更高要求,可选用 <a href=\"//www.qingcloud.com\" target=\"_blank\" rel=\"noopener noreferrer\">青云 QingCloud</a> 作为底层平台,可以使用商业化的网络和存储解决方案。"
- icon: "images/efficient.svg"
title: "高效"
content: "无基础设施依赖,无 Kubernetes 依赖,支持跨物理机、虚拟机、云平台部署,可以纳管不同版本、不同厂商的 Kubernetes 集群。"
appList:
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."
- icon: "images/hadoop.svg"
name: "hadoop"
version: "1.0.7"
content: "The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models."

33
i18n/en.yaml Normal file
View File

@ -0,0 +1,33 @@
- id: home
translation: Home
- id: activities
translation: Activities
- id: meet
translation: See a video for quick preview of KubeSphere
- id: introduction1
translation: The Kubernetes Platform,
- id: introduction2
translation: tailored to the DevOps teams
- id: introduction3
translation: —— KubeSphere Container Platform
- id: introduction4
translation: KubeSphere is a distributed operating system providing cloud native stack with Kubernetes as its kernel, and aims to be plug-and-play architecture for third-party applications seamless integration to boost its ecosystem.
- id: install
translation: Get KubeSphere
- id: install
translation: Get KubeSphere
- id: introduction5
translation: One Platform for full-stack solutions
- id: introduction6
translation: KubeSphere is also a multi-tenant enterprise-grade container platform with full-stack automated IT operation and streamlined DevOps workflows. It provides developer-friendly wizard web UI, helping enterprises to build out a more robust and feature-rich platform, which includes most common functionalities needed for enterprise Kubernetes strategy.
- id: management
translation: Complete application lifecycle management
- id: introduction7
translation: Based on OpenPitrix, it provides application-wide lifecycle management, including development, testing, release, upgrade, and off-the-shelf application-related operations, multi application repositories management, one-click deployment of applications, and advanced functions such as version control, billing, and auditing.
- id: introduction8
translation: Welcome to the KubeSphere Documentation
- id: introduction9
translation: We will introduce the services and features of KubeSphere with clear and concise pictures and texts as far as possible.

28
i18n/zh.yaml Normal file
View File

@ -0,0 +1,28 @@
- id: home
translation: 首页
- id: activities
translation: 动态
- id: meet
translation: 回顾 KubeSphere 社区年度 Meetup
- id: introduction1
translation: KubeSphere,
- id: introduction2
translation: 以应用为中心的容器平台
- id: introduction3
translation: 完全开源,加速企业云原生转型
- id: introduction4
translation: KubeSphere 帮助企业在云、虚拟化及物理机等任何环境中快速构建、部署和运维基于 Kubernetes 的容器架构轻松实现微服务治理、多租户管理、DevOps 与 CI/CD、监控日志告警、应用商店、大数据、以及人工智能等业务场景。
- id: install
translation: 获取 KubeSphere
- id: introduction5
translation: 什么是 KubeSphere
- id: introduction6
translation: KubeSphere 是一款面向云原生设计的开源项目,在目前主流容器调度平台 Kubernetes 之上构建的分布式多租户容器管理平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时,极大降低开发、测试、运维的日常工作的复杂度。
- id: management
translation: 完整的应用生命周期管理
- id: introduction7
translation: 基于 OpenPitrix 提供应用的全生命周期管理,包含开发、测试、发布、升级,下架等应用相关操作,多应用仓库管理,一键部署应用,并可实现版本控制、计费、审计等高级功能。
- id: introduction8
translation: 欢迎使用 KubeSphere 文档
- id: introduction9
translation: 欢迎阅读 KubeSphere 文档,我们尽可能以清晰简明的图文,介绍 KubeSphere 各项服务及使用方法。

View File

@ -0,0 +1,14 @@
<!DOCTYPE html>
<html lang="{{ with .Site.LanguageCode }}{{ . }}{{ else }}en-US{{ end }}">
{{- partial "head.html" . -}}
<body>
{{- partial "header.html" . -}}
<img src="{{ .Site.Params.bg1 | absURL }}" alt="bg" class="bg-1">
<section class="main-section">
{{- block "main" . }}{{- end }}
</section>
{{- partial "footer.html" . -}}
</body>
</html>

6
layouts/blogs/list.html Normal file
View File

@ -0,0 +1,6 @@
{{ define "main" }}
<section id="home">
<h2>内容</h2>
</section>
{{ end }}

View File

@ -0,0 +1,6 @@
{{ define "main" }}
<section id="home">
<h2>内容</h2>
</section>
{{ end }}

74
layouts/docs/list.html Normal file
View File

@ -0,0 +1,74 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ .Title }}</title>
<link rel="stylesheet" href="/fonts/Roboto/stylesheet.css">
{{ $style := resources.Get "scss/docs.scss" | resources.ToCSS }}
<link rel="stylesheet" href="{{ $style.Permalink }}">
{{ $style := resources.Get "scss/reset.scss" | resources.ToCSS }}
<link rel="stylesheet" href="{{ $style.Permalink }}">
</head>
<body>
<header>
<a href="{{ site.Home.RelPermalink }}"><img src="{{ .Site.Params.logo | absURL }}" alt="{{ .Site.Title }}" class="logo"></a>
<div class="header-div">
<h1>{{ i18n "introduction8" }}</h1>
<p>{{ i18n "introduction9" }}</p>
{{ $pages := (union .Pages .Sections).ByWeight }}
<div class="list-div">
<ul>
{{ range $pages }}
<li>
{{ if .IsPage }}
<h3>
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
</h3>
<p>{{ .Description }}</p>
{{ else }}
<h3>
{{ template "first-page" (dict "section" . "firstSection" .) }}
</h3>
<p>{{ .Description }}</p>
{{ $page_list := (union .Pages .Sections).ByWeight }}
<p>
{{ range $page_list }}
{{ if .IsPage }}
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
{{ else }}
{{ template "first-page" (dict "section" . "firstSection" .) }}
{{ end }}
{{ end }}
</p>
{{ end }}
</li>
{{ end }}
</ul>
</div>
{{ define "first-page" }}
{{ $s := .section }}
{{ $firstSection := .firstSection }}
{{ $pages := (union $s.Pages $s.Sections).ByWeight }}
{{ $first := index $s.Pages 0}}
{{ if $first.IsPage }}
<a href="{{ $first.RelPermalink }}">{{ $firstSection.LinkTitle }}</a>
{{ else }}
{{ template "first-page" (dict "section" $first "firstSection" $firstSection) }}
{{ end }}
{{ end }}
</div>
</header>
<section>
</section>
</body>
</html>

35
layouts/docs/single.html Normal file
View File

@ -0,0 +1,35 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ .Title }}</title>
<link rel="stylesheet" href="/fonts/Roboto/stylesheet.css">
{{ $style := resources.Get "scss/doc.scss" | resources.ToCSS }}
<link rel="stylesheet" href="{{ $style.Permalink }}">
{{ $style := resources.Get "scss/reset.scss" | resources.ToCSS }}
<link rel="stylesheet" href="{{ $style.Permalink }}">
<script src="{{ "js/jquery-3.5.0.min.js" | relURL }}"></script>
</head>
<body>
<div class="left-div">
{{ partial "tree.html" . }}
</div>
<div class="middle-div">
<div class="header-div">
<a href="{{ site.Home.RelPermalink }}"><img src="{{ .Site.Params.logo | absURL }}" alt="{{ .Site.Title }}" class="logo"></a>
</div>
<div class="content-div">
<div class="md-body">
{{ .Content }}
</div>
</div>
<div class="menu-div">
{{ .TableOfContents }}
</div>
</div>
</body>
</html>

13
layouts/forum/list.html Normal file
View File

@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>{{ .Title }}</title>
</head>
<body>
内容
</body>
</html>

135
layouts/index.html Normal file
View File

@ -0,0 +1,135 @@
{{ define "main" }}
<section>
<div class="section-div-1">
<div class="banner-title">
<div class="banner-activities">
<span class="banner-tag">{{ i18n "activities" }}</span>
<a href="https://kubesphere.io/docs/introduction/what-is-kubesphere/#video-on-youtube" target="_blank" rel="noopener noreferrer" title="See a video for quick preview of KubeSphere">{{ i18n "meet" }}</a>
</div>
<div class="h1">{{ i18n "introduction1" }}<br>{{ i18n "introduction2" }}</div>
<div class="banner-sub-title">{{ i18n "introduction3" }}</div>
<p>{{ i18n "introduction4" }}</p>
<div class="banner-links">
<a href="/install/">
<button class="install-button">
{{ i18n "install" }}
</button>
</a>
</div>
</div>
<div class="banner-snapshot">
<img src="{{ .Site.Params.img1 | absURL }}" alt="">
<img src="{{ .Site.Params.img2 | absURL }}" alt="" class="banner-snapshot-sub">
</div>
</div>
</section>
{{ $data := index .Site.Data .Site.Language.Lang }}
<section>
<div class="section-div-2">
<div class="h1">{{ i18n "introduction5" }}</div>
<p>{{ i18n "introduction6" }}</p>
<div class="feature-cards">
{{ with $data.home.home }}
{{ range .list }}
<div class="feature-card">
<img src="{{ .icon | relURL }}" alt="{{ .title }}">
<div class="h2">{{ .title }}</div>
<p>{{ .content | safeHTML }}</p>
</div>
{{ end }}
{{ end }}
</div>
</div>
</section>
<section>
<div class="section-div-3">
<div class="app-install-title">
<img class="left" src="{{ .Site.Params.left | absURL }}" alt="">
<img class="right" src="{{ .Site.Params.right | absURL }}" alt="">
<div>{{ i18n "management" }}</div>
<p>{{ i18n "introduction7" }}</p>
</div>
<div class="slider-wrapper">
<div class="slider-repeat">
{{ with $data.home.home }}
{{ range .appList }}
<div class="app">
<div class="app-header">
<img class="app-icon" src="{{ .icon | relURL }}" alt="">
<div class="app-title">
<div class="app-name">{{ .name }}</div>
<div class="app-version">{{ .version }}</div>
</div>
</div>
<div class="app-desc">{{ .content }}</div>
</div>
{{ end }}
{{ range .appList }}
<div class="app">
<div class="app-header">
<img class="app-icon" src="{{ .icon | relURL }}" alt="">
<div class="app-title">
<div class="app-name">{{ .name }}</div>
<div class="app-version">{{ .version }}</div>
</div>
</div>
<div class="app-desc">{{ .content }}</div>
</div>
{{ end }}
{{ end }}
</div>
</div>
</div>
</section>
<section>
<div class="section-div-4">
<div class="h1">如何参与贡献</div>
<p>积极参与到 KubeSphere 上游的开发中,了解项目进度,以及 Bug 提交,可以通过 GitHub 与 Slack 与我们保持联系。</p>
<div class="contribute-cards">
<div class="contribute-card">
<div class="contribute-title">
报告 Bug
</div>
<div>
<p>KubeSphere 使用 GitHub issue 来管理 bug 跟踪</p>
</div>
</div>
<div class="contribute-card">
<div class="contribute-title">
参与开发和设计
</div>
<div>
<ul class="list">
<li>认真阅读 kubesphere <a href="//github.com/kubesphere/kubesphere/blob/master/CONTRIBUTING.md" target="_blank" rel="noopener noreferrer">开发者指南</a></li>
<li>fork 项目<!-- -->:<!-- --> <a href="https://github.com/kubesphere/kubesphere" target="_blank" rel="noopener noreferrer">https://github.com/kubesphere/kubesphere</a></li>
<li><a href="/docs" target="_blank" rel="noopener noreferrer">阅读《KubeSphere 文档》</a></li>
<li>参与到 KubeSphere 项目和上游项目如 Kubernetes、Docker、Istio 等</li>
</ul>
</div>
</div>
<div class="contribute-card">
<div class="contribute-title">
日常沟通
</div>
<div>
<ul class="list">
<li>认真阅读 kubesphere <a href="//github.com/kubesphere/kubesphere/blob/master/CONTRIBUTING.md" target="_blank" rel="noopener noreferrer">开发者指南</a></li>
</ul>
</div>
</div>
</div>
</div>
</section>
<section>
<div class="section-div-5">
<div>
<img src="{{ .Site.Params.cloud | absURL }}" alt="">
<div>CNCF 云原生基金会会员</div>
</div>
<div>
<img src="{{ .Site.Params.certified | absURL }}" alt="">
<div>CNCF 云原生基金会会员</div>
</div>
</div>
</section>
{{ end }}

View File

@ -0,0 +1,6 @@
{{ define "main" }}
<section id="home">
<h2>内容</h2>
</section>
{{ end }}

View File

@ -0,0 +1,2 @@
{{ $style := resources.Get "scss/home.scss" | toCSS | minify | fingerprint }}
<link rel="stylesheet" href="{{ $style.Permalink }}">

View File

@ -0,0 +1,29 @@
<footer>
{{ $data := index .Site.Data .Site.Language.Lang }}
<div class="footer">
<div class="footer-main">
<div class="up-main">
<div class="left-div">
<img src="{{ .Site.Params.logo | absURL }}" alt="{{ .Site.Title }}" class="foot-logo">
</div>
<div class="right-div">
<ul>
{{ with $data.footer.footer }}
{{ range .list }}
<li>
<div class="h3">{{ .title }}</div>
{{ range .list }}
<a href="{{ .link }}">{{ .content }}</a>
{{ end }}
</li>
{{ end }}
{{ end }}
</ul>
</div>
</div>
<div class="down-main">
</div>
</div>
</div>
</footer>

View File

@ -0,0 +1,12 @@
<head>
<meta charset="utf-8">
<title>{{ .Title }}</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="description" content="{{ with .Params.Description }}{{ . }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}">
<link rel="stylesheet" href="/fonts/Roboto/stylesheet.css">
{{ $style := resources.Get "scss/home.scss" | resources.ToCSS }}
<link rel="stylesheet" href="{{ $style.Permalink }}">
</head>

View File

@ -0,0 +1,42 @@
<!-- Header Start -->
<header class="navigation">
<div class="header-container">
<img src="{{ .Site.Params.logo | absURL }}" alt="{{ .Site.Title }}" class="logo">
<ul class="nav">
{{ $section := .Page.Section }}
<li {{ if .Page.IsHome }} class="active" {{ end}}><a href="{{ site.Home.RelPermalink }}">{{ i18n "home" }}</a></li>
{{ range .Site.Menus.main }}
{{ if .HasChildren }}
{{ $active := false }}
{{ range .Children }}
{{ if eq $section .URL }}
{{ $active = true }}
{{ end}}
{{ end }}
<li {{ if $active }} class="menu-li menu-active" {{ else }} class="menu-li" {{ end}}>
<span>{{ .Name }}</span>
<ul class="dropdown-menu">
{{ range .Children }}
<li {{ if eq $section .URL }} class="active"{{ end}}><a href="{{ .URL | absLangURL }}">{{ .Name }}</a></li>
{{ end }}
</ul>
</li>
{{ else }}
<li {{ if eq $section .URL }} class="active"{{ end}}><a href="{{ .URL | absLangURL }}">{{ .Name }}</a></li>
{{ end }}
{{ end }}
</ul>
<div class="menu-li language-menu">
<span>{{ .Site.Language.LanguageName }}</span>
<ul class="dropdown-menu">
{{ range .Page.AllTranslations }}
<li onclick="location = '{{ .Permalink }}'">{{ .Language.LanguageName }}</li>
{{ end }}
</ul>
</div>
</div>
</header>

View File

@ -0,0 +1,41 @@
<div>
<nav class='nav-menu'>
{{ template "section-tree-nav-section" (dict "page" . "section" .FirstSection) }}
</nav>
</div>
{{ define "section-tree-nav-section" }}
{{ $s := .section }}
{{ $p := .page }}
{{ $list_active := $p.IsDescendant $s }}
{{ if eq $s $s.FirstSection}}
{{ else }}
<p class="list-title">
<svg width="1em" height="1em" viewBox="0 0 24 24" class="{{ if $list_active }}arrow-open{{ end }}">
<path fill="#FFF" d="M6.426 8L5 9.426l7 7 7-7L17.574 8 12 13.574z" opacity="0.9"></path>
</svg>
{{ $s.LinkTitle }}
</p>
{{ end }}
<ul class="{{ if $list_active }}ul-active{{ end }}">
{{ $pages := where (union $s.Pages $s.Sections).ByWeight ".Params.toc_hide" "!=" true }}
{{ range $pages }}
{{ $active := eq . $p }}
<li class="list{{ if $active }} active{{ end }}">
{{ if .IsPage }}
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
{{ else }}
{{ template "section-tree-nav-section" (dict "page" $p "section" .) }}
{{ end }}
</li>
{{ end }}
</ul>
{{ end }}
<script>
$('.list-title').click(function() {
console.log('click')
$(this).find('svg').toggleClass('arrow-open')
$(this).next().toggleClass('ul-active')
})
</script>

View File

@ -0,0 +1,6 @@
{{ define "main" }}
<section id="home">
<h2>内容</h2>
</section>
{{ end }}

6
layouts/trends/list.html Normal file
View File

@ -0,0 +1,6 @@
{{ define "main" }}
<section id="home">
<h2>内容</h2>
</section>
{{ end }}

6
layouts/videos/list.html Normal file
View File

@ -0,0 +1,6 @@
{{ define "main" }}
<section id="home">
<h2>内容</h2>
</section>
{{ end }}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More