blob: 50bb3adab48f268ceaecac03588dc001944a58e9 [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>
<title>Deploying Codewind remotely | 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="Deploying Codewind remotely">
<meta name="keywords" content="users, projects, Kubernetes, LDAP, user management, access management, login, deployment, pod, security, securing cloud connection, remote deployment of Code..."/>
<link rel="icon" type="image/png" sizes="16x16" href="images/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="images/favicon/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="css/learn.css">
<link rel="stylesheet" href="css/blog.css">
<link rel="stylesheet" href="css/guides.css">
<link rel="stylesheet" href="css/search.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-xl 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="/codewind/">
<img alt="Codewind logo image" title="Codewind logo image" src="images/header/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="learn.html">Learn</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="news.html">News</a>
</li>
<li class="nav-item cw-navbar-item cw-header-link-blog">
<a class="nav-link cw-nav-link cw-header-link-text" href="blog.html">Blog</a>
</li>
<li class="nav-item cw-navbar-item cw-header-link-guides">
<a class="nav-link cw-nav-link cw-header-link-text" href="guides.html">Guides</a>
</li>
<form class="form-inline my-2 my-lg-0 cw-navbar-item" action="/codewind/search.html" method="get">
<svg class="bi bi-search" width="1em" height="1em" viewBox="0 0 16 16" fill="black" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M10.442 10.442a1 1 0 011.415 0l3.85 3.85a1 1 0 01-1.414 1.415l-3.85-3.85a1 1 0 010-1.415z" clip-rule="evenodd"/>
<path fill-rule="evenodd" d="M6.5 12a5.5 5.5 0 100-11 5.5 5.5 0 000 11zM13 6.5a6.5 6.5 0 11-13 0 6.5 6.5 0 0113 0z" clip-rule="evenodd"/>
</svg>
<input id="nav-search" class="form-control mr-sm-2" type="text" id="search-box" name="query" placeholder="Search">
</form>
<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="Codewind Github" class="banner-image" title="Codewind Github" data-toggle="tooltip" data-placement="top" id="cw_github_stars" title="..." src="images/header/github.svg"/></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="Codewind Twitter" class="banner-image" title="Codewind Twitter" src="images/header/twitter.png"/></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="Codewind Mattermost" class="banner-image" title="Codewind Mattermost" src="images/header/mattermost.png"/></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="Codewind YouTube" class="banner-image" title="Codewind YouTube" src="images/header/youtube.png"/></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">
<div id="sidebar" class="bg-light">
<button class="btn btn-secondary dropdown-toggle btn-block d-md-none" type="button" id="contents-expander" data-toggle="collapse" aria-haspopup="true" aria-expanded="false" data-target="#sidebar-container">
Contents
</button>
<div id="sidebar-container" class="bg-light" role="navigation" aria-label="sidebar">
<!-- Bootstrap List Group -->
<ul class="list-group bg-light">
<!-- must be a valid css selector, or will break collapse function -->
<a href="#_getting_started" id="#_getting_started" class="bg-light list-group-item list-group-item-action"
data-toggle="collapse" aria-expanded="false">
<div class="d-flex align-items-center">
Getting started
<span class="submenu-icon"></span>
</div>
</a>
<div class="cw-sidebar-div cw-sidebar-submenu collapse" id="_getting_started">
<a href="overview.html" class="bg-light list-group-item" data-parent="#_getting_started"
data-url="overview.html">What is Codewind?</a>
<a href="gettingstarted-overview.html" class="bg-light list-group-item" data-parent="#_getting_started"
data-url="gettingstarted-overview.html">Getting started - Overview</a>
<a href="#_vs_code" id="#_vs_code" class="bg-light list-group-item list-group-item-action"
data-toggle="collapse" data-parent="#_getting_started" aria-expanded="false">
<div class="d-flex align-items-center">
VS Code
<span class="submenu-icon"></span>
</div>
</a>
<div class="cw-sidebar-div cw-sidebar-submenu-submenu collapse" id="_vs_code">
<a href="vsc-getting-started.html" class="bg-light list-group-item" data-parent="#_vs_code"
data-url="vsc-getting-started.html">1. Installing Codewind for VS Code</a>
<a href="vsc-firstproject.html" class="bg-light list-group-item" data-parent="#_vs_code"
data-url="vsc-firstproject.html">2. Creating your first Codewind project with Codewind for VS Code</a>
<a href="vsc-codechange.html" class="bg-light list-group-item" data-parent="#_vs_code"
data-url="vsc-codechange.html">3. Making a code change with VS Code</a>
<a href="vsc-uninstall.html" class="bg-light list-group-item" data-parent="#_vs_code"
data-url="vsc-uninstall.html">4. Uninstalling Codewind for VS Code</a>
</div>
<a href="#_eclipse" id="#_eclipse" class="bg-light list-group-item list-group-item-action"
data-toggle="collapse" data-parent="#_getting_started" aria-expanded="false">
<div class="d-flex align-items-center">
Eclipse
<span class="submenu-icon"></span>
</div>
</a>
<div class="cw-sidebar-div cw-sidebar-submenu-submenu collapse" id="_eclipse">
<a href="eclipse-getting-started.html" class="bg-light list-group-item" data-parent="#_eclipse"
data-url="eclipse-getting-started.html">1. Installing Codewind for Eclipse</a>
<a href="eclipse-firstproject.html" class="bg-light list-group-item" data-parent="#_eclipse"
data-url="eclipse-firstproject.html">2. Creating your first Codewind project with Codewind for Eclipse</a>
<a href="eclipse-codechange.html" class="bg-light list-group-item" data-parent="#_eclipse"
data-url="eclipse-codechange.html">3. Making a code change with Eclipse</a>
<a href="eclipse-uninstall.html" class="bg-light list-group-item" data-parent="#_eclipse"
data-url="eclipse-uninstall.html">4. Uninstalling Codewind for Eclipse</a>
</div>
<a href="#_intellij" id="#_intellij" class="bg-light list-group-item list-group-item-action"
data-toggle="collapse" data-parent="#_getting_started" aria-expanded="false">
<div class="d-flex align-items-center">
IntelliJ
<span class="submenu-icon"></span>
</div>
</a>
<div class="cw-sidebar-div cw-sidebar-submenu-submenu collapse" id="_intellij">
<a href="intellij-getting-started.html" class="bg-light list-group-item" data-parent="#_intellij"
data-url="intellij-getting-started.html">1. Installing Codewind for IntelliJ</a>
<a href="intellij-firstproject.html" class="bg-light list-group-item" data-parent="#_intellij"
data-url="intellij-firstproject.html">2. Creating your first Codewind project with Codewind for IntelliJ</a>
<a href="intellij-codechange.html" class="bg-light list-group-item" data-parent="#_intellij"
data-url="intellij-codechange.html">3. Making a code change with IntelliJ</a>
</div>
</div>
<a href="remote-deploying-codewind.html"
class="bg-light list-group-item list-group-item-action flex-column align-items-start"
data-url="remote-deploying-codewind.html">
Deploying Codewind remotely
</a>
<!-- must be a valid css selector, or will break collapse function -->
<a href="#_using_codewind_remotely" id="#_using_codewind_remotely" class="bg-light list-group-item list-group-item-action"
data-toggle="collapse" aria-expanded="false">
<div class="d-flex align-items-center">
Using Codewind remotely
<span class="submenu-icon"></span>
</div>
</a>
<div class="cw-sidebar-div cw-sidebar-submenu collapse" id="_using_codewind_remotely">
<a href="remote-codewind-overview.html" class="bg-light list-group-item" data-parent="#_using_codewind_remotely"
data-url="remote-codewind-overview.html">1. Overview: Using Codewind remotely</a>
<a href="#_2_connecting_your_ide_to_remote_codewind" id="#_2_connecting_your_ide_to_remote_codewind" class="bg-light list-group-item list-group-item-action"
data-toggle="collapse" data-parent="#_using_codewind_remotely" aria-expanded="false">
<div class="d-flex align-items-center">
2. Connecting your IDE to remote Codewind
<span class="submenu-icon"></span>
</div>
</a>
<div class="cw-sidebar-div cw-sidebar-submenu-submenu collapse" id="_2_connecting_your_ide_to_remote_codewind">
<a href="remotedeploy-vscode.html" class="bg-light list-group-item" data-parent="#_2_connecting_your_ide_to_remote_codewind"
data-url="remotedeploy-vscode.html">Connecting VS Code to remote Codewind</a>
<a href="remotedeploy-eclipse.html" class="bg-light list-group-item" data-parent="#_2_connecting_your_ide_to_remote_codewind"
data-url="remotedeploy-eclipse.html">Connecting Eclipse to remote Codewind</a>
</div>
<a href="remote-setupregistries.html" class="bg-light list-group-item" data-parent="#_using_codewind_remotely"
data-url="remote-setupregistries.html">3. Adding an image registry in remote Codewind</a>
<a href="#_4_creating_and_importing_projects" id="#_4_creating_and_importing_projects" class="bg-light list-group-item list-group-item-action"
data-toggle="collapse" data-parent="#_using_codewind_remotely" aria-expanded="false">
<div class="d-flex align-items-center">
4. Creating and importing projects
<span class="submenu-icon"></span>
</div>
</a>
<div class="cw-sidebar-div cw-sidebar-submenu-submenu collapse" id="_4_creating_and_importing_projects">
<a href="remotedeploy-projects-vscode.html" class="bg-light list-group-item" data-parent="#_4_creating_and_importing_projects"
data-url="remotedeploy-projects-vscode.html">VS Code</a>
<a href="remotedeploy-projects-eclipse.html" class="bg-light list-group-item" data-parent="#_4_creating_and_importing_projects"
data-url="remotedeploy-projects-eclipse.html">Eclipse</a>
</div>
</div>
<!-- must be a valid css selector, or will break collapse function -->
<a href="#_using_codewind_on_eclipse_che" id="#_using_codewind_on_eclipse_che" class="bg-light list-group-item list-group-item-action"
data-toggle="collapse" aria-expanded="false">
<div class="d-flex align-items-center">
Using Codewind on Eclipse Che
<span class="submenu-icon"></span>
</div>
</a>
<div class="cw-sidebar-div cw-sidebar-submenu collapse" id="_using_codewind_on_eclipse_che">
<a href="che-installinfo.html" class="bg-light list-group-item" data-parent="#_using_codewind_on_eclipse_che"
data-url="che-installinfo.html">1. Installing Eclipse Che for Codewind</a>
<a href="che-setupregistries.html" class="bg-light list-group-item" data-parent="#_using_codewind_on_eclipse_che"
data-url="che-setupregistries.html">2. Adding an image registry in Codewind on Eclipse Che</a>
<a href="che-createcodewindworkspace.html" class="bg-light list-group-item" data-parent="#_using_codewind_on_eclipse_che"
data-url="che-createcodewindworkspace.html">3. Creating a Codewind workspace in Eclipse Che</a>
<a href="che-createfirstproject.html" class="bg-light list-group-item" data-parent="#_using_codewind_on_eclipse_che"
data-url="che-createfirstproject.html">4. Creating your first Codewind project with Codewind for Eclipse Che</a>
<a href="che-codechange.html" class="bg-light list-group-item" data-parent="#_using_codewind_on_eclipse_che"
data-url="che-codechange.html">5. Making a code change with Codewind for Eclipse Che</a>
<a href="che-uninstall.html" class="bg-light list-group-item" data-parent="#_using_codewind_on_eclipse_che"
data-url="che-uninstall.html">6. Uninstalling Codewind for Eclipse Che</a>
</div>
<a href="che-odo-support.html"
class="bg-light list-group-item list-group-item-action flex-column align-items-start"
data-url="che-odo-support.html">
OpenShift Do (odo) support in Codewind
</a>
<a href="workingwithtemplates.html"
class="bg-light list-group-item list-group-item-action flex-column align-items-start"
data-url="workingwithtemplates.html">
Working with templates
</a>
<!-- must be a valid css selector, or will break collapse function -->
<a href="#_developing_projects" id="#_developing_projects" class="bg-light list-group-item list-group-item-action"
data-toggle="collapse" aria-expanded="false">
<div class="d-flex align-items-center">
Developing projects
<span class="submenu-icon"></span>
</div>
</a>
<div class="cw-sidebar-div cw-sidebar-submenu collapse" id="_developing_projects">
<a href="checkingstatuses.html" class="bg-light list-group-item" data-parent="#_developing_projects"
data-url="checkingstatuses.html">Understanding application and build statuses</a>
<a href="importing-existing-projects.html" class="bg-light list-group-item" data-parent="#_developing_projects"
data-url="importing-existing-projects.html">Importing existing projects</a>
<a href="project-actions.html" class="bg-light list-group-item" data-parent="#_developing_projects"
data-url="project-actions.html">Project actions</a>
<a href="project-settings.html" class="bg-light list-group-item" data-parent="#_developing_projects"
data-url="project-settings.html">Project settings</a>
<a href="referencing-files.html" class="bg-light list-group-item" data-parent="#_developing_projects"
data-url="referencing-files.html">Referencing files external to a project</a>
<a href="openshiftregistry.html" class="bg-light list-group-item" data-parent="#_developing_projects"
data-url="openshiftregistry.html">Adding the OpenShift internal registry with Codewind</a>
<a href="private-registries.html" class="bg-light list-group-item" data-parent="#_developing_projects"
data-url="private-registries.html">Developing with packages from private registries and repositories</a>
<a href="linking-your-projects.html" class="bg-light list-group-item" data-parent="#_developing_projects"
data-url="linking-your-projects.html">Linking your projects</a>
<a href="offline-codewind.html" class="bg-light list-group-item" data-parent="#_developing_projects"
data-url="offline-codewind.html">Using Codewind offline</a>
<a href="debugging.html" class="bg-light list-group-item" data-parent="#_developing_projects"
data-url="debugging.html">Debugging in Codewind</a>
</div>
<!-- must be a valid css selector, or will break collapse function -->
<a href="#_performance_monitoring" id="#_performance_monitoring" class="bg-light list-group-item list-group-item-action"
data-toggle="collapse" aria-expanded="false">
<div class="d-flex align-items-center">
Performance monitoring
<span class="submenu-icon"></span>
</div>
</a>
<div class="cw-sidebar-div cw-sidebar-submenu collapse" id="_performance_monitoring">
<a href="metrics-dashboard.html" class="bg-light list-group-item" data-parent="#_performance_monitoring"
data-url="metrics-dashboard.html">Understanding the Metrics Dashboard</a>
<a href="performance.html" class="bg-light list-group-item" data-parent="#_performance_monitoring"
data-url="performance.html">Monitoring applications with the Performance Dashboard</a>
</div>
<!-- must be a valid css selector, or will break collapse function -->
<a href="#_openapi_tools" id="#_openapi_tools" class="bg-light list-group-item list-group-item-action"
data-toggle="collapse" aria-expanded="false">
<div class="d-flex align-items-center">
OpenAPI Tools
<span class="submenu-icon"></span>
</div>
</a>
<div class="cw-sidebar-div cw-sidebar-submenu collapse" id="_openapi_tools">
<a href="open-api-tools-for-vscode.html" class="bg-light list-group-item" data-parent="#_openapi_tools"
data-url="open-api-tools-for-vscode.html">Codewind OpenAPI Tools for VS Code</a>
<a href="open-api-tools-for-eclipse.html" class="bg-light list-group-item" data-parent="#_openapi_tools"
data-url="open-api-tools-for-eclipse.html">Codewind OpenAPI Tools for Eclipse</a>
</div>
<a href="che-tektonpipelines.html"
class="bg-light list-group-item list-group-item-action flex-column align-items-start"
data-url="che-tektonpipelines.html">
Configuring Codewind for Tekton pipelines
</a>
<a href="troubleshooting.html"
class="bg-light list-group-item list-group-item-action flex-column align-items-start"
data-url="troubleshooting.html">
Troubleshooting
</a>
</ul>
<!-- List Group END-->
</div>
</div>
<!-- MAIN -->
<div id="content-container">
<div class="py-5 px-5">
<div role="main"><h1 id="deploying-codewind-remotely">Deploying Codewind remotely</h1>
<p>Codewind can be used in one of three ways: <a href="./gettingstarted.html">locally</a>, <a href="./che-installinfo.html">hosted</a> as an application on the cloud, or remotely.</p>
<p>By deploying and using Codewind remotely, you can develop your code locally by using your local Codewind installation and then build and run your application in the cloud. Remote use of Codewind frees up desktop resources by using the cloud’s resources to build and run applications.</p>
<p>Follow the instructions to deploy Codewind remotely. After you install your local IDE and configure Codewind for local use, you will:</p>
<ol>
<li>Install the Codewind operator in your cloud.</li>
<li>Deploy your Codewind instances.</li>
</ol>
<p><strong>To connect your local IDE to your remote deployment of Codewind after it is deployed remotely:</strong> See <a href="remote-codewind-overview.html">Using Codewind remotely</a>.</p>
<p><strong>To remove a remote deployment of Codewind:</strong> See <a href="https://github.com/eclipse/codewind-operator/blob/master/README.md#removing-a-codewind-instance">Removing a Codewind instance</a>.</p>
<h2 id="prerequisites">Prerequisites</h2>
<p>Complete these steps before you deploy Codewind to the cloud:</p>
<ol>
<li><strong>Install Codewind into your preferred IDE on your local computer.</strong>
For more information, select from the following IDEs:
<ul>
<li><a href="./eclipse-getting-started.html">Getting started with Codewind for Eclipse</a></li>
<li><a href="./vsc-getting-started.html">Getting started with Codewind for VS Code</a></li>
<li><a href="./intellij-getting-started.html">Getting started with Codewind for IntelliJ</a></li>
</ul>
</li>
<li><strong>Have an active Kubernetes context and log in to the cluster.</strong>
<ul>
<li>Codewind is validated on the following Kubernetes distributions:
<ul>
<li>IBM Cloud Kubernetes Service</li>
<li>OpenShift 3.11</li>
<li>OpenShift 4.3</li>
<li>OpenShift in IBM Public Cloud</li>
<li>Stand-alone Kubernetes</li>
<li>Kubernetes in Docker</li>
</ul>
</li>
<li>However, Codewind can run on any Kubernetes distribution that meets the following requirements:
<ul>
<li>Kubernetes 1.11 or later is included.</li>
<li>ReadWriteMany (RWX) persistent volumes are supported.</li>
<li>The Nginx Ingress Controller is installed.</li>
</ul>
</li>
<li>If you want to test and document support for other clouds, you can <a href="https://github.com/eclipse/codewind">contribute in GitHub</a>.</li>
</ul>
</li>
<li>
<p><strong>For Linux desktop, ensure that your workstation is set up to use a Keyring.</strong> An example of a Keyring on Linux is Secret Service.</p>
</li>
<li><strong>Optional:</strong> Install a Git command line client. To download the Git command line client, see <a href="https://git-scm.com/download">https://git-scm.com/download</a>.</li>
</ol>
<h2 id="1-clone-or-download-the-codewind-operator-repository">1. Clone or download the Codewind operator repository</h2>
<p>The Codewind operator helps with the deployment of Codewind instances in an OpenShift or Kubernetes cluster. Your system administrator usually installs the Codewind operator.</p>
<p>Download the Codewind operator from the <a href="https://github.com/eclipse/codewind-operator">codewind-operator repository</a>, or if you installed Git, clone the <code class="highlighter-rouge">codewind-operator</code> repository, for example:</p>
<p><code class="highlighter-rouge">$ git clone https://github.com/eclipse/codewind-operator -b 0.12.0</code></p>
<p>For more information about the Codewind operator and the installation process, see the <a href="https://github.com/eclipse/codewind-operator/blob/master/README.md">Codewind operator readme file</a>.</p>
<h2 id="2-install-the-operator-into-your-cluster-and-deploy-keycloak">2. Install the operator into your cluster and deploy Keycloak</h2>
<ol>
<li><a href="#2a-install-the-operator">Install the operator</a>.</li>
<li><a href="#2b-change-the-admin-password-for-the-admin-user">Change the admin password for the admin user</a>.</li>
<li><a href="#2c-update-the-keycloak-password-in-the-operator-secret-with-the-new-password">Update the Keycloak password in the operator secret with the new password</a>.</li>
</ol>
<h3 id="2a-install-the-operator">2a. Install the operator</h3>
<p>Use the <code class="highlighter-rouge">install.sh</code> script that is located in your cloned Codewind operator repository <code class="highlighter-rouge">deploy</code> folder to install the operator into your cluster and deploy Keycloak. If you use Windows, use a Unix-like shell such as Windows Subsystem for Linux, Git Bash, or MinGW to run the operator installer shell script. For example:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">cd </span>deploy
<span class="nv">$ </span>./install.sh operator <span class="nt">-i</span> &lt;ingress_domain&gt;
</code></pre></div></div>
<p>Add the option <code class="highlighter-rouge">-o</code> flag if you are installing into an OpenShift 3.11 cluster, for example:</p>
<p><code class="highlighter-rouge">$ ./install.sh operator -i &lt;ingress_domain&gt; -o</code></p>
<p>The script installs the operator into your cluster, deploys Keycloak, and returns the Keycloak <strong>Access URL</strong>. The command returns the following example output:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>NAME NAMESPACE AGE ACCESS
devex001 codewind 122m https://codewind-keycloak-devex001.&lt;ingress-domain&gt;
</code></pre></div></div>
<h3 id="2b-change-the-admin-password-for-the-admin-user">2b. Change the admin password for the admin user</h3>
<p>You must prepare Keycloak for Codewind by changing the admin password that is given to the <code class="highlighter-rouge">admin</code> user in the previous step.</p>
<ol>
<li>
<p>Access the Administration Console by clicking the <strong>Access URL</strong> link provided by Step 2a. To locate the <strong>Access URL</strong> link, enter the <code class="highlighter-rouge">$ kubectl get keycloaks -n codewind</code> command.</p>
</li>
<li>
<p>Log in to Keycloak by using the Keycloak admin credentials.
username: <code class="highlighter-rouge">admin</code>
password: <code class="highlighter-rouge">admin</code></p>
</li>
<li>
<p><strong>Important:</strong> After you log in, change the admin password by clicking the <strong>Admin</strong> link on the page. Then, click <strong>Manage Account</strong>&gt;<strong>Password</strong> and set a new replacement administrator password:</p>
<p><img src="./images/remote/admin_link_manage_account.png" alt="Admin link" /></p>
</li>
<li>
<p>Switch back to the admin console using the link or log out and log back in to Keycloak as the admin user with your new admin password.</p>
</li>
</ol>
<p>You updated the Keycloak password. The next step updates the Keycloak password in the operator secret to match it.</p>
<h3 id="2c-update-the-keycloak-password-in-the-operator-secret-with-the-new-password">2c. Update the Keycloak password in the operator secret with the new password</h3>
<p>When the Codewind operator needs to update Keycloak, it uses login credentials that are saved in a Kubernetes secret. By default during initial deployment, that secret has a username and password of <strong>admin</strong>. If you changed your admin password in a previous step, you need to update the Keycloak secret to match.</p>
<p>The secret is installed in the same namespace as the Codewind operator and is named <code class="highlighter-rouge">secret-keycloak-user-&lt;keycloakname&gt;</code>.</p>
<p>If you have an administration UI for your cluster, you can use it to locate the secret and edit the <code class="highlighter-rouge">keycloak-admin-password</code> field, or you can use the command line tools:</p>
<p><code class="highlighter-rouge">$ kubectl edit secret secret-keycloak-user-&lt;keycloakname&gt; -n codewind</code></p>
<p>or</p>
<p><code class="highlighter-rouge">$ oc edit secret secret-keycloak-user-&lt;keycloakname&gt; -n codewind</code></p>
<p><strong>Note:</strong> Using the command line tools requires an extra step to base64 encode your password string before you save it into the secret. You can base64 encode your new password by using this command:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">echo</span> <span class="nt">-n</span> <span class="s1">'&lt;myNewPassword&gt;'</span> | <span class="nb">base64
</span><span class="nv">bXlOZXdQYXNzd29yZA</span><span class="o">==</span>
</code></pre></div></div>
<p>Then, save <code class="highlighter-rouge">bXlOZXdQYXNzd29yZA==</code> as the value for <code class="highlighter-rouge">keycloak-admin-password</code> rather than the clear text <code class="highlighter-rouge">&lt;myNewPassword&gt;</code>.</p>
<h2 id="3-add-a-user-to-keycloak">3. Add a user to Keycloak</h2>
<ol>
<li>
<p>Access the Administration Console by clicking the <strong>Access URL</strong> link provided by Step 2a. To locate the <strong>Access URL</strong> link, enter the <code class="highlighter-rouge">$ kubectl get keycloaks -n codewind</code> command.</p>
</li>
<li>
<p>Click <strong>Administration Console</strong> and log in to Keycloak with <code class="highlighter-rouge">admin</code> as the default login username and <code class="highlighter-rouge">password</code>, which is the new password that you set in Step 2b.</p>
</li>
<li>
<p>Ensure that the <code class="highlighter-rouge">Realm</code> is set to <strong>Codewind</strong> by clicking the Codewind arrow on the <strong>Administration Console</strong> page:</p>
<p><img src="./images/remote/codewind_dropdown.png" alt="Codewind arrow" /></p>
<p>Select <strong>Codewind</strong> if necessary and complete these steps:</p>
<ul>
<li>Click <strong>Users</strong>.</li>
<li>Click <strong>Add user</strong>.</li>
<li>Complete the <strong>username</strong> field.</li>
<li>Complete the <strong>email</strong>, <strong>Firstname</strong>, and <strong>Lastname</strong> fields as required.</li>
<li>Ensure <strong>user enabled</strong> is <strong>On</strong>.</li>
<li>Click <strong>Save</strong>.</li>
</ul>
</li>
<li>
<p>Assign an initial password to the user account by clicking <strong>Credentials</strong>. Then, add the initial password.</p>
</li>
<li>
<p>The <strong>Temporary = On</strong> field requires you to change your password during first connection. Set <strong>Temporary = Off</strong> to make this password valid for continuous use and to prevent the need to change it on first connection.</p>
</li>
<li>
<p>Click <strong>Set Password</strong> to save the changes. Log out of the Keycloak admin page.</p>
</li>
</ol>
<h2 id="4-deploy-a-codewind-instance">4. Deploy a Codewind instance</h2>
<p>Use the <code class="highlighter-rouge">install.sh</code> script in the Codewind operator repository to deploy a Codewind instance:</p>
<p><code class="highlighter-rouge">$ ./install.sh codewind -n &lt;instanceName&gt; -u &lt;registeredUsername&gt;</code></p>
<ul>
<li><code class="highlighter-rouge">instanceName</code> is the unique name that you specify for this Codewind instance.</li>
<li><code class="highlighter-rouge">registeredUsername</code> is the name of the user that you added in <a href="#3-add-a-new-user-to-keycloak">Step 3</a>.</li>
</ul>
<p>Your Codewind instance is deployed. Access it by way of the <strong>Access URL</strong> returned by the script in a browser or by copying the URL into a new connection in your IDE.</p>
<p><strong>Note:</strong> When you are installing on Windows, the script runs and then closes the Git Bash window. To retrieve the Access URLs for Codewind, enter the following command:</p>
<p><code class="highlighter-rouge">$ kubectl get codewinds -n codewind</code></p>
<p>This command returns output in the format of the following example:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>NAME USERNAME NAMESPACE WORKSPACE AGE KEYCLOAK REGISTRATION ACCESSURL
jane1 jane codewind kbc3b0x2qins 119m devex001 Complete https://codewind-gatekeeper-kbc3b0x2qins.codewind.&lt;ingress-domain&gt;
</code></pre></div></div>
<p>For the 0.14.0 release of Codewind, a new <code class="highlighter-rouge">WORKSPACE</code> field appears in the output. This field is a randomly generated set of characters that are used in both the URL of the Gatekeeper and the names of the pods and resources.</p>
<p>To help you to determine the unique resources for your deployment, you can use the <code class="highlighter-rouge">NAME</code> field or you can use the new workspace ID given in the <code class="highlighter-rouge">WORKSPACE</code> field. All of your Codewind deployments have both the <code class="highlighter-rouge">NAME</code> and <code class="highlighter-rouge">WORKSPACE</code> as labels for you to use.</p>
<p>Also, new for 0.14.0, the <code class="highlighter-rouge">codewind</code> namespace appears in the <code class="highlighter-rouge">ACCESSURL</code>. In the example, it appears just before <code class="highlighter-rouge">&lt;ingress-domain&gt;</code>.</p>
<p>If you deployed remote Codewind instances before the Codewind 0.14.0 release, you must regenerate the connections to the deployments:</p>
<ol>
<li>Delete all the Codewind deployments in the Codewind namespace. <strong>Important:</strong> You must do this action before you delete the Codewind namespace. If you do not, your Codewind deployments might go into pending state and not be removed. If you delete the Codewind namespace before you delete your deployments, you can run the following command to clear them manually: <code class="highlighter-rouge">$ kubectl patch codewind {codewindName} -p '{"metadata":{"finalizers": []}}' --type=merge</code>.</li>
<li>Delete the Codewind namespace.</li>
<li>Re-create your deployments.</li>
<li>Configure your IDE to connect to Codewind in the cloud. For more information about configuring your IDE, see <a href="remotedeploy-vscode.html">Connecting your VS Code to remote Codewind</a> or <a href="./remotedeploy-eclipse.html">Connecting your Eclipse to remote Codewind</a>.</li>
</ol>
<h2 id="next-steps">Next steps</h2>
<p>You finished installing the Codewind operator and deployed a Codewind instance.</p>
<p>In the next topic, you learn how to <a href="./remote-codewind-overview.html">use Codewind remotely</a>.</p>
<p>You can configure your IDE to connect to Codewind in the cloud. For more information, see <a href="remotedeploy-vscode.html">Connecting your VS Code to remote Codewind</a> or <a href="./remotedeploy-eclipse.html">Connecting your Eclipse to remote Codewind</a>.</p>
<p>If you want to remove a Codewind instance, see <a href="https://github.com/eclipse/codewind-operator/blob/master/README.md#removing-a-codewind-instance">Removing a Codewind instance</a>.</p>
</div>
</div>
<div class="py-5 px-5 text-right">
Last update: Jun 23, 2020
</div>
</div>
</div>
<!-- footer row -->
<footer>
<div id="footer-div-mobile">
<div class="row">
<div class="col-sm-12 text-center">
<span>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_display_flex cw-footer-same-height cw-footer-center">
<div class="cw_footer_display_icons row">
<div class="cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="mailto:codewind-dev@eclipse.org"><img alt="Send us an email" title="Send us an email" src="images/footer/email-icon.svg" class="cw-logo" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="https://twitter.com/EclipseCodewind"><img alt="Codewind Twitter" title="Codewind Twitter" src="images/footer/twitter-logo.svg" class="cw-logo" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="https://github.com/eclipse/codewind"><img alt="Codewind Github" title="Codewind Github" src="images/footer/github-logo.svg"
class="cw-logo" /></a>
</div>
</div>
</div>
<div class=" cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="https://mattermost.eclipse.org/eclipse/channels/eclipse-codewind"><img alt="Codewind Mattermost" title="Codewind Mattermost" src="images/footer/mattermost-logo.png" class="cw-logo-mm" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="https://www.youtube.com/channel/UCnKCVK6RFDyHFqUmXlAhCHQ"><img alt="Codewind YouTube" title="Codewind YouTube" src="images/footer/youtube-logo-dark.svg"
class="cw-logo" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="http://www.eclipse.org"><img class="cw-logo-eclipse-mobile" alt="Eclipse" title="Eclipse" src="images/footer/eclipse.svg"/></a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row cw-footer-desktop" 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">
<div class="cw_footer_display_icons">
<div class="cw-footer-col text-center">
<div>
<div>
<a href="mailto:codewind-dev@eclipse.org"><img alt="Send us an email" title="Send us an email" src="images/footer/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="Codewind Twitter" title="Codewind Twitter" src="images/footer/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="Codewind Github" title="Codewind Github" src="images/footer/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="Codewind Mattermost" title="Codewind Mattermost" src="images/footer/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="Codewind YouTube" title="Codewind YouTube" src="images/footer/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" title="Eclipse" src="images/footer/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>