For the sysadmin
This page contains some very-easy-to-follow guides for sysadmins that want to set up and deploy an on-premises instance of the SmartCLIDE IDE.
SmartCLIDE Helm Chart
Requirements
- A publicly resolvable domain, like
example.orgor a subdomain likefoo.example.org.
You must be able to edit DNS records for that domain.
- A wildcard TLS certificate for your domain, i.e. for
*.example.orgor*.foo.example.org.
It must be a wildcard certificate! Letsencrypt is not supported at the moment!
Save the certificate files in smartclide.full-chain.crt and smartclide.key.
smartclide.full-chain.crt must contain the full certificate chain, including intermediate certificates.
- An SMTP server
- A GitLab instance or an account on gitlab.com
- A GitHub account
- A kubernetes cluster (version 1.21+) with
- Ingress Controller
- Dynamic Volume Provisioning
- kubectl installed and configured for your cluster
- helm installed and configured for your cluster
Disclaimer: the above tools can be installed on both Linux and Windows. However, the following instructions have only been tested on Linux.
Prepare
DNS
Create a CNAME record for *.<YOUR_DOMAIN> - e.g. *.example.org - and set the target to the output of:
kubectl get services --namespace ingress-nginx -o jsonpath="{.items[].status.loadBalancer.ingress[0].hostname}"
Replace ingress-nginx with the namespace where your ingress controller is installed.
Eclipse Che
Install chectl
- Download
chectlversion7.38.0for your operating system from the chectl release page, e.g.chectl-linux-x64.tar.gz. - Unpack it to your
HOMEfolder:
shell
tar -xvz -C ${HOME} -f chectl-linux-x64.tar.gz
- Create an alias for the chectl command:
shell
chectl=${HOME}/chectl/bin/run
Namespace
Create the namespace for Eclipse Che:
kubectl create namespace eclipse-che
Certificate
Create the TLS certificate secret for Eclipse Che:
kubectl create secret tls che-tls \
--namespace eclipse-che \
--cert=smartclide.full-chain.crt \
--key=smartclide.key
Deploy Eclipse Che
- Configure deployment scripts. Run:
shell
sed -i s/"{THE_DOMAIN}"/"<YOUR_DOMAIN>"/g che/*.{yaml,json}
Replace <YOUR_DOMAIN> with your domain, e.g. example.org.
- Create initial deployment. Run:
shell
chectl server:deploy \
--installer=helm \
--platform=k8s \
--chenamespace=eclipse-che \
--domain=<YOUR_DOMAIN> \
--telemetry=off \
--no-auto-update \
--multiuser \
--helm-patch-yaml=che/my-values.yaml
Replace <YOUR_DOMAIN> with your domain, e.g. example.org.
Answer with n ("no") when asked Do you want to update chectl now? [y/n]:.
Answer with y ("yes") when asked 'helm' installer is deprecated. Do you want to proceed? [y/n]:.
The command will take a while. At the end you should see a message like:
```shell ✔ Eclipse Che 7.38.0 has been successfully deployed. ✔ Documentation : https://www.eclipse.org/che/docs/ ✔
✔ Users Dashboard : https://che.example.org
✔ Admin user login : "admin:admin". NOTE: must change after first login.
✔
✔ Plug-in Registry : https://plugin-registry-eclipse-che.example.org/v3/
✔ Devfile Registry : https://devfile-registry-eclipse-che.example.org/
✔
✔ Identity Provider URL : https://keycloak-eclipse-che.example.org/auth/
✔ Identity Provider login : "admin:s3cr3t".
✔
Command server:deploy has completed successfully in 02:34. ```
- Update Eclipse Che configuration. Run:
```shell kubectl patch configmaps --namespace eclipse-che che --patch "$(cat che/config-patch.yaml)" -o yaml
for theIngress in che-ingress che-dashboard-ingress devfile-registry plugin-registry keycloak-ingress do kubectl patch ingress --namespace eclipse-che ${theIngress} --patch "$(cat che/ingress-patch.yaml)" -o yaml done
kubectl --namespace eclipse-che rollout restart deployment/che ```
-
Open Che Users Dashboard
https://che.<YOUR_DOMAIN>, e.g.https://che.example.org, in your browser, and login with the admin username and password provided in the output ofchectl server:deploycommand above. Change the default admin password to a secure password! -
Open keycloak admin interface
https://keycloak-eclipse-che.<YOUR_DOMAIN>/auth/admin/, e.g.https://keycloak-eclipse-che.example.org/auth/admin/, in your browser, and login with the keycloak admin username and password provided in the output ofchectl server:deploycommand above. -
Make sure that the realm
Cheis selected at the top of the left-hand menu. - Under the menu section
Manage, click onImportand select che/realm-patch.json. Make sure thatImport clientsandImport realm rolesisON. ClickImport. You should see a notification that 12 records have been added. - Under the menu section
Configure, click onRealm Settings, then click on the tabLoginand changeRequire SSLtoexternal requests. ClickSave. - Click on the tab
Emailand fill in the values for your SMTP server, so that keycloak can send passwort reset emails. ClickSave. -
Under the menu section
Configure, click onRolesand the tabDefault Roles. In theAvailable Rolesbox, select- developer
- kie-sever
- rest-all
- user
Click
Add selected. -
Under the menu section
Configure, click onClients, and selectbusiness-central. Click on the tabCredentialsand then onRegenerate Secret. Note down the new secret.Repeat this for the client
kie-server.
Dedicated Node Group for DLE
The DLE component requires more resources than other SmartCLIDE components. The minimum requirements are 4 CPUs and 16 GiB RAM. It is therefore recommended to create a dedicated node group for the DLE with at least 1 node of the required minimum size.
Add the following label and taint to the node group / all nodes in the node group:
labels:
smartclide-nodegroup-type: "dle"
taints:
- key: "dle"
value: "true"
effect: "NoSchedule"
Settings
Open my-values.yml in a text editor and change the values according to your needs. See the comments in the file for more information.
Namespace
Create the namespace:
kubectl create namespace smartclide
Certificate
Create the TLS certificate secret:
kubectl create secret tls smartclide-tls \
--namespace smartclide \
--cert=smartclide.full-chain.crt \
--key=smartclide.key
Install / Upgrade
helm upgrade --install --namespace smartclide --values my-values.yaml smartclide helm-chart
Uninstall
helm uninstall --namespace smartclide smartclide