blob: 1ad52c1443e2fd3cc83e10f9055bce74659613fc [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-112407000-2"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'UA-112407000-2');
</script>
<!-- Google Tag Manager -->
<script>
(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start': new Date().getTime(),
event: 'gtm.js'
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-KS8HHSF');
</script>
<!-- End Google Tag Manager -->
<head>
<base href="/codewind/" />
<title>Setting up OpenShift on IKS (ROKS) for Codewind | Codewind</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="How to set up OpenShift on IKS (ROKS) for Codewind">
<meta name="keywords" content="roks, codewind, openshift, iks, kubernetes, clusters, cluster, node, nodes, vps, settingup"/>
<link rel="icon" type="image/png" sizes="16x16" href="images/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="images/favicon-32x32.png">
<link href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans:300,400,600&display=swap" rel="stylesheet">
<!-- Bootstrap CSS CDN -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<link rel="stylesheet" href="css/styles.css">
<link rel="stylesheet" href="css/docs.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.17.1/themes/prism.min.css">
</head>
<body data-spy="scroll" data-target="#toc">
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KS8HHSF"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<div class="main">
<!-- Bootstrap NavBar -->
<nav class="navbar navbar-expand-lg navbar-light cw-banner fixed-top" aria-label="topnav">
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse"
data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="">
<img alt="Codewind logo image" title="Codewind logo image" src="images/header-logo.svg" class="cw-header-logo" alt="">
</a>
<div class="collapse navbar-collapse justify-content-end cw-navbar-padding" id="navbarNavDropdown">
<ul class="navbar-nav cw-navbar-nav">
<li class="nav-item cw-navbar-item cw-header-link-docs">
<a class="nav-link cw-nav-link cw-header-link-text" href="gettingstarted.html">Docs</a>
</li>
<li class="nav-item cw-navbar-item cw-header-link-news">
<a class="nav-link cw-nav-link cw-header-link-text" href="news05.html">News</a>
</li>
<li class="nav-item cw-navbar-item cw-header-link">
<a class="nav-link cw-nav-link" href="https://twitter.com/EclipseCodewind"><img alt="twitter icon" title="twitter icon" src="images/banner/twitter.svg"/></a>
</li>
<li class="nav-item cw-navbar-item cw-header-link">
<a class="nav-link cw-nav-link" href="https://www.youtube.com/channel/UCnKCVK6RFDyHFqUmXlAhCHQ"><img alt="youtube icon" title="youtube icon" src="images/banner/youtube.svg"/></a>
</li>
<li class="nav-item cw-navbar-item cw-header-link">
<a class="nav-link cw-nav-link" href="https://mattermost.eclipse.org/eclipse/channels/eclipse-codewind"><img alt="mattermost icon" title="mattermost icon" src="images/banner/mattermost.svg"/></a>
</li>
<li class="nav-item cw-navbar-item cw-header-link">
<a class="nav-link cw-nav-link" href="https://github.com/eclipse/codewind"><img alt="github icon" title="github icon" data-toggle="tooltip" data-placement="top" id="cw_github_stars" title="..." src="images/banner/github.svg"/></a>
</li>
<!-- li class="nav-item cw-navbar-item" id="download-li">
<button onClick="window.location.href='https://microclimate.dev/download/codewind';" type="button" class="btn cw-download-button">Download</button>
<a href="https://microclimate.dev/download/codewind" class="nav-link cw-nav-link cw-download-link" href="#">Download</a>
</li> -->
<!-- Smaller devices menu END -->
</ul>
</div>
</nav>
<!-- End Bootstrap NavBar -->
<!-- Bootstrap row -->
<div class="row" id="body-row">
<!-- Sidebar -->
<div id="sidebar-container" class="bg-light" role="navigation" aria-label="sidebar">
<!-- Bootstrap List Group -->
<ul class="list-group sticky-top bg-light cw-sticky-offset">
<!-- Start single page getting started -->
<a href="gettingstarted.html"
class="bg-light list-group-item list-group-item-action">
Getting started
</a>
<a href="#developing_with_codewind" data-url="" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Developing with Codewind</span>
<span class="submenu-icon"></span>
</div>
</a>
<div id="developing_with_codewind" class="cw-sidebar-div cw-sidebar-submenu collapse" style="">
<a href="#codewind_for_eclipse" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
Codewind for Eclipse
<span class="submenu-icon"></span>
</a>
<!-- 3d level - eclipse -->
<div id="codewind_for_eclipse" class="cw-sidebar-div cw-sidebar-submenu-submenu collapse" style="">
<a href="mdteclipseoverview.html"
class="bg-light list-group-item list-group-item-action">
Overview
</a>
<a href="mdt-eclipse-installinfo.html"
class="bg-light list-group-item list-group-item-action">
Installing Codewind for Eclipse
</a>
<a href="mdteclipseusingadifferenttemplate.html"
class="bg-light list-group-item list-group-item-action">
Using a template repository of your own
</a>
<a href="mdteclipseimportedprojects.html"
class="bg-light list-group-item list-group-item-action">
Adding existing projects
</a>
<a href="mdteclipsemanagingprojects.html"
class="bg-light list-group-item list-group-item-action">
Managing Codewind projects
</a>
<a href="mdteclipsebuildproject.html"
class="bg-light list-group-item list-group-item-action">
Building Codewind projects
</a>
<a href="mdteclipsedebugproject.html"
class="bg-light list-group-item list-group-item-action">
Debugging Codewind projects
</a>
<a href="mdteclipsetroubleshooting.html"
class="bg-light list-group-item list-group-item-action">
Troubleshooting Codewind for Eclipse
</a>
<a href="mdteclipseuninstall.html"
class="bg-light list-group-item list-group-item-action">
Uninstalling Codewind for Eclipse
</a>
</div>
<a href="#codewind_for_vs_code" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
Codewind for VS Code
<span class="submenu-icon"></span>
</a>
<!-- 3d level - eclipse -->
<div id="codewind_for_vs_code" class="cw-sidebar-div cw-sidebar-submenu-submenu collapse" style="">
<a href="mdt-vsc-overview.html"
class="bg-light list-group-item list-group-item-action">
Overview
</a>
<a href="mdt-vsc-installinfo.html"
class="bg-light list-group-item list-group-item-action">
Installing Codewind for VS Code
</a>
<a href="mdt-vsc-usingadifferenttemplate.html"
class="bg-light list-group-item list-group-item-action">
Using a template repository of your own
</a>
<a href="mdt-vsc-importedprojects.html"
class="bg-light list-group-item list-group-item-action">
Adding existing projects
</a>
<a href="mdt-vsc-tutorial.html"
class="bg-light list-group-item list-group-item-action">
Tutorial
</a>
<a href="mdt-vsc-commands-overview.html"
class="bg-light list-group-item list-group-item-action">
Commands overview
</a>
<a href="mdt-vsc-commands-project.html"
class="bg-light list-group-item list-group-item-action">
Project commands
</a>
<a href="mdt-vsc-commands-restart-and-debug.html"
class="bg-light list-group-item list-group-item-action">
Restart and debug commands
</a>
<a href="mdt-vsc-troubleshooting.html"
class="bg-light list-group-item list-group-item-action">
Troubleshooting
</a>
<a href="mdt-vsc-uninstall.html"
class="bg-light list-group-item list-group-item-action">
Uninstalling
</a>
</div>
<a href="#codewind_for_eclipse_che" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
Codewind for Eclipse Che
<span class="submenu-icon"></span>
</a>
<!-- 3d level - eclipse -->
<div id="codewind_for_eclipse_che" class="cw-sidebar-div cw-sidebar-submenu-submenu collapse" style="">
<a href="installoncloud.html"
class="bg-light list-group-item list-group-item-action">
Overview
</a>
<a href="dockerregistry.html"
class="bg-light list-group-item list-group-item-action">
Docker Registry Guidance
</a>
<a href="openshiftregistry.html"
class="bg-light list-group-item list-group-item-action">
Using the OpenShift Registry
</a>
<a href="mdt-che-roks.html"
class="cw-current-page bg-light list-group-item list-group-item-action">
Setting up OpenShift on IKS (ROKS) for Codewind
</a>
<a href="supportingmultipleusers.html"
class="bg-light list-group-item list-group-item-action">
Support for multiple users
</a>
<a href="viewkibanalogs.html"
class="bg-light list-group-item list-group-item-action">
Installing Kibana and filtering logs in IBM Cloud Private
</a>
</div>
</div>
<a href="guide_performance.html"
class="bg-light list-group-item list-group-item-action">
Performance monitoring
</a>
<a href="codewindandtektonpipelines.html"
class="bg-light list-group-item list-group-item-action">
Codewind and Tekton pipelines
</a>
<a href="#openapi_tools" data-url="" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">OpenAPI Tools</span>
<span class="submenu-icon"></span>
</div>
</a>
<div id="openapi_tools" class="cw-sidebar-div cw-sidebar-submenu collapse" style="">
<a href="open-api-tools-for-vscode.html"
class="bg-light list-group-item list-group-item-action">
Codewind OpenAPI Tools for VS Code
</a>
<a href="open-api-tools-for-eclipse.html"
class="bg-light list-group-item list-group-item-action">
Codewind OpenAPI Tools for Eclipse
</a>
</div>
<a href="troubleshooting.html"
class="bg-light list-group-item list-group-item-action">
Troubleshooting
</a>
</ul>
<!-- List Group END-->
</div>
<!-- sidebar-container END -->
<!-- MAIN -->
<div id="content-container">
<div class="py-5 px-5">
<div class="cw-docs-spacer"></div>
<div role="main"><h1 id="setting-up-openshift-on-iks-roks-for-codewind">Setting up OpenShift on IKS (ROKS) for Codewind</h1>
<h2 id="prerequisites">Prerequisites</h2>
<ul>
<li>Activate a paid IBM Cloud account. Trial accounts cannot create OpenShift clusters.</li>
<li>Start a running ROKS cluster with a minimum of 1 node, 4 CPU, and 16 GB RAM.</li>
<li>Start a running Network File System (NFS) server that the cluster can access and use for storage.
<ul>
<li>The default IBM Cloud Kubernetes Service (IKS) storage cannot be used.</li>
<li>Either provision a virtual server on IBM Cloud or create a pod on the cluster that runs as an NFS server.</li>
</ul>
</li>
</ul>
<h2 id="setting-up-nfs-on-roks">Setting up NFS on ROKS</h2>
<h4 id="provisioning-a-vps">Provisioning a VPS</h4>
<ol>
<li>From the IBM Cloud catalog, select <strong>Virtual Server</strong>. Then, select <strong>Public Virtual Server</strong>.</li>
<li>Leave most of the defaults as they are, but change the following values:
<ul>
<li><strong>Hostname</strong>: Choose a name for this value, such as <code class="highlighter-rouge">codewind-nfs</code>.</li>
<li><strong>Location</strong>: Choose the same region that your ROKS cluster is running in, either Washington, D.C. or Dallas.</li>
<li><strong>Profiles</strong>: Select <strong>Balanced B1.2x2</strong> by default, which gives the server 2 CPU and 4 GB RAM.</li>
<li><strong>SSH Key</strong>: Add the SSH key of your machine to the cluster so that you can SSH to the virtual private server (VPS).</li>
<li><strong>Image</strong>: Select <strong>Ubuntu 18.04</strong>.</li>
<li><strong>Private security group</strong>: Choose either <strong>allow_all</strong> or <strong>allow_outbound</strong>.</li>
<li><strong>Public security group</strong>: Choose either <strong>allow_all</strong> or <strong>allow_outbound</strong>.</li>
</ul>
</li>
<li>Click <strong>create</strong>. Wait approximately 5 to 10 minutes for the provisioning to complete.</li>
</ol>
<h4 id="setting-up-the-nfs-server">Setting up the NFS server</h4>
<ol>
<li>SSH into the VPS.</li>
<li>Install the NFS server on the VPS with the following commands:
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>apt-get update
apt-get install nfs-kernel-server
</code></pre></div> </div>
</li>
<li>Create folders to share with the NFS server:
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mkdir -p /nfs/codewind/data
mkdir -p /nfs/codewind/workspace1
mkdir -p /nfs/codewind/workspace2
mkdir -p /nfs/codewind/workspace3
mkdir -p /nfs/codewind/workspace4
mkdir -p /nfs/codewind/workspace5
</code></pre></div> </div>
</li>
<li>Set the proper permissions on the folders:
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>chmod -R 777 /nfs/codewind
chown -R nobody:nogroup /nfs/codewind
</code></pre></div> </div>
</li>
<li>Export the folders in the <code class="highlighter-rouge">/etc/exports</code> directory:
<ul>
<li>First, retrieve the public IP addresses for your worker nodes.</li>
<li>Then, add the following code to the <code class="highlighter-rouge">/etc/exports</code> directory. Repeat for as many worker nodes that you have. Do not use the wildcard to whitelist all IP addresses.</li>
</ul>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/nfs/codewind/data worker1-public-ip(rw,sync,no_subtree_check,insecure,no_root_squash)
/nfs/codewind/workspace1 worker1-public-ip(rw,sync,no_subtree_check,insecure,no_root_squash)
/nfs/codewind/workspace2 worker1-public-ip(rw,sync,no_subtree_check,insecure,no_root_squash)
/nfs/codewind/workspace3 worker1-public-ip(rw,sync,no_subtree_check,insecure,no_root_squash)
/nfs/codewind/workspace4 worker1-public-ip(rw,sync,no_subtree_check,insecure,no_root_squash)
/nfs/codewind/workspace5 worker1-public-ip(rw,sync,no_subtree_check,insecure,no_root_squash)
/nfs/codewind/data worker2-public-ip(rw,sync,no_subtree_check,insecure,no_root_squash)
/nfs/codewind/workspace1 worker2-public-ip(rw,sync,no_subtree_check,insecure,no_root_squash)
/nfs/codewind/workspace2 worker2-public-ip(rw,sync,no_subtree_check,insecure,no_root_squash)
/nfs/codewind/workspace3 worker2-public-ip(rw,sync,no_subtree_check,insecure,no_root_squash)
/nfs/codewind/workspace4 worker2-public-ip(rw,sync,no_subtree_check,insecure,no_root_squash)
/nfs/codewind/workspace5 worker2-public-ip(rw,sync,no_subtree_check,insecure,no_root_squash)
</code></pre></div> </div>
</li>
<li>Restart the NFS server:
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>systemctl restart nfs-kernel-server
</code></pre></div> </div>
</li>
<li>Download the persistent volume (PV) <code class="highlighter-rouge">.yaml</code> file from <a href="https://github.com/eclipse/codewind-che-plugin/blob/master/setup/nfs/nfs-pv.yaml">nfs-pv.yaml</a> and set the <code class="highlighter-rouge">&lt;ip-address&gt;</code> field to the IP address of the VPS.</li>
<li>Run the <code class="highlighter-rouge">oc apply -f che-nfs-pv.yaml</code> command to create the PVs on the OpenShift cluster.</li>
<li>Disable the IBM Block Storage <code class="highlighter-rouge">storageclass</code>:
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>kubectl patch storageclass ibmc-block-bronze -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
</code></pre></div> </div>
</li>
</ol>
<h2 id="install-che-and-codewind">Install Che and Codewind</h2>
<p>Follow the installation documentation at <a href="https://www.eclipse.org/codewind/installoncloud.html">Setting up a Codewind-ready install of Che</a> to set up Eclipse Che and Codewind on the cluster.</p>
</div>
</div>
</div>
</div>
<!-- footer row -->
<footer>
<div class="row" id="footer-div-mobile">
<div class="cw_footer_display_flex cw-footer-same-height cw-footer-center">
<div class="cw_footer_display_icons">
<div class="cw-footer-col text-center">
<div>
<div>
<a href="mailto:codewind-dev@eclipse.org"><img alt="email icon" title="email icon" src="images/email-icon.svg" class="cw-logo" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center">
<div>
<div>
<a href="https://twitter.com/EclipseCodewind"><img alt="twitter icon" title="twitter icon" src="images/twitter-logo.svg" class="cw-logo" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center">
<div>
<div>
<a href="https://github.com/eclipse/codewind"><img alt="github icon" title="github icon" src="images/github-logo.svg"
class="cw-logo" /></a>
</div>
</div>
</div>
<div class=" cw-footer-col text-center">
<div class="cw-logo-mm" >
<div class="cw-logo-mm" >
<a href="https://mattermost.eclipse.org/eclipse/channels/eclipse-codewind"><img alt="mattermose icon" title="mattermose icon" src="images/mattermost-logo.png" class="cw-logo-mm" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center">
<div>
<div>
<a href="https://www.youtube.com/channel/UCnKCVK6RFDyHFqUmXlAhCHQ"><img alt="youtube icon" title="youtube icon" src="images/youtube-logo-dark.svg"
class="cw-logo" /></a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row" id="footer-div">
<div class="cw-footer-left">
<div class="px-5 cw-font-12>
<span class="cw-font-14">Useful Links:</span>
<br/><br/>
<a class="cw-footer-links" href="http://www.eclipse.org">Eclipse Foundation</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal/privacy.php">Privacy policy</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal/termsofuse.php">Website terms of use</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal/copyright.php">Copyright agent</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal">Legal</a><br/>
</div>
</div>
<div class="cw-footer-border-right"></div>
<div class="cw_footer_display_flex cw-footer-same-height cw-footer-center cw-footer-desktop">
<div class="cw_footer_display_icons">
<div class="cw-footer-col text-center">
<div>
<div>
<a href="mailto:codewind-dev@eclipse.org"><img alt="email icon" title="email icon" src="images/email-icon.svg" class="cw-logo" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center">
<div>
<div>
<a href="https://twitter.com/EclipseCodewind"><img alt="twitter icon" title="twitter icon" src="images/twitter-logo.svg" class="cw-logo" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center">
<div>
<div>
<a href="https://github.com/eclipse/codewind"><img alt="github icon" title="github icon" src="images/github-logo.svg"
class="cw-logo" /></a>
</div>
</div>
</div>
<div class=" cw-footer-col text-center">
<div class="cw-logo-mm" >
<div class="cw-logo-mm" >
<a href="https://mattermost.eclipse.org/eclipse/channels/eclipse-codewind"><img alt="mattermost icon" title="mattermost icon" src="images/mattermost-logo.png" class="cw-logo-mm" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center">
<div>
<div>
<a href="https://www.youtube.com/channel/UCnKCVK6RFDyHFqUmXlAhCHQ"><img alt="youtube icon" title="youtube icon" src="images/youtube-logo-dark.svg"
class="cw-logo" /></a>
</div>
</div>
</div>
</div>
</div>
<div class="cw-footer-border-right"></div>
<div class="cw-footer-right cw-footer-same-height cw-footer-vcenter">
<div class="cw-footer-eclipse-img cw-footer-same-height px-5 ">
<a href="http://www.eclipse.org">
<img alt="eclipse icon" title="eclipse icon" src="images/eclipse.svg"/>
</a>
</div>
</div>
</div>
</footer>
<!-- footer row END -->
<!-- Main Col END -->
<!-- Jquery -->
<script
src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous">
</script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous">
</script>
<!-- Font Awesome JS -->
<script defer src="https://use.fontawesome.com/releases/v5.0.13/js/solid.js"
integrity="sha384-tzzSw1/Vo+0N5UhStP3bvwWPq+uvzCMfrN1fEFe+xBmv1C/AtVX5K0uZtmcHitFZ" crossorigin="anonymous">
</script>
<script defer src="https://use.fontawesome.com/releases/v5.0.13/js/fontawesome.js"
integrity="sha384-6OIrr52G08NpOFSZdxxz1xdNSndlD4vdcf/q2myIUVO0VsqaGHJsB0RaBE01VTOY" crossorigin="anonymous">
</script>
<script src="js/jquery.matchHeight-min.js"></script>
<script src="js/index.js"></script>
<script src="js/docs.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.17.1/prism.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.17.1/components/prism-docker.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.17.1/components/prism-json.min.js"></script>
</div>
</body>
</html>
<script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/4.2.0/anchor.min.js"></script>
<script>
$(document).ready(function(){
anchors.options.placement = 'left';
anchors.add('h1');
anchors.add('h2');
anchors.add('h3');
anchors.add('h4');
});
</script>