open-consul/website/pages/consul-on-kubernetes/index.tsx
Pamela Bortnick 7d98ea2550
[Assembly] Consul on Kubernetes Page (#11047)
* Start new page

* reset

* Consul on Kubernetes - Features List Section (#11078)

* Fix conflicts

* Start adding and placing content

* Add a lot of styling and background image

* Looking like design. Before adding more global styles

* Work on editing styles

* Move imports and switch to flex

* Add more styles and bottom left background image

* Fix conflicts

* Fix styles on mobile

* Change images path in public

* Updates from code review - Move data and update styles

* Convert to tsx and add types

* Change button props to get desired styling without using css

* Remove margin on mobile

* Consul On Kubernetes - Hero (#11089)

* Start hero section

* Increase max sizes for container

* Minor Edits

* Use g-grid-container

* Edit video styles and test

* Rename component

* Start moving global styles over

* Move hero styles to locl

* Remove composes g-hero

* Fix flex basis on media

* Add display flex to media

* Clean up some styles

* Consul On Kubernetes - Block List (#11114)

* Start block list

* Enter data and start styles

* Get all images in and update styles

* Move data and convert to ts

* Add comment in page

* Consul On Kubernetes - Side by Side Section (#11122)

* Start block list

* Enter data and start styles

* Get all images in and update styles

* Start side by side

* Add content and more styles

* Some more styles

* Add styles for text and titles

* Edit styles and clean

* Fix spacing between button and text in overview

* Delete public folder

* Fix images in block on page

* remove extra file

* Fix classnames import

* Use fragment

* Consul On Kubernetes - Docs List Component (#11150)

* Add docs list component

* Add docs list content

* Change type declaration

* Remove unecessary style

* Use fragment

* Change icons

* Consul On Kubernetes - Card List & Get Started Section  (#11168)

* Start card list component

* Begin adding content

* Start wrapper styles

* Add more styles for card

* Fix style

* Edit styles

* Use next Link

* Add minor formatting

* Make entire card a link

* Add transition

* Change import

* Use svg instead of button and  make target blank

* Move wrapper div to component and add classname prop, use color variable for border

* Change min of card in grid

* Less pxels for min

* Update copy

* Consul on Kubernetes Content (#11179)

* Add content so far

* Add hero content and switch video to embed - needs editing

* Add overview and docs links

* Use iframe in hero and style

* Remove = null on prop

* Add learn tutorials content so far

* Change learn tutorials content

* Change placeholder learn content

* Add requested copy updates

* Align numbers

* Consul on Kubernetes Content & Design Updates (#11217)

* Update docs icons

* Update learn cards

* Update challenges icon

* Video poster pending

* New image

* Add split up background images

* Looking pretty good

* Fix up background image

* Add more styles

* Add meta description and new feature images

* Revert img change

* Fix up images and replace poster

* Switch to grid

* Move images

* Clean up styles

* Change hero button text

* Update styles for hero video

* Update youtube url

* Use gray variable

* Consul on Kubernetes Metadata (#11219)

* Add meta data for sharing

* Test

* Test 2

* Add meta title

* Update share image

* CHange name

* Test

* Test again

* Use relative url

* Swap urls for hero ctas

* Update tutorial card to be uniform

* Change overview button text

* Resolve conflicts and fix dependencies
2021-10-08 15:50:36 -04:00

327 lines
13 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import ReactHead from '@hashicorp/react-head'
import Button from '@hashicorp/react-button'
import ConsulOnKubernetesHero from 'components/consul-on-kubernetes-hero'
import FeaturesList from 'components/features-list'
import BlockList from 'components/block-list'
import SideBySide from 'components/side-by-side'
import CardList from 'components/card-list'
import DocsList from 'components/docs-list'
import s from './style.module.css'
export default function ConsulOnKubernetesPage() {
const pageDescription =
'Consul is a robust service mesh for discovering and securely connecting applications on Kubernetes.'
const pageTitle = 'Consul on Kubernetes'
return (
<div>
<ReactHead
title={pageTitle}
pageName={pageTitle}
description={pageDescription}
image="/img/consul-on-kubernetes-share-image.png"
twitterCard="summary_large_image"
>
<meta name="og:title" property="og:title" content={pageTitle} />
<meta name="twitter:title" content={pageTitle} />
<meta name="twitter:description" content={pageDescription} />
<meta name="author" content="@HashiCorp" />
</ReactHead>
<ConsulOnKubernetesHero
title="Consul on Kubernetes"
description="A robust service mesh for discovering and securely connecting applications on Kubernetes."
ctas={[
{
text: 'Try HCP Consul',
url:
'https://portal.cloud.hashicorp.com/?utm_source=docs&utm_content=consul_on_kubernetes_landing',
},
{
text: 'Install Consul on Kubernetes',
url: '/docs/k8s/installation/install',
},
]}
video={{
src: 'https://www.youtube.com/watch?v=Eyszp_apaEU',
poster: require('./images/hero/poster.png'),
}}
/>
<section>
<SideBySide
left={
<>
<h2 className={s.sideBySideTitle}>Overview</h2>
<p className={s.leftSideText}>
Kubernetes and service mesh tend to go hand and hand.
Organizations that adopt Kubernetes are looking for a way to
automate, secure, and observe the connections between pods and
clusters. Consul and Kubernetes provide a scalable and highly
resilient platform for microservices. Consul supports any
Kubernetes runtime including hosted solutions like EKS, AKS,
GKE, and OpenShift.
<br />
<br />
Need help managing Consul on AWS? HCP Consul supports Amazon
Elastic Kubernetes Service (EKS). Get started today.
</p>
<Button
title="Install Consul on Kubernetes"
url="/docs/k8s/installation/install"
theme={{
brand: 'consul',
}}
/>
</>
}
right={
<>
<h2 className={s.sideBySideTitle}>Challenges</h2>
<BlockList
blocks={[
{
title: 'Multi-cluster',
description:
'Organizations typically prefer to utilize a more distributed model for Kubernetes deployments. Rather than maintain a single cluster, they connect multiple environments for testing, staging, and production purposes.',
image: require('./images/blocks/multi-cluster.svg'),
},
{
title: 'Connecting Kubernetes to non-Kubernetes',
description:
'Creating consistency when connecting Kubernetes to non-Kubernetes environments can be challenging, workflows need additional automation to accommodate many virtual machines or containers.',
image: require('./images/blocks/connecting.svg'),
},
{
title: 'Securing Kubernetes networking',
description:
'Securing Kubernetes networking with multiple layers of network policies can be challenging. Organizations need to apply policies at both the application layer and network layer to ensure consistent security.',
image: require('./images/blocks/securing.svg'),
},
{
title: 'Kubernetes monitoring',
description:
"Obtaining insights into what's happening inside the cluster and the overall health of the cluster. In addition, security issues and vulnerabilities need to be properly tracked.",
image: require('./images/blocks/monitoring.svg'),
},
]}
/>
</>
}
/>
</section>
<section>
<FeaturesList
title="Why Consul on Kubernetes"
features={[
{
title: 'Multi-platform',
subtitle:
'Support both Kubernetes and non-Kubernetes workloads on any runtime',
infoSections: [
{
heading: 'Why it matters',
content: (
<p>
You can connect almost any application to any runtime.
Consul supports virtual machines and containers across
just about any platform.
</p>
),
},
{
heading: 'Features',
content: (
<ul>
<li>Run thousands of nodes with low latency</li>
<li>Support any Kubernetes distribution</li>
<li>
Work across Kubernetes & non-Kubernetes Environments
</li>
</ul>
),
},
],
cta: {
text: 'Start tutorial',
url:
'https://learn.hashicorp.com/tutorials/consul/kubernetes-deployment-guide?in=consul/kubernetes',
},
image: require('./images/features/multi-platform.svg'),
},
{
title: 'Kube-native workflow',
subtitle:
'Use Consuls Custom Resource Definitions (CRDs) to interact with Kubernetes',
infoSections: [
{
heading: 'Why it matters',
content: (
<p>
Reduce Application deployment times using a workflows not
technologies approach and Kube native tools instead of
manual scripts
</p>
),
},
{
heading: 'Features',
content: (
<ul>
<li>Layer 7 Traffic</li>
<li>Ingress/Egress through Gateways</li>
<li>Custom Resource Definitions</li>
</ul>
),
},
],
cta: {
text: 'Start tutorial',
url:
'https://learn.hashicorp.com/tutorials/consul/kubernetes-custom-resource-definitions?in=consul/kubernetes',
},
image: require('./images/features/workflow.svg'),
},
{
title: 'Observable',
subtitle:
'Use built in UI and enable Kubernetes metrics via helm configuration',
infoSections: [
{
heading: 'Why it matters',
content: (
<p>
Provide enhanced observability using Kubernetes tools or
use third party solutions to monitor Kubernetes
performance
</p>
),
},
{
heading: 'Features',
content: (
<ul>
<li>Built in UI metrics</li>
<li>APM integrations (Prometheus, Datadog, etc.)</li>
</ul>
),
},
],
cta: {
text: 'Start tutorial',
url:
'https://learn.hashicorp.com/tutorials/consul/kubernetes-layer7-observability?in=consul/kubernetes',
},
image: require('./images/features/observable.svg'),
},
{
title: 'Secure',
subtitle:
'Offload security concerns from applications based on application security policies. With HCP, security is enabled by default.',
infoSections: [
{
heading: 'Why it matters',
content: (
<p>
You can connect almost any application to any runtime.
Consul supports virtual machines and containers across
just about any platform.
</p>
),
},
{
heading: 'Features',
content: (
<ul>
<li>
Encryption & Authorization (mTLS) using certificates for
service identity
</li>
<li>Access Controls (ACLs) & Namespaces</li>
<li>Automated Certificate Management & Rotation</li>
</ul>
),
},
],
cta: {
text: 'Start tutorial',
url:
'https://learn.hashicorp.com/tutorials/consul/kubernetes-secure-agents?in=consul/kubernetes',
},
image: require('./images/features/secure.svg'),
},
]}
/>
</section>
<section className={s.getStartedWrapper}>
<h1 className={s.getStartedTitle}>Ways to get started</h1>
<div className={s.getStartedContent}>
<CardList
title="Tutorials"
className={s.getStartedCards}
cards={[
{
eyebrow: '15 min',
heading: 'Get started on Kubernetes',
description:
'Setup Consul service mesh to get experience deploying service sidecar proxies and securing service with mTLS.',
url:
'https://learn.hashicorp.com/tutorials/consul/service-mesh-deploy?in=consul/gs-consul-service-mesh',
},
{
eyebrow: '22 min',
heading: 'Secure Consul and registered services on Kubernetes',
description:
'Secure Consul on Kubernetes using gossip encryption, TLS certificates, Access Control Lists, and Consul intentions.',
url:
'https://learn.hashicorp.com/tutorials/consul/kubernetes-secure-agents?in=consul/kubernetes',
},
{
eyebrow: '21 min',
heading:
'Layer 7 observability with Prometheus, Grafana, and Kubernetes',
description:
'Collect and visualize layer 7 metrics from services in your Kubernetes cluster using Consul service mesh, Prometheus, and Grafana.',
url:
'https://learn.hashicorp.com/tutorials/consul/kubernetes-layer7-observability?in=consul/kubernetes',
},
]}
/>
<DocsList
title="Documentation"
className={s.getStartedDocs}
docs={[
{
icon: {
src: require('./images/docs/helm-icon.svg'),
alt: 'helm',
},
description:
'Consul offers an official Helm chart for quickly deploying and upgrading Consul on Kubernetes.',
cta: {
text: 'Helm documentation',
url: '/docs/k8s/installation/install',
},
},
{
icon: {
src: require('@hashicorp/mktg-logos/product/terraform/logomark/color.svg'),
alt: 'terraform',
},
description:
'Use Consuls Terraform provider for deploying and maintaining Consul agents across both Kubernetes and non-Kubernetes environments.',
cta: {
text: 'Terraform provider',
url:
'https://registry.terraform.io/providers/hashicorp/consul/latest/docs',
},
},
]}
/>
</div>
</section>
</div>
)
}