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.org
or 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.org
or*.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
chectl
version7.38.0
for your operating system from the chectl release page, e.g.chectl-linux-x64.tar.gz
. - Unpack it to your
HOME
folder:
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:deploy
command 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:deploy
command above. -
Make sure that the realm
Che
is selected at the top of the left-hand menu. - Under the menu section
Manage
, click onImport
and select che/realm-patch.json. Make sure thatImport clients
andImport realm roles
isON
. ClickImport
. You should see a notification that 12 records have been added. - Under the menu section
Configure
, click onRealm Settings
, then click on the tabLogin
and changeRequire SSL
toexternal requests
. ClickSave
. - Click on the tab
Email
and fill in the values for your SMTP server, so that keycloak can send passwort reset emails. ClickSave
. -
Under the menu section
Configure
, click onRoles
and the tabDefault Roles
. In theAvailable Roles
box, select- developer
- kie-sever
- rest-all
- user
Click
Add selected
. -
Under the menu section
Configure
, click onClients
, and selectbusiness-central
. Click on the tabCredentials
and 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