github.com/Ilhicas/nomad@v1.0.4-0.20210304152020-e86851182bc3/website/pages/use-cases/simple-container-orchestration.jsx (about)

     1  import UseCasesLayout from 'components/use-case-page'
     2  import TextSplitWithCode from '@hashicorp/react-text-split-with-code'
     3  import TextSplitWithImage from '@hashicorp/react-text-split-with-image'
     4  import FeaturedSliderSection from 'components/featured-slider-section'
     5  // Imports below are used in getStaticProps only
     6  import highlightData from '@hashicorp/nextjs-scripts/prism/highlight-data'
     7  
     8  export async function getStaticProps() {
     9    const codeBlocksRaw = {
    10      containerOrchestration: {
    11        code:
    12          'task "webservice" {\n  driver = "docker"\n\n  config {\n    image = "redis:3.2"\n    labels {\n      group = "webservice-cache"\n    }\n  }\n}',
    13        language: 'hcl',
    14      },
    15      windowsSupport: {
    16        code:
    17          'sc.exe start "Nomad"\n\nSERVICE_NAME: Nomad\n      TYPE               : 10  WIN32_OWN_PROCESS\n      STATE              : 4  RUNNING\n                              (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)\n      WIN32_EXIT_CODE    : 0  (0x0)\n      SERVICE_EXIT_CODE  : 0  (0x0)\n      CHECKPOINT         : 0x0\n      WAIT_HINT          : 0x0\n      PID                : 8008\n      FLAGS              :',
    18      },
    19      multiRegionFederation: {
    20        code: 'nomad server join 1.2.3.4:4648',
    21      },
    22    }
    23    const codeBlocks = await highlightData(codeBlocksRaw)
    24    return { props: { codeBlocks } }
    25  }
    26  
    27  export default function SimpleContainerOrchestrationPage({ codeBlocks }) {
    28    return (
    29      <UseCasesLayout
    30        title="Simple Container Orchestration"
    31        description="Nomad runs as a single binary with a small resource footprint. Developers use a declarative job specification to define how an application should be deployed.  Nomad handles deployment and automatically recovers applications from failures."
    32      >
    33        <TextSplitWithCode
    34          textSplit={{
    35            heading: 'Container Orchestration',
    36            textSide: 'right',
    37            content:
    38              'Deploy, manage, and scale your containers with the Docker, Podman, or Singularity task driver.',
    39            links: [
    40              {
    41                text: 'Read More',
    42                url: 'https://learn.hashicorp.com/collections/nomad/manage-jobs',
    43                type: 'outbound',
    44              },
    45            ],
    46          }}
    47          codeBlock={codeBlocks.containerOrchestration}
    48        />
    49  
    50        <TextSplitWithImage
    51          textSplit={{
    52            heading: 'Run On-Premise with Ease',
    53            textSide: 'left',
    54            content:
    55              'Install and run Nomad easily on bare metal as a single binary and with the same ease as on cloud.',
    56          }}
    57          image={{
    58            url: require('./img/on-prem-with-ease.svg'),
    59            alt: '',
    60          }}
    61        />
    62  
    63        <TextSplitWithCode
    64          textSplit={{
    65            heading: 'Windows Support',
    66            textSide: 'right',
    67            content:
    68              'Deploy Windows containers and processes or run Nomad as a native Windows service with Service Control Manager and NSSM.',
    69            links: [
    70              {
    71                text: 'Watch Jet.com use case',
    72                url:
    73                  'https://www.hashicorp.com/resources/running-windows-microservices-on-nomad-at-jet-com',
    74                type: 'outbound',
    75              },
    76            ],
    77          }}
    78          codeBlock={codeBlocks.windowsSupport}
    79        />
    80  
    81        <TextSplitWithCode
    82          textSplit={{
    83            heading: 'Multi-Region Federation',
    84            content:
    85              'Federate Nomad clusters across regions with a single CLI command to deploy applications globally.',
    86            textSide: 'left',
    87            links: [
    88              {
    89                text: 'Read more',
    90                url: 'https://learn.hashicorp.com/tutorials/nomad/federation',
    91                type: 'outbound',
    92              },
    93            ],
    94          }}
    95          codeBlock={codeBlocks.multiRegionFederation}
    96        />
    97  
    98        <div className="with-border">
    99          <TextSplitWithImage
   100            textSplit={{
   101              heading: 'Edge Deployment with Simple Topology',
   102              content:
   103                'Deploy Nomad with a simple cluster topology on hybrid infrastructure to place workloads to the cloud or at the edge.',
   104              textSide: 'right',
   105            }}
   106            image={{
   107              url: require('./img/edge-deployment.svg'),
   108              alt: '',
   109            }}
   110          />
   111        </div>
   112  
   113        <TextSplitWithImage
   114          textSplit={{
   115            heading: 'Zero Downtime Deployments',
   116            content:
   117              'Achieve zero downtime deployments for applications through rolling updates, blue/green, or canary deployment strategies.',
   118            textSide: 'left',
   119            links: [
   120              {
   121                text: 'Read more',
   122                url: 'https://learn.hashicorp.com/collections/nomad/job-updates',
   123                type: 'outbound',
   124              },
   125            ],
   126          }}
   127          image={{
   128            url: require('./img/zero-downtime-deployments.png'),
   129            alt: 'Zero Downtime Deployments',
   130          }}
   131        />
   132  
   133        <div className="with-border">
   134          <TextSplitWithImage
   135            textSplit={{
   136              heading: 'High Performance Batch Workloads',
   137              content:
   138                'Run batch jobs with proven scalability of thousands of deployments per second via the batch scheduler.',
   139              textSide: 'right',
   140              links: [
   141                {
   142                  text: 'Watch tech presentation from Citadel',
   143                  url:
   144                    'https://www.hashicorp.com/resources/end-to-end-production-nomad-citadel',
   145                  type: 'outbound',
   146                },
   147              ],
   148            }}
   149            image={{
   150              url: require('./img/high-performance-batch-workloads.png'),
   151              alt: '',
   152            }}
   153          />
   154        </div>
   155  
   156        <TextSplitWithImage
   157          textSplit={{
   158            heading: 'Run Specialized Hardware with Device Plugins',
   159            content:
   160              'Run GPU and other specialized workloads using Nomad’s device plugins.',
   161            textSide: 'left',
   162            links: [
   163              {
   164                text: 'Read more',
   165                url: '/docs/devices',
   166                type: 'inbound',
   167              },
   168            ],
   169          }}
   170          image={{
   171            url: require('./img/specialized-hardware.png'),
   172            alt: 'Specialized Hardware',
   173          }}
   174        />
   175  
   176        <TextSplitWithImage
   177          textSplit={{
   178            heading: 'Run Stateful Workloads',
   179            content:
   180              'Natively connect and run stateful services with storage volumes from third-party providers via the Container Storage Interface plugin system.',
   181            textSide: 'right',
   182          }}
   183          image={{
   184            url: require('./img/csi.svg'),
   185            alt: 'Stateful Workloads',
   186          }}
   187        />
   188  
   189        <TextSplitWithImage
   190          textSplit={{
   191            heading: 'Flexible Networking Capabilities',
   192            content:
   193              'Deploy containerized applications with customized network configurations from third-party vendors via Container Network Interface plugin system',
   194          }}
   195          image={{
   196            url: require('./img/cni.svg'),
   197            alt: 'Flexible Networking Capabilities',
   198          }}
   199        />
   200  
   201        <FeaturedSliderSection
   202          heading="Case Studies"
   203          features={[
   204            {
   205              logo: {
   206                url:
   207                  'https://www.datocms-assets.com/2885/1582097215-roblox-white.svg',
   208                alt: 'Roblox',
   209              },
   210              image: {
   211                url:
   212                  'https://www.datocms-assets.com/2885/1582096961-roblox-case-study.jpg',
   213                alt: 'Roblox Nomad Case Study',
   214              },
   215              heading: 'Roblox',
   216              content:
   217                'Scale a global gaming platform easily and reliably with Nomad to serve 100 million monthly active users',
   218              link: {
   219                text: 'Read Case Study',
   220                url: 'https://www.hashicorp.com/case-studies/roblox',
   221                type: 'outbound',
   222              },
   223            },
   224            {
   225              logo: {
   226                url:
   227                  'https://www.datocms-assets.com/2885/1529339316-logocitadelwhite-knockout.svg',
   228                alt: 'Citadel',
   229              },
   230              image: {
   231                url:
   232                  'https://www.datocms-assets.com/2885/1509052483-hashiconf2017-end-to-end-production-nomad-at-citadel.jpg',
   233                alt: 'Citadel Presentation',
   234              },
   235              heading: 'Citadel',
   236              content:
   237                'Optimize the cost efficiency of batch processing at scale with a hybrid, multi-cloud deployment with Nomad',
   238              link: {
   239                text: 'Learn More',
   240                url:
   241                  'https://www.hashicorp.com/resources/end-to-end-production-nomad-citadel',
   242                type: 'outbound',
   243              },
   244            },
   245            {
   246              logo: {
   247                url:
   248                  'https://www.datocms-assets.com/2885/1594247944-better-help-white.png',
   249                alt: 'BetterHelp',
   250              },
   251              image: {
   252                url:
   253                  'https://www.datocms-assets.com/2885/1594247996-betterhelp-case-study-screen.png',
   254                alt: 'BetterHelp Presentation',
   255              },
   256              heading: 'BetterHelp',
   257              content:
   258                'From 6 dedicated servers in a colocation facility to a cloud-based deployment workflow with Nomad',
   259              link: {
   260                text: 'Learn More',
   261                url:
   262                  'https://www.hashicorp.com/resources/betterhelp-s-hashicorp-nomad-use-case/',
   263                type: 'outbound',
   264              },
   265            },
   266          ]}
   267        />
   268      </UseCasesLayout>
   269    )
   270  }