From a8022ec25fe5352ca6524e41c8f5c6fda641c76b Mon Sep 17 00:00:00 2001 From: Max Wolfs Date: Mon, 4 Mar 2024 09:30:33 +0100 Subject: [PATCH] Update Operator Docs Introduction (#109) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * remove deprecated parts Signed-off-by: Max Wolfs * fix linkg Signed-off-by: Max Wolfs * feat: add cluster stacks description Signed-off-by: Jan Schoone <6106846+jschoone@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Jan Schoone <6106846+jschoone@users.noreply.github.com> Signed-off-by: Max Wolfs * refactor components for better reuse with json Signed-off-by: Max Wolfs * import architecture component Signed-off-by: Max Wolfs * fix loading Signed-off-by: Max Wolfs * Apply suggestions from code review Co-authored-by: Filip Dobrovolný Signed-off-by: Max Wolfs * add first single components to overview component Signed-off-by: Max Wolfs * Adjust model Signed-off-by: Max Wolfs * add custom data plugin Signed-off-by: Max Wolfs * fix url Signed-off-by: Max Wolfs * fix url Signed-off-by: Max Wolfs * fix: typo Signed-off-by: Jan Schoone <6106846+jschoone@users.noreply.github.com> * fix calendar link Signed-off-by: Max Wolfs * Add container registry docs and display it on the overview map (#143) Signed-off-by: Matej Feder * Add monitoring docs and display it on the overview map (#144) Signed-off-by: Matej Feder * Add CSPO docs and display it on the overview map (#149) Signed-off-by: Matej Feder * fix component sizing Signed-off-by: Max Wolfs * Apply suggestions from code review Co-authored-by: Roman Hros Signed-off-by: Max Wolfs * Add missing k8s-cluster-api-provider doc pages (#152) Signed-off-by: Roman Hros * fix title Co-authored-by: Roman Hros Signed-off-by: Max Wolfs --------- Signed-off-by: Max Wolfs Signed-off-by: Jan Schoone <6106846+jschoone@users.noreply.github.com> Signed-off-by: Matej Feder Signed-off-by: Roman Hros Co-authored-by: Jan Schoone <6106846+jschoone@users.noreply.github.com> Co-authored-by: Filip Dobrovolný Co-authored-by: Matej Feder Co-authored-by: Roman Hros --- docs.package.json | 23 ++- docs/index.md | 182 ------------------ docs/index.mdx | 81 ++++++++ docusaurus.config.js | 3 +- sidebarsDocs.js | 64 +++++- src/components/ArchitecturalModel.tsx | 122 ++++++++++++ src/components/ContentCard.tsx | 62 +++++- src/components/architecturalmodel.module.css | 21 ++ src/components/contentcard.module.css | 68 ++++++- src/pages/index.module.css | 12 -- src/pages/index.tsx | 131 ++++--------- .../docusaurus-plugin-global-data/index.js | 33 ++++ static/data/additionalResourcesData.json | 26 +++ static/data/architecturalOverviewData.json | 90 +++++++++ static/data/featureContentData.json | 26 +++ 15 files changed, 638 insertions(+), 306 deletions(-) delete mode 100644 docs/index.md create mode 100644 docs/index.mdx create mode 100644 src/components/ArchitecturalModel.tsx create mode 100644 src/components/architecturalmodel.module.css create mode 100644 src/plugins/docusaurus-plugin-global-data/index.js create mode 100644 static/data/additionalResourcesData.json create mode 100644 static/data/architecturalOverviewData.json create mode 100644 static/data/featureContentData.json diff --git a/docs.package.json b/docs.package.json index 4550130191..11dae9699d 100644 --- a/docs.package.json +++ b/docs.package.json @@ -17,6 +17,12 @@ "target": "docs/03-container/components", "label": "k8s-cluster-api-provider" }, + { + "repo": "SovereignCloudStack/cluster-stack-provider-openstack", + "source": "docs", + "target": "docs/03-container/components/cluster-stacks/components", + "label": "cluster-stack-provider-openstack" + }, { "repo": "SovereignCloudStack/status-page-openapi", "source": "docs", @@ -25,10 +31,7 @@ }, { "repo": "SovereignCloudStack/standards", - "source": [ - "Standards/*.md", - "Tests/scs-*.yaml" - ], + "source": ["Standards/*.md", "Tests/scs-*.yaml"], "target": "standards", "label": "" }, @@ -37,5 +40,17 @@ "source": "docs/guides", "target": "docs/02-iaas/", "label": "" + }, + { + "repo": "SovereignCloudStack/k8s-harbor", + "source": "docs", + "target": "docs/03-container/components", + "label": "container-registry" + }, + { + "repo": "SovereignCloudStack/k8s-observability", + "source": "docs", + "target": "docs/04-operating-scs/components", + "label": "monitoring" } ] diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 542a0653ae..0000000000 --- a/docs/index.md +++ /dev/null @@ -1,182 +0,0 @@ ---- -title: Introduction -sidebar_position: 1 ---- - -[![Creative Commons Attribution-ShareAlike 4.0 International](https://licensebuttons.net/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) - -## About - -The Sovereign Cloud Stack combines the best of Cloud Computing in one unified standard. -SCS is built, backed, and operated by an active open-source community worldwide. -As only the sum of different repositories complete the SCS Stack, it is important to have an easy and accessible documentation in one place. - -## What is SCS? Why should I care? - -SCS describes a standard as well as a reference implementation of this standard. - -Please see our [public web site](https://scs.community/) and specifically -the [About SCS](https://scs.community/About/) page. - -## The reference implementation - -### Get it and test it: Testbed - -The easiest way to get in touch with SCS is to deploy a SCS cloud virtually. - -This means that you set up a SCS test installation including all the infrastructure -pieces such as database, message queueing, ceph, monitoring and logging, IAM, the -[OpenStack](https://openstack.org/) core services, and (soon) the Container layer -on top of an existing -IaaS platform. Currently, only OpenStack is supported as IaaS under the SCS cloud -(so you end up using OpenStack on top of OpenStack — with nested virtualization -enabled, this performs decently). There is no fundamental limitation — just -noone has done the porting of the terraform recipes yet to AWS, libvirt, -VMware, ... - -The SCS IaaS reference implementation is based on [OSISM](https://osism.tech/). Read on the -[OSISM testbed docs](https://docs.osism.de/testbed/) to learn how to get the -testbed running. Please read carefully through the -[deployment](https://docs.osism.de/testbed/deployment.html) section of the -manual. - -The [Requirements:Cloud access subsection](https://docs.osism.de/testbed/deployment.html#cloud-access) also lists some clouds that we have -SCS running on and test regularly. - -You can easily deploy the container layer on top of the testbed (or a production -SCS cloud of course) checking out the code from -[k8s-cluster-api-provider](https://github.com/SovereignCloudStack/k8s-cluster-api-provider/). - -## Existing SCS Clouds - -A few production clouds are already based on SCS: betacloud and [pluscloud open](https://www.plusserver.com/en/products/pluscloud-open). -More will come soon. - -CityNetwork, Open Telekom Cloud, OVH clouds are also known to support the -testbed well. (There are a few caveats with the latter two, but those are -documented and no blockers.) Read above mentioned -[Requirements:Cloud access](https://docs.osism.de/testbed/deployment.html#cloud-access) -subsections. - -## Development of SCS - -The work done in SCS is supposed to be fed back upstream — into the relevant -CNCF projects, into OpenStack, into kolla-ansible, into OSISM and others. -An OSISM deployment thus will bring you all the SCS greatness in the base -layer. -Whenever possible SCS works directly in the upstream projects. While the SCS -projects tracks the efforts across the released in [epics and userstories](https://github.com/orgs/SovereignCloudStack/projects), -the work on the code happens upstream - as such these repositories are usually -not found in the SCS namespace. - -## Releases and Roadmap - -### Release 0 (2021-07-15) - -SCS R0 has been released on 2021-07-15 and bundles the work -accomplished by the community prior to the full start of the project. - -See [Release Notes for R0](https://github.com/SovereignCloudStack/release-notes/blob/34d7ccb8f05b70cbb89f5995f9d10eab2ab8c052/Release0.md) for more information. - -### Release 1 (2021-09-29) - -R1 came quickly after R0 and was the first release to ship a production ready k8s stack -(with k8s cluster API), some identity federation integration and much improved -preconfiguration for monitoring and logging. - -See [Release Notes for R1](https://github.com/SovereignCloudStack/release-notes/blob/34d7ccb8f05b70cbb89f5995f9d10eab2ab8c052/Release1.md) for more information. - -### Release 2 (2022-03-23) - -This release delivers vast improvements for bare metal automation -and the features in the container layers. - -See [Release Notes for R2](https://github.com/SovereignCloudStack/release-notes/blob/34d7ccb8f05b70cbb89f5995f9d10eab2ab8c052/Release2.md) for more information. - -### Release 3 (2022-09-21) - -Release 3 features user federation, increase in deployment and upgrade -velocity by improving automated test coverage as well as bringing disk encryption -based on tang from the state of a technical preview to be fully supported. - -See [Release Notes for R3](https://github.com/SovereignCloudStack/release-notes/blob/34d7ccb8f05b70cbb89f5995f9d10eab2ab8c052/Release3.md) for more information. - -### Release 4 (2023-03-22) - -The implemented open source components have been updated to the latest stable versions. -Among others, this includes OpenStack Zed, Kubernetes Cluster API 1.3.x, Cluster API Provider -for OpenStack 0.7.x, Kubernetes 1.26.x, and Ubuntu 22.04 LTS. - -See [Release Notes for R4](https://github.com/SovereignCloudStack/release-notes/blob/34d7ccb8f05b70cbb89f5995f9d10eab2ab8c052/Release4.md) for more information. - -### Release 5 (2023-09-20) - -The IaaS reference implementation now brings OpenStack 2023.1 (Antelope) and the default -Ceph version is Ceph Quincy - both components are enabled by the OSISM 6.0.0 release. -The container reference implementation has seen many updates is available as version 6.0.0, -with Kubernetes v1.24 - 1.27 being officially supported. Furthermore this release brings -the first technical preview of Cluster-Stack. - -See [Release Notes for R5](https://github.com/SovereignCloudStack/release-notes/blob/364103536ab2c51435a078171c698d7967d7588d/Release5.md) for more information. - -### Roadmap - -We have a 6 month release cadence — R6 will follow in March 2024. -Until then, we will provide bugfixes and security fixes for R5. - -We do work towards a model where our partners can actually follow our main -development branches — right now, our CI needs a bit more coverage though -to make this safe. - -## Contribute and Connect - -Please see the [SCS contributor guide](https://docs.scs.community/community). - -## Standards, Conformity and Certification - -We intend to work on a conformity test suite. - -Right now, we are basically relying on upstream tests -- -[RefStack](https://refstack.openstack.org/) (to perform -the [OpenStack trademark certification](https://refstack.openstack.org/#/guidelines) -tests formerly known as DefCore) and the Kubernetes CNCF conformance tests run through -[sonobuoy](https://sonobuoy.io/). - -We have specific [standards](https://github.com/SovereignCloudStack/standards/tree/main/Standards) aligned within the SCS community -(and have also sought feedback from the broader Gaia-X and OpenStack communities). - -Beyond this, we have a [draft document](https://github.com/SovereignCloudStack/standards/blob/main/Drafts/SCS-Spec.md) that captures our -view on how SCS compatible environments should look like. This one has not yet -seen sufficient review to be eligible for standardization. However, we appreciate -feedback (raise issues and PRs or start discussions). - -## Issues and bugs - -Please raise issues on github. If you can identify the affected component, -raise the issue against the relevant repository in the SovereignCloudStack -or OSISM space. Otherwise you can use -the [issues repository](https://github.com/SovereignCloudStack/issues). -Obviously we appreciate PRs even more than issues; -please don't forget to sign off your contributions (see -[contributor guide](https://docs.scs.community/community) ). - -When reporting bugs, it is very useful to include some standard information -typically needed to analyze: - -- What state of software (SCS) were you testing? What version numbers ... ? -- How does your environment look like (hardware, operating systems, etc.)? -- What did you do? -- What did you expect? What happened instead? -- Have you done this successfully before? What changed? -- Can this be reproduced? Occasionally? Reliably? How? -- Any analysis you have done? Experiments and their results? Log files? - -## Other resources - -Please check our main [web page](https://scs.community/). -If you are an onboarded SCS community member, find here a link to our -[nextcloud](https://scs.sovereignit.de/) (login required). - -Our community interacts through our [github organization](https://github.com/sovereignCloudStack/), -on [mailing lists](https://scs.sovereignit.de/mailman3/postorius/lists/) as well as -chats [matrix.org:SCS](https://matrix.to/#/!TiDqlLmEUaXqTemaLc:matrix.org?via=matrix.org). diff --git a/docs/index.mdx b/docs/index.mdx new file mode 100644 index 0000000000..8f8d1fe77a --- /dev/null +++ b/docs/index.mdx @@ -0,0 +1,81 @@ +--- +title: Introduction +sidebar_position: 1 +--- + +import ArchitecturalModel from '../src/components/ArchitecturalModel' + +## About + +The Sovereign Cloud Stack combines the best of Cloud Computing in one unified standard. +SCS is built, backed, and operated by an active open-source community worldwide. + +## Architectural Overview + + + +## Use Cases and Deployment Examples + +### IaaS Layer + +#### Quick Start with Cloud-In-A-Box + +The fastest way to get in touch with SCS is to deploy a SCS cloud virtually. The Cloud-In-A-Box was built explicitly for this scenario. Check it out [here](/docs/iaas/guides/deploy-guide/examples/cloud-in-a-box) + +#### Reference Implementation Testbed + +This means that you set up an SCS test installation including all the infrastructure +pieces such as database, message queueing, ceph, monitoring and logging, IAM, the +[OpenStack](https://openstack.org/) core services, and (soon) the Container layer +on top of an existing IaaS platform. + +The SCS IaaS reference implementation is based on [OSISM](https://osism.tech/). Read on the +[OSISM testbed docs](https://docs.osism.de/testbed/) to learn how to get the +testbed running. Please read carefully through the +[deployment](https://docs.osism.de/testbed/deployment.html) section of the +manual. + +### Container Layer + +#### K8s Cluster API Provider + +You can easily deploy the container layer on top of the testbed (or a production +SCS cloud) checking out the code from +[k8s-cluster-api-provider](https://github.com/SovereignCloudStack/k8s-cluster-api-provider/). + +#### Cluster Stacks + +With the Cluster Stacks, in the V2 KaaS reference implementation, we provide an opinionated optimized configuration of Kubernetes clusters. Through better packaging, integrated testing, and bundled configuration, SCS-based Kubernetes clusters provide easier individualization. +Throughout the R6 development cycle Cluster Stacks are taken from a technical preview to be [functional and available on top of the IaaS reference implementation](https://github.com/SovereignCloudStack/issues/milestone/8) as well to replace the V1 KaaS reference implementation [k8s-cluster-api-provider](https://github.com/SovereignCloudStack/k8s-cluster-api-provider/). +The Cluster Stacks can already be tried with the [demo](https://github.com/SovereignCloudStack/cluster-stacks-demo) repository. Although this is based on the not-production-ready Docker provider, the usage is the same for every provider. + +### Public SCS Clouds in production + +Find the current list of scs compatible clouds [here](https://docs.scs.community/standards/certification/overview#compliant-cloud-environments). + +### Development of SCS + +While the SCS project tracks the efforts across the released epics and user stories, the work on the code, whenever possible, happens upstream. As such, these repositories are usually not found in the SCS GitHub organization. SCS works directly in the following upstream projects: + +- CNCF projects, +- OpenStack, +- kolla-ansible, +- OSISM and others. + +All code not pushed upstream can be found in the [SCS Github organization](https://github.com/SovereignCloudStack). + +### Issues and Bugs + +If you can identify the affected component, raise the issue against the relevant repository in the SovereignCloudStack or OSISM space. Otherwise, you can use the [issues repository](https://github.com/SovereignCloudStack/issues). We appreciate PRs as well as issues; please don't forget to sign off your contributions see [contributor guide](https://docs.scs.community/community). + +### Contribute and Connect + +Please see the [SCS contributor guide](https://docs.scs.community/community). + +### Releases and Roadmap + +See our Release Notes [here](https://docs.scs.community/docs/category/releases) + +## Standards, Conformity and Certification + +How to get compliant? What do I need to be compliant? What are the benefits? What does it involve? What to expect in the future? Learn more in the [standards section](https://docs.scs.community/standards). diff --git a/docusaurus.config.js b/docusaurus.config.js index d04dfc7ced..3692bf811e 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -90,7 +90,8 @@ const config = { sidebarPath: require.resolve('./sidebarsStandards.js') } ], - './src/plugins/docusaurus-plugin-matomo-analytics/index.js' + './src/plugins/docusaurus-plugin-matomo-analytics/index.js', + './src/plugins/docusaurus-plugin-global-data/index.js' ], themeConfig: diff --git a/sidebarsDocs.js b/sidebarsDocs.js index 90ae6cd7e0..955ab24bd2 100644 --- a/sidebarsDocs.js +++ b/sidebarsDocs.js @@ -240,6 +240,7 @@ const sidebarsDocs = { 'container/components/k8s-cluster-api-provider/doc/Maintenance_and_Troubleshooting', 'container/components/k8s-cluster-api-provider/doc/LoadBalancer-ExtTrafficLocal', 'container/components/k8s-cluster-api-provider/doc/Upgrade-Guide', + 'container/components/k8s-cluster-api-provider/doc/continuous-integration', 'container/components/k8s-cluster-api-provider/doc/roadmap', { type: 'category', @@ -250,10 +251,51 @@ const sidebarsDocs = { 'container/components/k8s-cluster-api-provider/doc/usage/managing-many-clusters', 'container/components/k8s-cluster-api-provider/doc/usage/cluster-mgmt-capi-mgmt-node', 'container/components/k8s-cluster-api-provider/doc/usage/multi-az-and-multi-cloud-environments', - 'container/components/k8s-cluster-api-provider/doc/usage/testing' + 'container/components/k8s-cluster-api-provider/doc/usage/testing', + 'container/components/k8s-cluster-api-provider/doc/usage/containter-registry-configuration', + 'container/components/k8s-cluster-api-provider/doc/usage/custom-ca', + 'container/components/k8s-cluster-api-provider/doc/usage/gateway-api', + 'container/components/k8s-cluster-api-provider/doc/usage/harbor', + 'container/components/k8s-cluster-api-provider/doc/usage/migrate-to-cluster-class' ] } ] + }, + { + type: 'category', + label: 'Cluster Stacks', + link: { + type: 'generated-index' + }, + items: [ + { + type: 'category', + label: 'Cluster Stack Provider OpenStack', + items: [ + 'container/components/cluster-stacks/components/cluster-stack-provider-openstack/docs/overview', + 'container/components/cluster-stacks/components/cluster-stack-provider-openstack/docs/quickstart', + 'container/components/cluster-stacks/components/cluster-stack-provider-openstack/docs/controllers', + 'container/components/cluster-stacks/components/cluster-stack-provider-openstack/docs/develop' + ] + } + ] + }, + { + type: 'category', + label: 'Container Registry', + link: { + type: 'generated-index' + }, + items: [ + 'container/components/container-registry/docs/quickstart', + 'container/components/container-registry/docs/scs-deployment', + 'container/components/container-registry/docs/rate_limit', + 'container/components/container-registry/docs/upgrade', + 'container/components/container-registry/docs/backup_and_restore', + 'container/components/container-registry/docs/migration', + 'container/components/container-registry/docs/persistence', + 'container/components/container-registry/docs/ha-deployment' + ] } ] } @@ -286,6 +328,26 @@ const sidebarsDocs = { 'operating-scs/components/status-page/docs/components', 'operating-scs/components/status-page/docs/levels_of_consensus' ] + }, + { + type: 'category', + label: 'Monitoring', + link: { + type: 'generated-index' + }, + items: [ + 'operating-scs/components/monitoring/docs/overview', + 'operating-scs/components/monitoring/docs/quickstart', + 'operating-scs/components/monitoring/docs/scs-deployment', + 'operating-scs/components/monitoring/docs/infrastructure_services', + 'operating-scs/components/monitoring/docs/iaas', + 'operating-scs/components/monitoring/docs/kaas', + 'operating-scs/components/monitoring/docs/zuul', + 'operating-scs/components/monitoring/docs/alertmanager', + 'operating-scs/components/monitoring/docs/oauth', + 'operating-scs/components/monitoring/docs/tracing', + 'operating-scs/components/monitoring/docs/tuning' + ] } ] }, diff --git a/src/components/ArchitecturalModel.tsx b/src/components/ArchitecturalModel.tsx new file mode 100644 index 0000000000..475b5b3d50 --- /dev/null +++ b/src/components/ArchitecturalModel.tsx @@ -0,0 +1,122 @@ +import React, { useEffect, useState } from 'react' +import ContentCard from './ContentCard' +import styles from './architecturalmodel.module.css' +import useDocusaurusContext from '@docusaurus/useDocusaurusContext' +import { GlobalData } from '../pages' + +interface ArchitecturalLayerItem { + title: string + body: string + url: string + buttonText: string + components?: [] +} + +export interface ArchitecturalLayerData { + ops: ArchitecturalLayerItem[] + container: ArchitecturalLayerItem[] + iaas: ArchitecturalLayerItem[] + iam: ArchitecturalLayerItem[] +} + +interface ArchitecturalModelProps { + topLayers?: boolean +} + +const ArchitecturalModel: React.FunctionComponent = ( + props +) => { + const { topLayers } = props + const context = useDocusaurusContext() + const globalData = context.globalData as unknown as GlobalData + const data = + globalData['global-data-plugin'].default.architecturalOverviewData + + if (!data) { + return
No data available.
+ } + + return ( +
+ {!topLayers && ( +
+
SCS Component Map
+
+ )} +
+
+ {data.ops.map((layer, index) => ( + + ))} +
+
+ {data.container.map((layer, index) => ( +
+ +
+ ))} + {data.iaas.map((layer, index) => ( +
+ +
+ ))} +
+
+ {data.iam.map((layer, index) => ( + + ))} +
+
+
+ ) +} + +export default ArchitecturalModel diff --git a/src/components/ContentCard.tsx b/src/components/ContentCard.tsx index 24d090e400..129a9c3519 100644 --- a/src/components/ContentCard.tsx +++ b/src/components/ContentCard.tsx @@ -1,31 +1,77 @@ import React, { CSSProperties } from 'react' import styles from './contentcard.module.css' import Link from '@docusaurus/Link' +import { useLocation } from '@docusaurus/router' + +interface LayerComponent { + title: string + url: string + mandatory: string + stable: string +} interface ContentCardProps { + style?: React.CSSProperties title: string body: string url: string buttonText: string - maxHeight?: boolean + small?: boolean + components?: LayerComponent[] } const ContentCard: React.FunctionComponent = (props) => { - const { title, body, url, buttonText, maxHeight } = props + const { title, body, url, buttonText, style, small, components } = props + + const location = useLocation() return ( -
+
-

{title}

+ {small ? ( +
{title}
+ ) : ( +

{title}

+ )}

{body}

-
- - {buttonText} - +
+ {components && + components.map((component, index) => ( + +
+ {component.title} + {/* {component.mandatory == 'true' ? ( +
mandatory
+ ) : ( +
optional
+ )} */} +
+ + ))}
+ {buttonText && ( +
+ + {buttonText} + +
+ )}
) } diff --git a/src/components/architecturalmodel.module.css b/src/components/architecturalmodel.module.css new file mode 100644 index 0000000000..0b6a060822 --- /dev/null +++ b/src/components/architecturalmodel.module.css @@ -0,0 +1,21 @@ +.gradient { + background: linear-gradient( + 180deg, + rgb(0, 97, 255, 0.2) 20%, + rgba(80, 195, 165, 10) 50%, + #50c3a5 80% + ); + border-radius: 16px; + margin: 4px; + display: block; +} + +.border { + border: rgba(0, 97, 255, 1) solid 4px; + border-radius: 16px; + margin: 4px; +} + +.bottom { + margin-bottom: 16px; +} diff --git a/src/components/contentcard.module.css b/src/components/contentcard.module.css index 4dcb7cf81d..946e7a4ab3 100644 --- a/src/components/contentcard.module.css +++ b/src/components/contentcard.module.css @@ -26,6 +26,70 @@ } } -.card { - margin-bottom: 1rem; +.contentCard { + border: solid #666 2px; + box-shadow: 2px 2px 4px 4px rgba(10, 10, 10, 0.1); +} + +.layerComponent { + border: solid 2px rgba(70, 72, 213, 0.539); + border-radius: 4px; + background: #43d8b24f; + width: 80px; + height: 80px; + margin: 0 0 8px 8px; + padding: 8px; + font-weight: 600; + font-size: 10px; + text-decoration: none; + color: black; +} + +.layerComponentWip { + border: dashed 2px rgba(70, 72, 213, 0.539); + border-radius: 4px; + width: 80px; + height: 80px; + margin: 0 0 8px 8px; + padding: 8px; + font-size: 10px; + text-decoration: none; + color: black; + background-image: repeating-linear-gradient( + 45deg, + white 0%, + white 2%, + #43d8b24f 2%, + #43d8b24f 4%, + white 4% + ); +} + +.layerComponentWip:hover, +.layerComponent:hover { + color: blue; + text-decoration: none !important; + background-color: #43d8b22f; +} + +.chipOptional { + font-size: 8px; + border-radius: 8px; + padding: 2px 4px 2px 4px; + background-color: #892be27b; + text-align: center; + max-width: fit-content; + margin: 2px 2px 0 0; + color: #000; +} + +.chipMandatory { + font-size: 8px; + border-radius: 8px; + padding: 2px 4px 2px 4px; + background-color: #e2a82b94; + text-align: center; + max-width: fit-content; + margin: 2px 2px 0 0; + color: #000; } diff --git a/src/pages/index.module.css b/src/pages/index.module.css index a23eba3cc7..1d3dc036cc 100644 --- a/src/pages/index.module.css +++ b/src/pages/index.module.css @@ -22,18 +22,6 @@ justify-content: center; } -.gradient { - background: linear-gradient( - 180deg, - #0061ff 0%, - rgba(80, 195, 165, 0) 50%, - #50c3a5 100% - ); - border-radius: 16px; - margin: 16px; - padding: 16px; -} - #marg { margin-top: 1rem; margin-bottom: 1rem; diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 116af1b3c0..03982295d1 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,65 +1,13 @@ -import React from 'react' +import React, { useEffect, useState } from 'react' import clsx from 'clsx' import Link from '@docusaurus/Link' import useDocusaurusContext from '@docusaurus/useDocusaurusContext' import Layout from '@theme/Layout' - import styles from './index.module.css' import ContentCard from '../components/ContentCard' - -const featureContentData = [ - { - title: 'Introduction to SCS', - body: 'Get to know SCS better and learn about the background.', - url: '/docs', - buttonText: 'Get Started' - }, - { - title: 'Releases', - body: 'SCS is currently in Release 5. Check out the latest Release Notes.', - url: '/docs/releases/Release5', - buttonText: 'Learn More' - }, - { - title: 'Frequently Asked Questions', - body: 'You are curious what SCS is all about, what it can do and what it cant?', - url: '/docs/faq', - buttonText: 'Get Answers' - }, - { - title: 'Existing Public Clouds', - body: 'There are public SCS compliant clouds in production.', - url: '/standards/certification/overview#compliant-cloud-environments', - buttonText: 'Test Them' - } -] - -const AdditionalResourcesData = [ - { - title: 'Get in touch', - body: 'Come into our Matrix Chat in the SCS | Tech Room.', - url: 'https://matrix.to/#/#scs-tech:matrix.org', - buttonText: 'Join Now' - }, - { - title: 'Come to our Meet-Ups', - body: 'Our working groups and special interest groups meet weekly or biweekly. When? Find out within our public community calendar.', - url: '/community/collaboration', - buttonText: 'Learn More' - }, - { - title: 'Standardization in progress', - body: 'Get to know our current Decision Records and Standards.', - url: '/standards', - buttonText: 'Start Now' - }, - { - title: 'Deployment Examples', - body: 'Get to know different ways to deploy SCS with cloud resources or on bare metal.', - url: '/docs/iaas/guides/deploy-guide/examples', - buttonText: 'Explore Cases' - } -] +import ArchitecturalModel, { + ArchitecturalLayerData +} from '../components/ArchitecturalModel' function HomepageHeader() { const { siteConfig } = useDocusaurusContext() @@ -78,7 +26,34 @@ function HomepageHeader() { ) } +interface FeatureContent { + title: string + body: string + buttonText: string + url: string +} + +export interface GlobalDataPlugin { + default: { + architecturalOverviewData: ArchitecturalLayerData + featureContentData: any + additionalResourcesData: any + } +} + +export interface GlobalData { + 'global-data-plugin': GlobalDataPlugin +} + export default function Home(): JSX.Element { + const context = useDocusaurusContext() + const globalData = context.globalData as unknown as GlobalData + + const featureContent = globalData['global-data-plugin'].default + .featureContentData as FeatureContent[] + const additionalResources = globalData['global-data-plugin'].default + .additionalResourcesData as FeatureContent[] + return (
@@ -93,10 +68,9 @@ export default function Home(): JSX.Element {
- {featureContentData.map((card, index) => ( + {featureContent.map((card, index) => (

Architectural Layers

-
-
- -
-
-
- -
- -
-
- -
+
+
@@ -153,10 +93,9 @@ export default function Home(): JSX.Element {
- {AdditionalResourcesData.map((card, index) => ( + {additionalResources.map((card, index) => (