Complete the checks in Requirements before you start. The steps below deploy Deckhouse Code with the values every installation needs at minimum.
Obtain the chart
Add the chart repository and update it:
helm repo add deckhouse-code <CHART_REGISTRY>
helm repo updatePrepare the values file
Create values.yaml with the domain, the ingress class, the TLS Secret, the StorageClass for Git repository storage, and the external PostgreSQL, Redis and object storage connections:
global:
hosts:
domain: code.example.com
ingress:
class: <INGRESS_CLASS_NAME>
tls:
secretName: <TLS_SECRET_NAME>
psql:
host: <POSTGRESQL_HOST>
port: 5432
database: <POSTGRESQL_DATABASE>
username: <POSTGRESQL_USERNAME>
password:
secretName: <POSTGRESQL_PASSWORD_SECRET>
key: password
redis:
host: <REDIS_HOST>
port: 6379
password:
secretName: <REDIS_PASSWORD_SECRET>
key: password
appConfig:
object_store:
enabled: true
connection:
secretName: <OBJECT_STORE_CONNECTION_SECRET>
gitaly:
persistence:
size: <VALUE>
storageClass: <STORAGE_CLASS_NAME>Replace every placeholder with the actual class, Secret and host names. Configuration names every value shown here and what it configures.
Install the release
helm upgrade --install code deckhouse-code \
-n code --create-namespace \
-f values.yamlThe command creates the code namespace when it does not exist yet, and installs the release under the name code.
Point DNS at the ingress
Get the address the ingress controller assigned to the release’s Ingress objects:
d8 k -n code get ingressPoint the DNS name from global.hosts.domain at the address shown in the ADDRESS column, as an A, AAAA or CNAME record depending on what the ingress controller returns.
Wait for the release to become ready
A migrations job runs once, before the pods that depend on the database schema start. Confirm every pod reaches the Running state:
d8 k -n code get podsSign in for the first time
The chart creates a Secret with the initial password for the root account, named after the release (code-initial-root-password, following the chart’s initial-password naming convention). Retrieve it:
d8 k -n code get secret code-initial-root-password -o jsonpath='{.data.password}' | base64 -dOpen https://code.example.com (the domain from global.hosts.domain) and sign in as root with that password.
Verify the installation
Confirm the sign-in page loads over HTTPS with the certificate from global.ingress.tls.secretName, and that every pod and the migrations job report a healthy state:
d8 k -n code get pods,jobs