| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width,initial-scale=1"> |
| <title>Installing Che on Microsoft Azure :: Eclipse Che Documentation</title> |
| <link rel="canonical" href="https://www.eclipse.org/che/docs/che-7/installation-guide/installing-che-on-microsoft-azure/"> |
| <meta name="keywords" content="overview, installing-che-on-microsoft-azure"> |
| <meta name="generator" content="Antora 2.3.3"> |
| <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> |
| </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="#">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/">Eclipse Che 7 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/">Hosted Che</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> |
| </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/configuring-a-workspace-using-a-devfile/">Configuring a workspace using a devfile</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../../end-user-guide/making-a-workspace-portable-using-a-devfile/">Making a workspace portable using a devfile</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../../end-user-guide/creating-and-configuring-a-new-workspace/">Creating and configuring a new workspace</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../../end-user-guide/importing-a-kubernetes-application-into-a-workspace/">Importing a Kubernetes application 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/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-by-importing-source-code-of-a-project/">Creating a workspace by importing source code of a project</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> |
| </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/using-alternative-ides-in-che/">Using alternative IDEs in Che</a> |
| </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> |
| </ul> |
| </li> |
| <li class="nav-item" data-depth="1"> |
| <button class="nav-item-toggle"></button> |
| <a class="nav-link" href="../../end-user-guide/configuring-oauth-authorization/">Configuring OAuth authorization</a> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../../end-user-guide/configuring-github-oauth/">Configuring GitHub OAuth</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../../end-user-guide/configuring-openshift-oauth/">Configuring OpenShift OAuth</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/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> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../../end-user-guide/starting-a-che-workspace-in-debug-mode/">Starting a workspace in debug mode</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../../end-user-guide/restarting-a-che-workspace-in-debug-mode-after-start-failure/">Restarting a workspace in debug mode after start failure</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</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" data-depth="3"> |
| <a class="nav-link" href="../installing-che-on-google-cloud-platform/">Installing Che on Google Cloud</a> |
| </li> |
| <li class="nav-item is-current-page" data-depth="3"> |
| <a class="nav-link" href="./">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 namespace strategies</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="../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="../configuring-storage-types/">Configuring storage types</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../importing-tls-certificates-to-che-server-java-truststore/">Importing TLS certificates to Che server Java truststore</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> |
| </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-devfile-and-plug-in-registries/">Customizing devfile and plug-in registries</a> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../../administration-guide/building-and-running-a-custom-registry-image/">Building and running a custom registry image</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../../administration-guide/including-the-plug-in-binaries-in-the-registry-image/">Including the plug-in binaries in the registry image</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../../administration-guide/editing-a-devfile-and-plug-in-at-runtime/">Editing a devfile and plug-in at runtime</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../../administration-guide/using-a-visual-studio-code-extension-in-che/">Using a VS Code extension in Che</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../../administration-guide/testing-a-visual-studio-code-extension-in-che/">Testing a VS Code extension in Che</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/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-che-workspaces-logs/">Viewing Che workspaces 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/managing-users/">Managing users</a> |
| <ul class="nav-list"> |
| <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/removing-user-data/">Removing user data</a> |
| </li> |
| </ul> |
| </li> |
| <li class="nav-item" data-depth="1"> |
| <button class="nav-item-toggle"></button> |
| <a class="nav-link" href="../../administration-guide/securing-che/">Securing Che</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> |
| </ul> |
| </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"> |
| <a class="nav-link" href="../../administration-guide/caching-images-for-faster-workspace-start/">Caching images for faster workspace start</a> |
| </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"> |
| <a class="nav-link" href="../../extensions/telemetry/">Telemetry</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">Eclipse Che 7 Documentation</span> |
| <span class="version">Stable</span> |
| </div> |
| <ul class="components"> |
| <li class="component"> |
| <span class="title">devfile</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../devfile/">master</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component is-current"> |
| <span class="title">Eclipse Che 7 Documentation</span> |
| <ul class="versions"> |
| <li class="version is-current is-latest"> |
| <a href="../../overview/introduction-to-eclipse-che/">Stable</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/">Eclipse Che 7 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 Microsoft Azure</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-microsoft-azure.adoc">Edit this Page</a></div> |
| </div> |
| <div class="content"> |
| <article class="doc"> |
| <h1 class="page">Installing Che on Microsoft Azure</h1> |
| <div id="preamble"> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Microsoft Azure is a cloud computing service created by Microsoft for building, testing, deploying, and managing applications and services through Microsoft-managed data centers.</p> |
| </div> |
| <div class="paragraph"> |
| <p>This section provides information about installing, enabling, and basic use of Che on Microsoft Azure.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="preparing-azure-for-installing-che_installing-che-on-microsoft-azure"><a class="anchor" href="#preparing-azure-for-installing-che_installing-che-on-microsoft-azure"></a>Preparing Azure for installing Che</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <div class="title">Procedure</div> |
| <p>To set up the Azure environment for Che:</p> |
| </div> |
| <div class="olist arabic"> |
| <ol class="arabic"> |
| <li> |
| <p>Install the Azure command-line tool. For details, see <a href="https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest">Install the Azure CLI</a>.</p> |
| <div class="paragraph"> |
| <p>For example, on macOS:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ brew update && brew install azure-cli</pre> |
| </div> |
| </div> |
| </li> |
| <li> |
| <p>Log in to Azure:</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ az login</pre> |
| </div> |
| </div> |
| </li> |
| <li> |
| <p>Create an Azure group (to list the locations, use the <code>az account list-locations</code> command):</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ az group create --name eclipseCheResourceGroup --location francecentral |
| { |
| "id": "/subscriptions/ab0f7986-a280-481c-a47d-98fa45ff94ca/resourceGroups/eclipseCheResourceGroup", |
| "location": "francecentral", |
| "managedBy": null, |
| "name": "eclipseCheResourceGroup", |
| "properties": { |
| "provisioningState": "Succeeded" |
| }, |
| "tags": null, |
| "type": null |
| }</pre> |
| </div> |
| </div> |
| </li> |
| <li> |
| <p>Create the cluster:</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ az aks create --resource-group eclipseCheResourceGroup \ |
| --name eclipse-che --node-count 1 --enable-addons monitoring --generate-ssh-keys</pre> |
| </div> |
| </div> |
| </li> |
| <li> |
| <p>Configure <code>kubectl</code>:</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ az aks get-credentials --name eclipse-che --resource-group eclipseCheResourceGroup |
| Merged "eclipse-che" as current context in /Users/benoitf/.kube/config</pre> |
| </div> |
| </div> |
| </li> |
| <li> |
| <p>Check the Kubernetes context:</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ kubectl config current-context |
| eclipse-che |
| |
| $ kubectl get pods --all-namespaces</pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>All the Pods in the running state are displayed.</p> |
| </div> |
| </li> |
| </ol> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="installing-ingress-on-kubernetes_installing-che-on-microsoft-azure"><a class="anchor" href="#installing-ingress-on-kubernetes_installing-che-on-microsoft-azure"></a>Installing Ingress on Kubernetes</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Eclipse 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.34.1/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><pending></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> |
| <div class="sect1"> |
| <h2 id="configuring-DNS-on-azure_installing-che-on-microsoft-azure"><a class="anchor" href="#configuring-DNS-on-azure_installing-che-on-microsoft-azure"></a>Configuring DNS on Azure</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <div class="title">Procedure</div> |
| <p>To configure DNS on Azure:</p> |
| </div> |
| <div class="olist arabic"> |
| <ol class="arabic"> |
| <li> |
| <p>In the Azure web console, navigate to <strong>Home</strong> → <strong>DNS zones</strong>.</p> |
| <div class="imageblock"> |
| <div class="content"> |
| <a class="image" href="../_images/installation/dns-zone-in-microsoft-azure.png"><img src="../_images/installation/dns-zone-in-microsoft-azure.png" alt="dns zone in microsoft azure"></a> |
| </div> |
| </div> |
| </li> |
| <li> |
| <p>Create a new zone.</p> |
| <div class="olist loweralpha"> |
| <ol class="loweralpha" type="a"> |
| <li> |
| <p>In the <strong>Resource group</strong> drop-down list, click <strong>eclipseCheResourceGroup</strong>.</p> |
| <div class="imageblock"> |
| <div class="content"> |
| <a class="image" href="../_images/installation/selecting-the-resource-group.png"><img src="../_images/installation/selecting-the-resource-group.png" alt="selecting the resource group"></a> |
| </div> |
| </div> |
| </li> |
| <li> |
| <p>In the <strong>Instance details</strong> section, in the <strong>Name</strong> field, type the name of the domain (<strong>azr.my-ide.cloud</strong>, in this case).</p> |
| </li> |
| <li> |
| <p>Click the <b class="button">Review + create</b> button.</p> |
| <div class="imageblock"> |
| <div class="content"> |
| <a class="image" href="../_images/installation/entering-the-name-fo-the-domain.png"><img src="../_images/installation/entering-the-name-fo-the-domain.png" alt="entering the name fo the domain"></a> |
| </div> |
| </div> |
| </li> |
| </ol> |
| </div> |
| </li> |
| <li> |
| <p>Click the <b class="button">Create</b> button.</p> |
| <div class="imageblock"> |
| <div class="content"> |
| <a class="image" href="../_images/installation/completing-the-creation-of-the-zone.png"><img src="../_images/installation/completing-the-creation-of-the-zone.png" alt="completing the creation of the zone"></a> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>The created zone and the list of name servers (NS) are displayed in the <strong>DNS Zones</strong> section.</p> |
| </div> |
| <div class="imageblock"> |
| <div class="content"> |
| <a class="image" href="../_images/installation/list-of-created-zones-and-NS.png"><img src="../_images/installation/list-of-created-zones-and-NS.png" alt="list of created zones and NS"></a> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>These servers must be configured with the registrar of the domain.</p> |
| </div> |
| </li> |
| <li> |
| <p>Navigate to the Azure DNS zone, and click the <b class="button">+ Record set</b> button (<span class="image"><img src="../_images/installation/record-set-button.png" alt="record set button" width="25px"></span>).</p> |
| </li> |
| <li> |
| <p>To add a record set:</p> |
| <div class="olist loweralpha"> |
| <ol class="loweralpha" type="a"> |
| <li> |
| <p>In the <strong>Name</strong> field, type <em>*</em>.</p> |
| </li> |
| <li> |
| <p>In the <strong>IP Address</strong> field, select the external IP of Ingress-nginx controller that the user had obtained in the <a href="#installing-ingress-on-kubernetes_installing-che-on-microsoft-azure">Installing Ingress on Kubernetes</a> section (<strong>40.89.129.194</strong>, in this case).</p> |
| <div class="imageblock"> |
| <div class="content"> |
| <a class="image" href="../_images/installation/adding-a-record-set.png"><img src="../_images/installation/adding-a-record-set.png" alt="adding a record set"></a> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>The following is an example of an added DNS zone:</p> |
| </div> |
| <div class="imageblock"> |
| <div class="content"> |
| <a class="image" href="../_images/installation/example-of-an-added-dns-zone.png"><img src="../_images/installation/example-of-an-added-dns-zone.png" alt="example of an added dns zone"></a> |
| </div> |
| </div> |
| </li> |
| </ol> |
| </div> |
| </li> |
| </ol> |
| </div> |
| <div class="sect2"> |
| <h3 id="enabling-the-TLS-DNS-challenge-on-azure_installing-che-on-microsoft-azure"><a class="anchor" href="#enabling-the-TLS-DNS-challenge-on-azure_installing-che-on-microsoft-azure"></a>Enabling the TLS and DNS challenge on Azure</h3> |
| <div class="paragraph"> |
| <p>To use Azure DNS and TLS, permissions must be granted to have cert-manager managing the DNS challenge for the <em>Let’s Encrypt</em> service.</p> |
| </div> |
| <div class="olist arabic"> |
| <div class="title">Procedure</div> |
| <ol class="arabic"> |
| <li> |
| <p>Set the variable for the domain:</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>AZURE_CERT_MANAGER_DNS_NAME=azr.my-ide.cloud</pre> |
| </div> |
| </div> |
| </li> |
| <li> |
| <p>Generate the secrets:</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>AZURE_CERT_MANAGER_SP_APP_ID=$(az ad sp create-for-rbac --name cert-manager-eclipse-che --query "appId" --output tsv) |
| AZURE_CERT_MANAGER_SP_PASSWORD=$(az ad sp create-for-rbac --name cert-manager-eclipse-che --query "password" --output tsv)</pre> |
| </div> |
| </div> |
| </li> |
| <li> |
| <p>Lower the permissions of the service principal (SP):</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ az role assignment delete --assignee $AZURE_CERT_MANAGER_SP_APP_ID --role Contributor</pre> |
| </div> |
| </div> |
| </li> |
| <li> |
| <p>Give access to the DNS zone:</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>DNS_ID=$(az network dns zone show --name $AZURE_CERT_MANAGER_DNS_NAME --resource-group eclipseCheResourceGroup --query "id" --output tsv) |
| |
| $ az role assignment create --assignee $AZURE_CERT_MANAGER_SP_APP_ID \ |
| --role "DNS Zone Contributor" --scope $DNS_ID</pre> |
| </div> |
| </div> |
| </li> |
| <li> |
| <p>Check the permissions:</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ az role assignment list --assignee $AZURE_CERT_MANAGER_SP_APP_ID</pre> |
| </div> |
| </div> |
| </li> |
| <li> |
| <p>Get the Service Principal App ID and password for the configuration:</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ echo ID=$AZURE_CERT_MANAGER_SP_APP_ID |
| $ echo PASSWORD=$AZURE_CERT_MANAGER_SP_PASSWORD</pre> |
| </div> |
| </div> |
| </li> |
| </ol> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="creating-a-service-account-secret-on-azure_installing-che-on-microsoft-azure"><a class="anchor" href="#creating-a-service-account-secret-on-azure_installing-che-on-microsoft-azure"></a>Creating a Service Account Secret on Azure</h3> |
| <div class="paragraph"> |
| <p>The secret must be in the <strong>cert-manager</strong> namespace. Otherwise the secret cannot be found, and cert-manager reports errors.</p> |
| </div> |
| <div class="paragraph"> |
| <div class="title">Procedure</div> |
| <p>To create the secret, run the following command:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ kubectl create secret generic azuredns-config \ |
| --from-literal=CLIENT_SECRET=$AZURE_CERT_MANAGER_SP_PASSWORD -n cert-manager</pre> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="installing-cert-manager-on-azure_installing-che-on-microsoft-azure"><a class="anchor" href="#installing-cert-manager-on-azure_installing-che-on-microsoft-azure"></a>Installing cert-manager on Azure</h2> |
| <div class="sectionbody"> |
| <div class="olist arabic"> |
| <div class="title">Procedure</div> |
| <ol class="arabic"> |
| <li> |
| <p>To install the cert-manager on Azure, create the <strong>cert-manager</strong> namespace:</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ kubectl create namespace cert-manager |
| namespace/cert-manager created |
| |
| $ kubectl label namespace cert-manager certmanager.k8s.io/disable-validation=true</pre> |
| </div> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ kubectl apply \ |
| -f https://github.com/jetstack/cert-manager/releases/download/v0.15.0/cert-manager.yaml</pre> |
| </div> |
| </div> |
| </li> |
| </ol> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ kubectl apply \ |
| --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.15.0/cert-manager.crds.yaml</pre> |
| </div> |
| </div> |
| <div class="olist arabic"> |
| <ol class="arabic"> |
| <li> |
| <p>Create the <strong>che</strong> namespace if it does not already exist:</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ kubectl create namespace che |
| namespace/che created</pre> |
| </div> |
| </div> |
| </li> |
| <li> |
| <p>Create the certificate issuer. Enter your email address in the <strong>email</strong> field and set <strong>clientID</strong>, <strong>CLIENT_SECRET</strong> <strong>subscriptionID</strong>, <strong>tenantID</strong>, <strong>hostedZoneName</strong> fields:</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>cat <<EOF | kubectl apply -f - |
| apiVersion: cert-manager.io/v1alpha2 |
| kind: ClusterIssuer |
| metadata: |
| name: che-certificate-issuer |
| spec: |
| acme: |
| solvers: |
| - dns01: |
| azuredns: |
| # Service principal clientId (It's the value printed in the previous lines: echo ID=$AZURE_CERT_MANAGER_SP_APP_ID ) |
| clientID: <AZURE_CERT_MANAGER_SP_APP_ID> |
| # A secretKeyRef to a service principal ClientSecret (password) |
| # ref: https://docs.microsoft.com/en-us/azure/container-service/kubernetes/container-service-kubernetes-service-principal |
| clientSecretSecretRef: |
| name: azuredns-config |
| # CLIENT_SECRET is the value of AZURE_CERT_MANAGER_SP_PASSWORD |
| key: <CLIENT_SECRET> |
| # Azure subscription Id that can be obtained with command: |
| # $ az account show | jq -r '.id' |
| subscriptionID: <SUBSCRIPTION_ID> |
| # Azure AD tenant Id that can be obtained with command: |
| # $ az account show | jq -r '.tenantId' |
| tenantID: <TENANT_ID> |
| resourceGroupName: eclipseCheResourceGroup |
| # The DNS Zone to use |
| hostedZoneName: azr.my-ide.cloud |
| email: florent@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 <<EOF | kubectl apply -f - |
| apiVersion: cert-manager.io/v1alpha2 |
| kind: Certificate |
| metadata: |
| name: che-tls |
| namespace: {prod-namespace} |
| spec: |
| secretName: che-tls |
| issuerRef: |
| name: che-certificate-issuer |
| kind: ClusterIssuer |
| dnsNames: |
| - '*.azr.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/new-dns-challenge-added.png"><img src="../_images/installation/new-dns-challenge-added.png" alt="new dns challenge added"></a> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>The cert-manager logs contain information about the DNS challenge.</p> |
| </div> |
| </li> |
| <li> |
| <p>Obtain the logs using the following command (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</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 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> |
| </li> |
| <li> |
| <p>Wait for the status to show <strong>OK</strong> and ensure that the log contains the following:</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ kubectl describe certificate/che-tls -n {prod-namespace} |
| Name: che-tls |
| Namespace: che |
| Labels: <none> |
| Annotations: API Version: cert-manager.io/v1alpha3 |
| Kind: Certificate |
| Metadata: |
| Creation Timestamp: 2020-07-29T10:32:49Z |
| Generation: 1 |
| Resource Version: 7961 |
| Self Link: /apis/cert-manager.io/v1alpha3/namespaces/che/certificates/che-tls |
| UID: 2034c6d5-bce3-4ce8-8489-df31d02b84e9 |
| Spec: |
| Dns Names: |
| *.azr.my-ide.cloud |
| Issuer Ref: |
| Kind: ClusterIssuer |
| Name: che-certificate-issuer |
| Secret Name: che-tls |
| Status: |
| Conditions: |
| Last Transition Time: 2020-07-29T10:35:05Z |
| Message: Certificate is up to date and has not expired |
| Reason: Ready |
| Status: True |
| Type: Ready |
| Not After: 2020-10-27T09:35:02Z |
| Events: |
| Type Reason Age From Message |
| ---- ------ ---- ---- ------- |
| Normal GeneratedKey 5m49s cert-manager Generated a new private key |
| Normal Requested 5m49s cert-manager Created new CertificateRequest resource "che-tls-2082883576" |
| Normal Issued 3m34s cert-manager Certificate issued successfully</pre> |
| </div> |
| </div> |
| </li> |
| </ol> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="installing-che-on-azure-using-the-chectl-command_installing-che-on-microsoft-azure"><a class="anchor" href="#installing-che-on-azure-using-the-chectl-command_installing-che-on-microsoft-azure"></a>Installing Che on Azure using the chectl command</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="ulist"> |
| <div class="title">Procedure</div> |
| <ul> |
| <li> |
| <p>To install Che, run the following <code>chectl</code> command:</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ chectl server:start --installer=helm --platform=k8s \ --domain=azr.my-ide.cloud --multiuser |
| › Current Kubernetes context: 'Eclipse Che' |
| ✔ Verify Kubernetes API...OK |
| ✔ 👀 Looking for an already existing Eclipse Che instance |
| ✔ Verify if Eclipse Che is deployed into namespace "che"...it is not |
| ✔ ✈️ Kubernetes preflight checklist |
| ✔ Verify if kubectl is installed |
| ✔ Verify remote kubernetes status...done. |
| ✔ Check Kubernetes version: Found v1.16.10. |
| ✔ Verify domain is set...set to azr.my-ide.cloud. |
| ↓ Check if cluster accessible [skipped] |
| Eclipse Che logs will be available in '/var/folders/tg/_5rxbhmj4xncz4szvpgswrmc0000gn/T/chectl-logs/1596019249675' |
| ✔ Start following logs |
| ↓ Start following Operator logs [skipped] |
| ✔ Start following Eclipse Che 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 events |
| ✔ Start following namespace events...done |
| › Warning: Consider using the more reliable 'OLM' installer when deploying a stable release of Eclipse Che (--installer=olm). |
| ✔ 🏃 Running Helm to install Eclipse Che |
| ✔ Verify if helm is installed |
| ✔ Check Helm Version: Found v3.1.2+gd878d4d |
| ✔ Create Namespace (che)...does already exist. |
| ✔ Check Eclipse Che TLS certificate...TLS certificate secret found |
| ✔ Check Cluster Role Binding...does not exists. |
| ✔ Preparing Eclipse Che Helm Chart...done. |
| ✔ Updating Helm Chart dependencies...done. |
| ✔ Deploying Eclipse 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 Che pod bootstrap |
| ✔ scheduling...done. |
| ✔ downloading images...done. |
| ✔ starting...done. |
| ✔ Retrieving Eclipse Che server URL... https://che-che.azr.my-ide.cloud |
| ✔ Eclipse Che status check |
| ✔ Show important messages |
| ✔ Autogenerated Keycloak credentials are: "xxx:xxx" |
| Command server:start has completed successfully.</pre> |
| </div> |
| </div> |
| </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Track installation events with:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ kubectl get events --namespace che --sort-by=.metadata.creationTimestamp</pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Keycloak and Che now have valid wildcard certificates.</p> |
| </div> |
| <div class="imageblock"> |
| <div class="content"> |
| <a class="image" href="../_images/installation/wildcard-certificates-for-keycloak-che.png"><img src="../_images/installation/wildcard-certificates-for-keycloak-che.png" alt="wildcard certificates for keycloak che"></a> |
| </div> |
| </div> |
| <div class="imageblock"> |
| <div class="content"> |
| <a class="image" href="../_images/installation/che-user-dashboard.png"><img src="../_images/installation/che-user-dashboard.png" alt="che user dashboard"></a> |
| </div> |
| <div class="title">Figure 1. Che user dashboard</div> |
| </div> |
| </div> |
| </div> |
| </article> |
| <aside class="toc sidebar" data-title="Contents" data-levels="2"> |
| <div class="toc-menu"></div> |
| </aside> |
| </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> |