open-consul/website/pages/consul-on-kubernetes/index.tsx

327 lines
13 KiB
TypeScript
Raw Normal View History

[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 19:50:36 +00:00
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>
)
}