blob: 431bc334ba1565649608635b62481d2c51afe434 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Installing Che on Google Cloud Platform :: Eclipse Che Documentation</title>
<link rel="canonical" href="https://www.eclipse.org/che/docs/che-7/installation-guide/installing-che-on-google-cloud-platform/">
<meta name="keywords" content="overview, installing-che-on-google-cloud-platform">
<meta name="generator" content="Antora 2.3.4">
<link rel="stylesheet" href="../../../_/css/site.css">
<link rel="stylesheet" href="../../../_/css/extra.css">
<link rel="stylesheet" href="../../../_/font-awesome-4.7.0/css/font-awesome.min.css">
<link rel="icon" href="../../../favicon.ico" type="image/x-icon">
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-37306001-2"></script>
<script>function gtag(){dataLayer.push(arguments)};window.dataLayer=window.dataLayer||[];gtag('js',new Date());gtag('config','UA-37306001-2')</script>
<script>var uiRootPath = '../../../_'</script>
</head>
<body class="article">
<header class="header" role="banner">
<nav class="navbar">
<div class="navbar-brand">
<div class="navbar-item">
<button class="navbar-burger" data-target="topbar-nav">
<span></span>
<span></span>
<span></span>
</button>
<img src="../../../_/img/icon-eclipse-che.svg" class="navbar-logo" alt="Eclipse Che logo">
<a href="https://www.eclipse.org/che/docs">Eclipse Che Documentation</a>
</div>
</div>
<div id="topbar-nav" class="navbar-menu">
<div class="navbar-end">
<div class="navbar-item hide-for-print">
<script async src="https://cse.google.com/cse.js?cx=002898025167115630151:gnr5edrg2eo"></script>
<div class="gcse-searchbox" enableAutoComplete="true"></div>
</div>
<a class="navbar-item" href="https://www.eclipse.org/che/docs">Home</a>
<a class="navbar-item" href="https://che.eclipse.org/">Blog</a>
<a class="navbar-item" href="https://github.com/eclipse/che">Source Code</a>
</div>
</div>
</nav>
<div class="gcse-searchresults"></div>
</header><div class="body">
<div class="nav-container" data-component="che-7" data-version="master">
<aside class="nav">
<div class="panels">
<div class="nav-panel-menu is-active" data-panel="menu">
<nav class="nav-menu">
<h3 class="title"><a href="../../overview/introduction-to-eclipse-che/">Documentation</a></h3>
<ul class="nav-list">
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../overview/introduction-to-eclipse-che/">Introduction to Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../overview/che-architecture/">Che architecture</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../hosted-che/hosted-che/">Eclipse Che hosted by Red Hat</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<button class="nav-item-toggle"></button>
<span class="nav-text">End-user Guide</span>
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/navigating-che/">Navigating Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/navigating-che-using-the-dashboard/">Navigating Che: dashboard</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/importing-certificates-to-browsers/">Importing certificates to browsers</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/accessing-che-from-openshift-developer-perspective/">Navigating Che from OpenShift Developer Perspective</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/che-theia-ide-basics/">Che-Theia IDE basics</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/defining-custom-commands-for-che-theia/">Defining custom commands for Che-Theia</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/version-control/">Version Control</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/che-theia-troubleshooting/">Che-Theia Troubleshooting</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/differences-in-how-che-theia-webview-works-on-a-single-host-mode-comparing-to-a-multi-host-mode/">Differences in how Che-Theia Webview works on a single-host mode comparing to a multi-host mode</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/workspaces-overview/">Using developer workspaces</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/creating-a-workspace-from-code-sample/">Creating a workspace from code sample</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/creating-a-workspace-from-remote-devfile/">Creating a workspace from a remote devfile using the dashboard</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/creating-a-workspace-from-local-devfile-using-chectl/">Creating a workspace from local devfile using chectl</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/creating-a-workspace-by-importing-the-source-code-of-a-project/">Creating a workspace by importing the source code of a project</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/configuring-a-workspace-with-dashboard/">Configuring a workspace</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/running-a-workspace-with-dashboard/">Running a workspace</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/importing-kubernetes-applications-into-a-workspace/">Importing Kubernetes applications into a workspace</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/remotely-accessing-workspaces/">Remotely accessing workspaces</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/mounting-a-secret-as-a-file-or-an-environment-variable-into-a-workspace-container/">Mounting a secret as a file or an environment variable into a workspace container</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/authenticating-on-scm-server-with-a-personal-access-token/">Authenticating on SCM Server with a personal access token</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/authoring-devfiles/">Authoring devfiles</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/authoring-devfiles-version-1/">Authoring devfiles version 1</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/authoring-devfiles-version-2/">Authoring devfiles version 2</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/customizing-developer-environments/">Customizing developer environments</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/what-is-a-che-theia-plug-in/">What is a Che-Theia plug-in</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/adding-a-vs-code-extension-to-a-workspace/">Adding a VS Code extension to a workspace</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/adding-a-vs-code-extension-to-the-che-plugin-registry/">Adding a VS Code extension to the Che plug-ins registry</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/publishing-metadata-for-a-vs-code-extension/">Publishing a VS Code extension</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/testing-a-visual-studio-code-extension-in-che/">Testing a VS Code extension in Che</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/using-alternative-ides-in-che/">Using alternative IDEs in Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/support-for-jetbrains-ides/">JetBrains IDEs</a>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../end-user-guide/using-jetbrains-intellij-idea-community-edition/">Using IntelliJ Idea Community Edition</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../end-user-guide/using-jetbrains-intellij-idea-ultimate-edition/">Using IntelliJ Idea Ultimate Edition</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../end-user-guide/configuring-an-existing-workspace-to-use-intellij-idea/">Configuring an existing workspace to use IntelliJ IDEA</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../end-user-guide/using-jetbrains-webstorm/">Using WebStorm</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../end-user-guide/provisioning-jetbrains-activation-code-for-offline-use/">Provisioning activation code for offline use</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../end-user-guide/support-for-theia-based-ides/">Theia-based IDEs</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/adding-tools-to-che-after-creating-a-workspace/">Adding tools to Che after creating a workspace</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-private-container-registries/">Using private container registries</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/using-artifact-repositories-in-a-restricted-environment/">Using artifact repositories in a restricted environment</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-maven-artifact-repositories/">Using Maven artifact repositories</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-gradle-artifact-repositories/">Using Gradle artifact repositories</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-python-artifact-repositories/">Using Python artifact repositories</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-go-artifact-repositories/">Using Go artifact repositories</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-nuget-artifact-repositories/">Using NuGet artifact repositories</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-npm-artifact-repositories/">Using npm artifact repositories</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/troubleshooting-che/">Troubleshooting Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/viewing-che-workspaces-logs/">Viewing Che workspaces logs</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/investigating-failures-at-a-workspace-start-using-the-verbose-mode/">Troubleshooting workspace start failures</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/troubleshooting-slow-workspaces/">Troubleshooting slow workspaces</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/troubleshooting-network-problems/">Troubleshooting network problems</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<button class="nav-item-toggle"></button>
<span class="nav-text">Installation Guide</span>
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../supported-platforms/">Supported platforms</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../configuring-the-che-installation/">Configuring the Che installation</a>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../installing-che/">Installing Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../installing-che-in-cloud/">Installing Che in cloud</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-openshift-4-using-operatorhub/">Installing Che on OpenShift 4 using OperatorHub</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-openshift-4-using-cli/">Installing Che on OpenShift 4 using CLI</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-openshift-3-using-the-operator/">Installing Che on OpenShift 3</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-kubespray/">Installing Che on Kubespray</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-aws/">Installing Che on AWS</a>
</li>
<li class="nav-item is-current-page" data-depth="3">
<a class="nav-link" href="./">Installing Che on Google Cloud</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-microsoft-azure/">Installing Che on Microsoft Azure</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../installing-che-locally/">Installing Che locally</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-codeready-containers/">Installing Che on CodeReady Containers</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-docker-desktop/">Installing Che on Docker Desktop</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-minikube/">Installing Che on Minikube</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-minishift/">Installing Che on Minishift</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../installing-che-on-kind/">Installing Che on Kind</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../using-the-chectl-management-tool/">Using the chectl management tool</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../installing-che-in-a-restricted-environment/">Installing Che in restricted environment</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../advanced-configuration/">Advanced configuration</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../advanced-configuration-options-for-the-che-server-component/">Advanced configuration options for Che server</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-namespace-strategies/">Configuring workspace target namespace</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-storage-strategies/">Configuring storage strategies</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-storage-types/">Configuring storage types</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-the-number-of-workspaces-that-a-user-can-run/">Configuring the number of workspaces that a user can run</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-the-number-of-workspaces-that-a-user-can-create/">Configuring the number of workspaces that a user can create</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-workspace-exposure-strategies/">Configuring workspace exposure strategies</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-workspaces-nodeselector/">Configuring workspaces nodeSelector</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-che-hostname/">Configuring Che hostname</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-ingresses/">Configuring Kubernetes Ingress</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-routes/">Configuring OpenShift Route</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../deploying-che-with-support-for-git-repositories-with-self-signed-certificates/">Deploying Che with support for Git repositories with self-signed certificates</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../installing-che-using-storage-classes/">Installing Che using storage classes</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../importing-untrusted-tls-certificates/">Importing untrusted TLS certificates to Che</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../switching-between-external-and-internal-communication/">Switching between external and internal ways in inter-component communication</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../setting-up-the-keycloak-che-username-readonly-theme-for-the-eclipse-che-login-page/">Setting up the Keycloak che-username-readonly theme for the Eclipse Che login page</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../mounting-a-secret-as-a-file-or-an-environment-variable-into-a-container/">Mounting a secret as a file or an environment variable into a Eclipse&#160;Che container</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../enabling-dev-workspace-engine/">Enabling Dev Workspace engine</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../upgrading-che/">Upgrading Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../upgrading-che-using-operatorhub/">Upgrading Che using OperatorHub</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../upgrading-che-using-the-cli-management-tool/">Upgrading Che using the CLI management tool</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../upgrading-che-using-the-cli-management-tool-in-restricted-environment/">Upgrading Che in restricted environment</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../upgrading-che-namespace-strategies-other-than-per-user/">Updating Che namespace strategies other than 'per user'</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../uninstalling-che/">Uninstalling Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../uninstalling-che-after-operatorhub-installation-using-openshift-web-console/">Using the OpenShift web console</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../uninstalling-che-after-operatorhub-installation-using-openshift-cli/">Using OpenShift CLI</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../uninstalling-che-after-chectl-installation/">Using chectl</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<button class="nav-item-toggle"></button>
<span class="nav-text">Administration Guide</span>
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../administration-guide/che-architecture-overview/">Che architecture</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/che-workspace-controller/">Che workspace controller</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/che-workspaces-architecture/">Che workspaces architecture</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../administration-guide/calculating-che-resource-requirements/">Calculating Che resource requirements</a>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../administration-guide/customizing-the-registries/">Customizing the registries</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/building-custom-registry-images/">Building custom registry images</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/running-custom-registries/">Running custom registries</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../administration-guide/retrieving-che-logs/">Retrieving Che logs</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/configuring-server-logging/">Configuring server logging</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/viewing-kubernetes-events/">Accessing Kubernetes events on OpenShift</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/viewing-operator-events/">Viewing the Operator events on OpenShift</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/viewing-che-server-logs/">Viewing Che server logs</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/viewing-external-service-logs/">Viewing external service logs</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/viewing-plug-in-broker-logs/">Viewing Plug-in broker logs</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/collecting-logs-using-chectl/">Collecting logs using chectl</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../administration-guide/monitoring-che/">Monitoring Che</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../administration-guide/tracing-che/">Tracing Che</a>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../administration-guide/backup-and-disaster-recovery/">Backup and disaster recovery</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/external-database-setup/">External database setup</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/persistent-volumes-backups/">Persistent Volumes backups</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../administration-guide/caching-images-for-faster-workspace-start/">Caching images for faster workspace start</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/defining-the-list-of-images-to-pull/">Defining the list of images</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/defining-the-memory-parameters-for-the-image-puller/">Defining the memory settings</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/installing-image-puller-using-che-operator/">Installing using the Che Operator</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/installing-image-puller-on-kubernetes-using-the-image-puller-operator/">Installing using the Kubernetes Image Puller Operator</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/installing-image-puller-on-openshift-using-operatorhub/">Installing on OpenShift 4</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/installing-image-puller-on-openshift-using-openshift-templates/">Installing on OpenShift 3</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/installing-image-puller-on-kubernetes-using-helm/">Installing using Helm</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../administration-guide/managing-identities-and-authorizations/">Managing identities and authorizations</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/authenticating-users/">Authenticating users</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/authorizing-users/">Authorizing users</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/configuring-authorization/">Configuring authorization</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/configuring-openshift-oauth/">Configuring OpenShift OAuth</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../administration-guide/removing-user-data/">Removing user data</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<button class="nav-item-toggle"></button>
<span class="nav-text">Contributor Guide</span>
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/branding-che-theia/">Branding Che-Theia</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/developing-che-theia-plug-ins/">Developing Che-Theia plug-ins</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/testing-che-theia-plug-ins/">Testing Che-Theia plug-ins</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/publishing-che-theia-plug-ins/">Publishing Che-Theia plug-ins</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/adding-support-for-a-new-language/">Adding support for a new language</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/adding-support-for-a-new-debugger/">Adding support for a new debugger</a>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../contributor-guide/che-extensibility-reference/">Che extensibility reference</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../contributor-guide/che-extension-points/">Che extension points</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../contributor-guide/che-theia-plug-in-api/">Che-Theia plug-in API</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../contributor-guide/debug-adapter-protocol/">Debug Adapter Protocol</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../contributor-guide/language-server-protocol/">Language Server Protocol</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<button class="nav-item-toggle"></button>
<span class="nav-text">Extensions</span>
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../extensions/eclipse-che4z/">Eclipse Che4z</a>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../extensions/openshift-connector-overview/">OpenShift Connector</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/features-of-openshift-connector/">Features of OpenShift Connector</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/installing-openshift-connector-in-che/">Installing OpenShift Connector in Eclipse Che</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/authenticating-with-openshift-connector-from-che/">Authenticating with OpenShift Connector from Eclipse Che</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/creating-components-with-openshift-connector-in-che/">Creating Components with OpenShift Connector in Eclipse Che</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/connecting-source-code-from-github-to-a-openshift-component-using-openshift-connector/">Connecting source code from GitHub to a OpenShift Component</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../extensions/telemetry/">Telemetry</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/creating-a-telemetry-plugin/">Creating A Telemetry Plugin</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/the-woopra-telemetry-plugin/">The Woopra Telemetry Plugin</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../extensions/java-lombok/">Java Lombok</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../glossary/che-glossary/">Che glossary</a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<div class="nav-panel-explore" data-panel="explore">
<div class="context">
<span class="title">Documentation</span>
<span class="version">master</span>
</div>
<ul class="components">
<li class="component is-current">
<a class="title" href="../../overview/introduction-to-eclipse-che/">Documentation</a>
<ul class="versions">
<li class="version is-current is-latest">
<a href="../../overview/introduction-to-eclipse-che/">master</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</aside>
</div>
<main class="article">
<div class="toolbar" role="navigation">
<button class="nav-toggle"></button>
<a href="../../overview/introduction-to-eclipse-che/" class="home-link"></a>
<nav class="breadcrumbs" aria-label="breadcrumbs">
<ul>
<li><a href="../../overview/introduction-to-eclipse-che/">Documentation</a></li>
<li>Installation Guide</li>
<li><a href="../installing-che/">Installing Che</a></li>
<li><a href="../installing-che-in-cloud/">Installing Che in cloud</a></li>
<li><a href="./">Installing Che on Google Cloud</a></li>
</ul>
</nav>
<div class="edit-this-page"><a href="https://github.com/eclipse/che-docs/edit/master/modules/installation-guide/pages/installing-che-on-google-cloud-platform.adoc">Edit this Page</a></div>
</div>
<div class="content">
<aside class="toc sidebar" data-title="Contents" data-levels="2">
<div class="toc-menu"></div>
</aside>
<article class="doc">
<h1 class="page">Installing Che on Google Cloud Platform</h1>
<div class="sect1">
<h2 id="preparing-google-cloud-platform-for-installing-che_che"><a class="anchor" href="#preparing-google-cloud-platform-for-installing-che_che"></a>Preparing Google Cloud Platform for installing Che</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Google Cloud Platform (GCP) is a suite of cloud computing services that provides infrastructure as a service, platform as a service, and serverless computing environments.</p>
</div>
<div class="paragraph">
<p>This section provides information about how to configure the GCP environment for installing Eclipse&#160;Che.</p>
</div>
<div class="sect2">
<h3 id="creating-a-google-kubernetes-engine-instance_using_the_SDK_che"><a class="anchor" href="#creating-a-google-kubernetes-engine-instance_using_the_SDK_che"></a>Creating a Google Kubernetes Engine instance</h3>
<div class="paragraph">
<p>This section describes how to create a Google Kubernetes Engine instance.</p>
</div>
<div class="ulist">
<div class="title">Prerequisites</div>
<ul>
<li>
<p>The Google Cloud SDK is available. See <a href="https://cloud.google.com/sdk/install">Installing Google Cloud SDK</a>.</p>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>To install the SDK on macOS, use the <code>$ brew cask install google-cloud-sdk</code> command.</p>
</div>
</td>
</tr>
</table>
</div>
</li>
</ul>
</div>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
<li>
<p>Ensure the <code>gcloud</code> tool is configured:</p>
<div class="listingblock">
<div class="content">
<pre>$ gcloud init</pre>
</div>
</div>
</li>
<li>
<p>Create a new project with the <code>eclipse-che-1</code> ID:</p>
<div class="listingblock">
<div class="content">
<pre>$ gcloud projects create eclipse-che-1</pre>
</div>
</div>
</li>
<li>
<p>Check from GCP Web Console that the Kubernetes engine is available on this project.</p>
</li>
<li>
<p>Configure the different default options (such as using the <code>europe-west1-b</code> zone) in the shell:</p>
<div class="listingblock">
<div class="content">
<pre>$ gcloud config set project eclipse-che-1
$ gcloud config set compute/zone europe-west1-b
$ gcloud config set compute/region europe-west1</pre>
</div>
</div>
</li>
<li>
<p>Check all the components are up-to-date:</p>
<div class="listingblock">
<div class="content">
<pre>$ gcloud components update
All components are up to date.</pre>
</div>
</div>
</li>
<li>
<p>Create a cluster with the name <code>eclipse-che</code>:</p>
<div class="listingblock">
<div class="content">
<pre>$ gcloud container clusters create eclipse-che --zone europe-west1-b</pre>
</div>
</div>
</li>
<li>
<p>Wait for the cluster to be ready.</p>
</li>
<li>
<p>This commands updates the Kubernetes context. To verify it:</p>
<div class="listingblock">
<div class="content">
<pre>$ kubectl config current-context
gke_eclipse-che-1_europe-west1-b_eclipse-che</pre>
</div>
</div>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="installing-ingress-on-kubernetes_che"><a class="anchor" href="#installing-ingress-on-kubernetes_che"></a>Installing Ingress on Kubernetes</h3>
<div class="paragraph">
<p>Eclipse&#160;Che uses Ingress.</p>
</div>
<div class="paragraph">
<div class="title">Procedure</div>
<p>To install Ingress-nginx:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Install the cloud configuration:</p>
<div class="listingblock">
<div class="content">
<pre>$ kubectl apply \
-f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.41.0/deploy/static/provider/cloud/deploy.yaml</pre>
</div>
</div>
<div class="paragraph">
<p>The following output confirms that the Ingress controller is running:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>$ kubectl get pods --namespace ingress-nginx
NAME READY STATUS RESTARTS AGE
nginx-ingress-controller-76c86d76c4-gswmg 1/1 Running 0 9m3s</pre>
</div>
</div>
<div class="paragraph">
<p>Wait for the container to run.</p>
</div>
</li>
<li>
<p>Wait for the external IP. Note that a <code>&lt;pending&gt;</code> status for the external IP is shown before the exact external IP address is displayed.</p>
<div class="listingblock">
<div class="content">
<pre>$ kubectl get services --namespace ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx LoadBalancer 10.0.97.244 40.89.129.194 80:31107/TCP,443:30629/TCP 8m59s</pre>
</div>
</div>
</li>
<li>
<p>Get the external IP of Ingress-nginx.</p>
<div class="listingblock">
<div class="content">
<pre>$ kubectl get services --namespace ingress-nginx \
-o jsonpath='{.items[].status.loadBalancer.ingress[0].ip}'
40.89.129.194</pre>
</div>
</div>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="installing-dns-on-google-cloud-platform_che"><a class="anchor" href="#installing-dns-on-google-cloud-platform_che"></a>Installing DNS on Google Cloud Platform</h3>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
<li>
<p>Using the Cloud DNS, create a zone called <strong>eclipse-che</strong> and, for example, a DNS name <strong>gcp.my-ide.cloud</strong>. Click the <b class="button">Create</b> button.</p>
<div class="imageblock">
<div class="content">
<a class="image" href="../_images/installation/creating-dns-zone-on-gcp.png"><img src="../_images/installation/creating-dns-zone-on-gcp.png" alt="Creating DNS zone on Google Cloud Platform"></a>
</div>
</div>
<div class="paragraph">
<p>The Cloud DNS zone is created.</p>
</div>
<div class="imageblock">
<div class="content">
<a class="image" href="../_images/installation/cloud-dns-zone-on-gcp.png"><img src="../_images/installation/cloud-dns-zone-on-gcp.png" alt="Cloud DNS zone on Google Cloud Platform"></a>
</div>
</div>
</li>
<li>
<p>Click the <strong>Registrar Setup</strong> link in the upper right corner of the window. The name servers (NS) to be added to the registrar are displayed.</p>
<div class="imageblock">
<div class="content">
<a class="image" href="../_images/installation/registrar-setup-gcp.png"><img src="../_images/installation/registrar-setup-gcp.png" alt="Registrar setup on Google Cloud Platform"></a>
</div>
</div>
</li>
<li>
<p>Update the DNS zone (example: <code>ovh</code> domain).</p>
</li>
<li>
<p>Add the <code>*.gcp.my-ide.cloud</code> entry to the external Ingress IP on the cloud DNS.</p>
<div class="imageblock">
<div class="content">
<a class="image" href="../_images/installation/dns-settings-gcp.png"><img src="../_images/installation/dns-settings-gcp.png" alt="DNS settings on Google Cloud Platform"></a>
</div>
</div>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="enabling-the-tls-dns-challenge-on-google-cloud-platform_che"><a class="anchor" href="#enabling-the-tls-dns-challenge-on-google-cloud-platform_che"></a>Enabling the TLS and DNS challenge on Google Cloud Platform</h3>
<div class="paragraph">
<div class="title">Procedure</div>
<p>To use the Cloud DNS and TLS, service accounts must be enabled, and cert-manager must manage the DNS challenge for the <em>Let’s Encrypt</em> service.</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Create a service account with the given name:</p>
<div class="listingblock">
<div class="content">
<pre>$ gcloud iam service-accounts create dns01-solver --display-name "dns01-solver"</pre>
</div>
</div>
</li>
<li>
<p>Add the policy binding to the IAM policy of the <strong>eclipse-che-1</strong> project (replace the <strong>eclipse-che-1</strong> project name with the name of your project):</p>
<div class="listingblock">
<div class="content">
<pre>$ gcloud projects add-iam-policy-binding eclipse-che-1 \
--member serviceAccount:dns01-solver@eclipse-che-1.iam.gserviceaccount.com \
--role roles/dns.admin</pre>
</div>
</div>
<div class="paragraph">
<p>The following is the output of this command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>Updated IAM policy for project [eclipse-che-1].
bindings:
- members:
- serviceAccount:service-779451692063@compute-system.iam.gserviceaccount.com
role: roles/compute.serviceAgent
- members:
- serviceAccount:service-779451692063@container-engine-robot.iam.gserviceaccount.com
role: roles/container.serviceAgent
- members:
- serviceAccount:dns01-solver@eclipse-che-1.iam.gserviceaccount.com
role: roles/dns.admin
- members:
- serviceAccount:779451692063-compute@developer.gserviceaccount.com
- serviceAccount:779451692063@cloudservices.gserviceaccount.com
- serviceAccount:service-779451692063@containerregistry.iam.gserviceaccount.com
role: roles/editor
- members:
- user:&lt;email-address&gt;
role: roles/owner
etag: &lt;some-tag&gt;
version: 1</pre>
</div>
</div>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="creating-a-service-account-secret-on-google-cloud-platform_che"><a class="anchor" href="#creating-a-service-account-secret-on-google-cloud-platform_che"></a>Creating a Service Account Secret on Google Cloud Platform</h3>
<div class="paragraph">
<div class="title">Procedure</div>
<p>To access the service account, cert-manager uses a key stored in a Kubernetes Secret.</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Create a key for the service account and download it as a JSON file:</p>
<div class="listingblock">
<div class="content">
<pre>$ gcloud iam service-accounts keys create key.json \
--iam-account dns01-solver@eclipse-che-1.iam.gserviceaccount.com</pre>
</div>
</div>
<div class="paragraph">
<p>The following is the output of the preceding command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>created key [05e94ca2e7754b94a63049605ee8d2813d16ff37] of type [json] as [key.json] for [dns01-solver@eclipse-che-1.iam.gserviceaccount.com]</pre>
</div>
</div>
<div class="paragraph">
<p>The key file is generated:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>$ ls -la key.json
-rw------- 1 joe staff 2318 Jul 29 12:13 key.json</pre>
</div>
</div>
<div class="admonitionblock important">
<table>
<tr>
<td class="icon">
<i class="fa icon-important" title="Important"></i>
</td>
<td class="content">
Keep the key file safe, and do not share it with anyone because it can be used to gain access to your cloud resources. The key file can be deleted after it has been used to generate the Secret.
</td>
</tr>
</table>
</div>
</li>
<li>
<p>Create cert-manager namespace</p>
<div class="listingblock">
<div class="content">
<pre>$ kubectl create ns cert-manager</pre>
</div>
</div>
</li>
<li>
<p>Create a Secret from this file.</p>
<div class="listingblock">
<div class="content">
<pre>$ kubectl create secret generic clouddns-dns01-solver-svc-acct --from-file=key.json --namespace=cert-manager</pre>
</div>
</div>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="installing-cert-manager-on-kubernetes_che"><a class="anchor" href="#installing-cert-manager-on-kubernetes_che"></a>Installing cert-manager on Kubernetes</h3>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
<li>
<p>To install cert-manager:</p>
<div class="listingblock">
<div class="content">
<pre>$ kubectl label namespace cert-manager certmanager.k8s.io/disable-validation=true
$ kubectl apply \
-f https://github.com/jetstack/cert-manager/releases/download/v0.15.0/cert-manager.yaml \
--validate=false</pre>
</div>
</div>
</li>
<li>
<p>Create the <strong>che</strong> namespace if it does not exist already:</p>
<div class="listingblock">
<div class="content">
<pre>$ kubectl create namespace <em>eclipse-che</em>
namespace/<em>eclipse-che</em> created</pre>
</div>
</div>
</li>
<li>
<p>Create the certificate issuer. Replace your email address in the <code>email</code> field:</p>
<div class="listingblock">
<div class="content">
<pre>$ cat &lt;&lt;EOF | kubectl apply -f -
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
name: che-certificate-issuer
spec:
acme:
solvers:
- dns01:
clouddns:
project: eclipse-che-1
serviceAccountSecretRef:
key: key.json
name: clouddns-dns01-solver-svc-acct
email: joe@example.com
privateKeySecretRef:
name: letsencrypt
server: https://acme-v02.api.letsencrypt.org/directory
EOF</pre>
</div>
</div>
</li>
<li>
<p>Create the certificate. Edit the domain name:</p>
<div class="listingblock">
<div class="content">
<pre>$ cat &lt;&lt;EOF | kubectl apply -f -
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
name: che-tls
namespace: eclipse-che
spec:
secretName: che-tls
issuerRef:
name: che-certificate-issuer
kind: ClusterIssuer
dnsNames:
- '*.gcp.my-ide.cloud'
EOF</pre>
</div>
</div>
</li>
<li>
<p>Check that the <code>issuerRef</code> name is the same as the <code>ClusterIssuer</code>. A new DNS challenge is added to the DNS zone for <em>Let’s Encrypt</em>.</p>
<div class="imageblock">
<div class="content">
<a class="image" href="../_images/installation/dns-challenge-gcp.png"><img src="../_images/installation/dns-challenge-gcp.png" alt="DNS challenge"></a>
</div>
</div>
</li>
<li>
<p>The cert-manager logs contain information about the DNS challenge. To get the logs (here, <code>cert-manager-8d478bb45-2924h</code> is the name of the cert-manager Pod):</p>
<div class="listingblock">
<div class="content">
<pre>$ kubectl logs -f -n cert-manager cert-manager-8d478bb45-2924h
I0729 13:50:39.414729 1 dns.go:112] Checking DNS propagation for "gcp.my-ide.cloud" using name servers: [10.112.0.10:53]
E0729 13:50:39.422521 1 sync.go:180] cert-manager/controller/challenges "msg"="propagation check failed" "error"="DNS record for \"gcp.my-ide.cloud\" not yet propagated" "dnsName"="gcp.my-ide.cloud" "resource_kind"="Challenge" "resource_name"="che-tls-3529929423-0" "resource_namespace"="che" "type"="dns-01"
I0729 13:50:39.422598 1 controller.go:219] cert-manager/controller/challenges "level"=0 "msg"="finished processing work item" "key"="che/che-tls-3529929423-0"
I0729 13:50:49.406767 1 controller.go:213] cert-manager/controller/challenges "level"=0 "msg"="syncing resource" "key"="che/che-tls-3529929423-0"
I0729 13:50:49.409802 1 dns.go:112] Checking DNS propagation for "gcp.my-ide.cloud" using name servers: [10.112.0.10:53]
E0729 13:50:49.420131 1 sync.go:180] cert-manager/controller/challenges "msg"="propagation check failed" "error"="DNS record for \"gcp.my-ide.cloud\" not yet propagated" "dnsName"="gcp.my-ide.cloud" "resource_kind"="Challenge" "resource_name"="che-tls-3529929423-0" "resource_namespace"="<em>&lt;eclipse-che&gt;</em>" "type"="dns-01"
I0729 13:50:49.420198 1 controller.go:219] cert-manager/controller/challenges "level"=0 "msg"="finished processing work item" "key"="che/che-tls-3529929423-0"</pre>
</div>
</div>
</li>
<li>
<p>Ensure that the certificate is ready:</p>
<div class="listingblock">
<div class="content">
<pre>$ kubectl describe certificate/che-tls -n eclipse-che
Status:
Conditions:
Last Transition Time: 2019-07-29T13:50:35Z
Message: Certificate issuance in progress. Temporary certificate issued.
Reason: TemporaryCertificate
Status: False
Type: Ready
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Generated 47s cert-manager Generated new private key
Normal GenerateSelfSigned 47s cert-manager Generated temporary self signed certificate
Normal OrderCreated 47s cert-manager Created Order resource "che-tls-3529929423"</pre>
</div>
</div>
<div class="paragraph">
<p>Wait for the <code>Status</code> to become <code>OK</code>, and ensure that the log contains the following entry:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>I0729 13:56:26.140886 1 conditions.go:143] Found status change for Certificate "che-tls" condition "Ready": "False" -&gt; "True"; setting lastTransitionTime to 2019-07-29 13:56:26.140866531 +0000 UTC m=+4557.134131468</pre>
</div>
</div>
</li>
<li>
<p>Ensure that the status is up-to-date:</p>
<div class="listingblock">
<div class="content">
<pre>$ kubectl describe certificate/che-tls -n <em>&lt;eclipse-che&gt;</em>
Status:
Conditions:
Last Transition Time: 2019-07-29T13:56:26Z
Message: Certificate is up to date and has not expired
Reason: Ready
Status: True
Type: Ready
Not After: 2019-10-27T12:56:24Z</pre>
</div>
</div>
</li>
</ol>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="installing-che-on-kubernetes-using-chectl_and_helm_che"><a class="anchor" href="#installing-che-on-kubernetes-using-chectl_and_helm_che"></a>Installing Che on Google Cloud Platform using chectl</h2>
<div class="sectionbody">
<div class="ulist">
<div class="title">Prerequisites</div>
<ul>
<li>
<p>The <code>chectl</code> management tool is available. See <a href="../using-the-chectl-management-tool/" class="page">Using the chectl management tool</a>.</p>
</li>
<li>
<p>The <code>helm</code> tool is available, with version 2.15 or higher. See <a href="https://helm.sh/">Helm</a>.</p>
</li>
</ul>
</div>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
<li>
<p>Prepare the helmchart template <code>patch.yaml</code> file for the proper Dashboard ingress path exposure:</p>
<div class="listingblock">
<div class="content">
<pre>$ cat &gt;patch.yaml&lt;&lt;EOF
&gt; dashboard:
&gt; ingressPath: /dashboard/*
&gt; EOF</pre>
</div>
</div>
</li>
<li>
<p>Run the following <code>chectl</code> command to install Che on Google Cloud Platform:</p>
<div class="listingblock">
<div class="content">
<pre>$ chectl server:deploy --installer=helm --platform=k8s --domain=gcp.my-ide.cloud --multiuser --helm-patch-yaml patch.yaml
› Current Kubernetes context: 'current-context'
✔ Verify Kubernetes API...OK
✔ 👀 Looking for an already existing Eclipse&#160;Che instance
✔ Verify if Eclipse&#160;Che is deployed into namespace "eclipse-che"...it is not
✔ ✈️ Kubernetes preflight checklist
✔ Verify if kubectl is installed
✔ Verify remote kubernetes status...done.
✔ Check Kubernetes version: Found v1.15.12-gke.2.
✔ Verify domain is set...set to gcp.my-ide.cloud.
↓ Check if cluster accessible [skipped]
✔ Following Eclipse&#160;Che logs
↓ Start following Operator logs [skipped]
✔ Start following Eclipse&#160;Che server logs...done
✔ Start following Postgres logs...done
✔ Start following Keycloak logs...done
✔ Start following Plugin registry logs...done
✔ Start following Devfile registry logs...done
✔ Start following namespace events...done
✔ 🏃‍ Running Helm to install Eclipse&#160;Che
✔ Verify if helm is installed
✔ Check Helm Version: Found v3.4.1+gc4e7485
✔ Create Namespace (eclipse-che)...does already exist.
✔ Check Eclipse&#160;Che TLS certificate...self-signed TLS certificate secret found
✔ Check Cluster Role Binding...does not exists.
✔ Preparing Eclipse&#160;Che Helm Chart...done.
✔ Updating Helm Chart dependencies...done.
✔ Deploying Eclipse&#160;Che Helm Chart...done.
✔ ✅ Post installation checklist
✔ PostgreSQL pod bootstrap
✔ Scheduling...done
✔ Downloading images...done
✔ Starting...done
✔ Devfile registry pod bootstrap
✔ Scheduling...done
✔ Downloading images...done
✔ Starting...done
✔ Plugin registry pod bootstrap
✔ Scheduling...done
✔ Downloading images...done
✔ Starting...done
✔ Eclipse&#160;Che pod bootstrap
✔ Scheduling...done
✔ Downloading images...done
✔ Starting...done
✔ Eclipse&#160;Che status check...done
✔ Prepare post installation output...done
✔ Show important messages
✔ Eclipse&#160;Che 7.32 has been successfully deployed.
✔ Documentation : https://www.eclipse.org/che/docs
✔ -------------------------------------------------------------------------------
✔ Users Dashboard : https://eclipse-che-eclipse-che.gcp.my-ide.cloud
✔ Admin user login : "XXX:XXX". NOTE: must change after first login.
✔ -------------------------------------------------------------------------------
✔ Plug-in Registry : https://plugin-registry-eclipse-che.gcp.my-ide.cloud/v3
✔ Devfile Registry : https://devfile-registry-eclipse-che.gcp.my-ide.cloud
✔ -------------------------------------------------------------------------------
✔ Identity Provider URL : https://keycloak-eclipse-che.gcp.my-ide.cloud/auth
✔ Identity Provider login : "XXX:XXX".
✔ -------------------------------------------------------------------------------</pre>
</div>
</div>
</li>
</ol>
</div>
<div class="olist arabic">
<div class="title">Verification steps</div>
<ol class="arabic">
<li>
<p>Investigate Eclipse&#160;Che logs:</p>
<div class="listingblock">
<div class="content">
<pre>$ chectl server:logs --namespace eclipse-che</pre>
</div>
</div>
</li>
<li>
<p>Verify that certificates are set correctly</p>
<div class="olist loweralpha">
<ol class="loweralpha" type="a">
<li>
<p>Open Eclipse&#160;Che server URL from the output above</p>
</li>
<li>
<p>Click on the lock in address bar</p>
</li>
<li>
<p>Verify it has <strong>Connection is secure</strong></p>
</li>
</ol>
</div>
</li>
</ol>
</div>
<div class="ulist">
<div class="title">Additional resources</div>
<ul>
<li>
<p><a href="../../end-user-guide/navigating-che-using-the-dashboard/" class="page">Navigating Che using the Dashboard</a>.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="configuring-che-on-google-cloud-platform_che"><a class="anchor" href="#configuring-che-on-google-cloud-platform_che"></a>Configuring Che on Google Cloud Platform</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The following section describes configuration guidelines after a Eclipse&#160;Che installation on Google Cloud Platform.</p>
</div>
<div class="sect2">
<h3 id="configuring-the-che-operator-checluster-resource-with-kubectl_che"><a class="anchor" href="#configuring-the-che-operator-checluster-resource-with-kubectl_che"></a>Configuring CheCluster Custom Resource with kubectl</h3>
<div class="paragraph">
<p>Edit the CheCluster custom resource configuration with kubectl:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>kubectl edit CheCluster/eclipse-che -n eclipse-che</pre>
</div>
</div>
<div class="paragraph">
<p>For more details on configuring CheCluster custom resource, see <a href="../configuring-the-che-installation/" class="page">Configuring the Che installation</a></p>
</div>
</div>
<div class="sect2">
<h3 id="sizing-google-cloud-node-pools-for-your-eclipse-che-workspaces_che"><a class="anchor" href="#sizing-google-cloud-node-pools-for-your-eclipse-che-workspaces_che"></a>Sizing Google Cloud node pools for your Eclipse Che workspaces</h3>
<div class="paragraph">
<p>The default node pool is using machine types <code>n1-standard-1</code>. You may need to use different kind of machine to run your workspaces. See <a href="https://cloud.google.com/compute/docs/machine-types?hl=en#n1_standard_machine_types" class="bare">https://cloud.google.com/compute/docs/machine-types?hl=en#n1_standard_machine_types</a></p>
</div>
<div class="paragraph">
<p>Changing the machine type configuration of an existing node pool is not possible with Google Cloud Platform.</p>
</div>
<div class="paragraph">
<p>One solution is to create a new node pool and delete the existing one afterwards. Google Kubernetes Engine would then transfer the workloads to the new node pool automatically.</p>
</div>
<div class="paragraph">
<p>Another solution is to have two node pools with one dedicated to the workspaces by configuring Eclipse&#160;Che with a NodeSelector. See <a href="../configuring-workspaces-nodeselector/" class="page">Configuring workspaces nodeSelector</a>.</p>
</div>
<div class="imageblock">
<div class="content">
<a class="image" href="../_images/installation/gcp-new-nodepool.png"><img src="../_images/installation/gcp-new-nodepool.png" alt="Google Cloud Platform new node pool"></a>
</div>
</div>
<div class="imageblock">
<div class="content">
<a class="image" href="../_images/installation/gcp-new-nodepool-select-machine-type-standard.png"><img src="../_images/installation/gcp-new-nodepool-select-machine-type-standard.png" alt="Google Cloud Platform new node pool select machine type"></a>
</div>
</div>
<div class="paragraph">
<p>Preferably choose machine types according the workspaces CPU and memory requirements.</p>
</div>
</div>
</div>
</div>
</article>
</div>
</main>
</div>
<footer class="footer">
<div><a href="https://www.eclipse.org" target="_blank">Eclipse Foundation</a> |
<a href="https://www.eclipse.org/legal/privacy.php" target="_blank">Privacy Policy</a> |
<a href="https://www.eclipse.org/legal/termsofuse.php" target="_blank">Terms of Use</a> |
<a href="https://www.eclipse.org/legal/epl-2.0/" target="_blank">Eclipse Public License</a> |
<a href="https://www.eclipse.org/legal" target="_blank">Legal Resources</a></div>
</footer>
<script src="../../../_/js/site.js"></script>
<script async src="../../../_/js/vendor/highlight.js"></script>
</body>
</html>