@@ -7,7 +7,7 @@ To install nmaas into an existing Kubernetes cluster, the following requirements
...
@@ -7,7 +7,7 @@ To install nmaas into an existing Kubernetes cluster, the following requirements
- Kubernetes version `>=1.16`
- Kubernetes version `>=1.16`
- Helm v3 support in the Kubernetes cluster
- Helm v3 support in the Kubernetes cluster
- Existing ingress controller, preferably with a default TLS certificate set (more information available below)
- Existing ingress controller, preferably with a default TLS certificate set (more information available below)
- An integration with an external load-balancer or MetalLB for bare-metal deployments, so that IPs can be assigned to `LoadBalancer` services.
- An integration with an external load-balancer or MetalLB for bare-metal deployments, so that IPs can be assigned to `LoadBalancer` services
## nmaas Components
## nmaas Components
...
@@ -37,7 +37,7 @@ GitLab can be deployed using the [official Helm chart](https://docs.gitlab.com/r
...
@@ -37,7 +37,7 @@ GitLab can be deployed using the [official Helm chart](https://docs.gitlab.com/r
!!! success "GitLab Version"
!!! success "GitLab Version"
`4.8.2` is the latest version of the GitLab chart that has been tested with the latest version of nmaas.
`8.2.0` is the latest version of the GitLab chart that has been tested with the latest version of nmaas.
Bellow is a snippet of the mandatory parameters that must be specified during GitLab's deployment, so that it will be compatible with nmaas. The complete list of supported value parameters is available in the [official GitLab Helm chart Git repository](https://gitlab.com/gitlab-org/charts/gitlab).
Bellow is a snippet of the mandatory parameters that must be specified during GitLab's deployment, so that it will be compatible with nmaas. The complete list of supported value parameters is available in the [official GitLab Helm chart Git repository](https://gitlab.com/gitlab-org/charts/gitlab).
## configuration for external PostgreSQL (set postgresql.enabled to false if used)
psql:
# psql:
## the secret must be manually created
# password:
password: {}
# useSecret: true
# secret: gitlab-db-password
# secret: gitlab-db-password
# key: password
# key: password
# host: psql-standalone-postgresql
# host: psql-standalone-postgresql
...
@@ -105,34 +101,31 @@ global:
...
@@ -105,34 +101,31 @@ global:
defaultProjectFeatures:
defaultProjectFeatures:
builds: false
builds: false
time_zone: UTC
time_zone: UTC
## use an external smtp server for outgoing email (optional)
smtp:
smtp:
enabled: false
enabled: false
address: smtp.mailgun.org
address: smtp.example.com
port: 2525
port: 587
user_name: ""
user_name: "noreply@example.com"
## doc/installation/secrets.md#smtp-password
## doc/installation/secrets.md#smtp-password
password:
password:
secret: ""
secret: "gitlab-smtp-password"
key: password
key: password
# domain:
# domain:
authentication: "plain"
authentication: "login"
starttls_auto: false
starttls_auto: true
openssl_verify_mode: "peer"
openssl_verify_mode: "peer" # or none
## doc/installation/deployment.md#outgoing-email
## doc/installation/deployment.md#outgoing-email
## Email persona used in email sent by GitLab
## Email persona used in email sent by GitLab
email:
email:
from: ''
from: 'noreply@example.com'
display_name: GitLab
display_name: GitLab
reply_to: ''
reply_to: 'support@example.com'
subject_suffix: ''
smime:
smime:
enabled: false
enabled: false
secretName: ""
keyName: "tls.key"
certName: "tls.crt"
```
```
Note that the secrets whose names are specified in `.Values.postgresql.existingSecret`and`.Values.global.initialRootPassword.secret` must be manually created. These secrets contain the postgresql root and user passwords, as well as the initial root password to be used by GitLab, respectively. Below is a snippet that can be reused to create these secrets:
Note that the secrets whose names are specified in `.Values.postgresql.existingSecret`(for internal PostgreSQL),`.Values.global.initialRootPassword.secret`, `.Values.global.psql.password.secret` (for external PostgreSQL), and `.Values.global.smtp.password.secret`must be manually created. These secrets contain the PostgreSQL root and user passwords, the initial root password to be used by GitLab, as well as SMTP server credentials. Below is a snippet that can be reused to create such secrets:
```bash
```bash
export NMAAS_NAMESPACE="nmaas-system"
export NMAAS_NAMESPACE="nmaas-system"
...
@@ -152,7 +145,7 @@ Once all configuration parameters have been specified, GitLab can be installed u
...
@@ -152,7 +145,7 @@ Once all configuration parameters have been specified, GitLab can be installed u
# secretName: <EXISTING_OR_DUMMY_TLS_SECRET_NAME> # can be left empty, self-signed certificates will be generated
# secretName: <EXISTING_OR_DUMMY_TLS_SECRET_NAME> # can be left empty, self-signed certificates will be generated
path: /
path: /
annotations:
class: "nginx"
kubernetes.io/ingress.class: "public"
initialRootPassword:
initialRootPassword:
secret: gitlab-root-password
secret: gitlab-root-password
key: password
key: password
...
@@ -73,46 +72,43 @@ global:
...
@@ -73,46 +72,43 @@ global:
time_zone: Europe/Warsaw
time_zone: Europe/Warsaw
smtp:
smtp:
enabled: false
enabled: false
address: smtp.mailgun.org
address: smtp.example.com
port: 2525
port: 587
user_name: ""
user_name: ""
## doc/installation/secrets.md#smtp-password
## doc/installation/secrets.md#smtp-password
password:
password:
secret: "my-smtp-secret"
secret: "my-smtp-secret"
key: password
key: password
# domain:
# domain:
authentication: "plain"
authentication: "login"
starttls_auto: false
starttls_auto: true
openssl_verify_mode: "peer"
openssl_verify_mode: "peer"
## doc/installation/deployment.md#outgoing-email
## doc/installation/deployment.md#outgoing-email
## Email persona used in email sent by GitLab
## Email persona used in email sent by GitLab
email:
email:
from: ''
from: 'noreply@example.com'
display_name: GitLab
display_name: GitLab
reply_to: ''
reply_to: 'support@example.com'
subject_suffix: ''
smime:
smime:
enabled: false
enabled: false
secretName: ""
keyName: "tls.key"
certName: "tls.crt"
```
```
GitLab requires the deployment of a PostgreSQL instance. The necessary secrets containing the PostgreSQL passwords need to be created, as well as the secret containing the initial root GitLab password:
GitLab requires the deployment of a PostgreSQL instance. The necessary secrets containing the PostgreSQL passwords need to be created, as well as the secret containing the initial root GitLab password:
Once GitLab has been deployed, it should be possible to navigate to the login page using a web browser. After logging in, users are advised to configure the following settings:
Once GitLab has been deployed, it should be possible to navigate to the login page using a web browser. After logging in, users are advised to configure the following settings:
...
@@ -135,81 +131,72 @@ The final step is to install nmaas. nmaas uses SSH communication to connect betw
...
@@ -135,81 +131,72 @@ The final step is to install nmaas. nmaas uses SSH communication to connect betw
```bash
```bash
#!/bin/bash
#!/bin/bash
export NMAAS_NAMESPACE="nmaas-system"
tmpdir=$(mktemp-d)
tmpdir=$(mktemp-d)
ssh-keygen -f$tmpdir/key -N""
ssh-keygen -f$tmpdir/key -N""
# nmaas-helm-key-private should be replaced with {{ .Values.global.helmAccessKeyPrivate }}
# nmaas-helm-key-private should be replaced with {{ .Values.global.helmAccessKeyPrivate }}
A few parameters need to be customized in the values.yaml file, to reflect the environment where nmaas is deployed.
A few parameters need to be customized in the values.yaml file, to reflect the environment where nmaas is deployed.
-`global.wildcardCertificateName` – the name of the secret containing the TLS certificate to be used to secure the HTTP communication
-`global.wildcardCertificateName` – the name of the secret containing the TLS certificate to be used to secure the HTTP communication
-`global.nmaasDomain` – the hostname where nmaas will be accessible.
-`global.nmaasDomain` – the hostname where nmaas will be accessible.
-`global.gitlabApiUrl` - the API endpoint for GitLab
-`global.gitlabApiToken.literal` - the value of the personal access token created previously in GitLab.
-`platform.properties.adminEmail` – the email address which will receive various notifications such as new user sign-up, deployment errors, new application versions...
-`platform.properties.adminEmail` – the email address which will receive various notifications such as new user sign-up, deployment errors, new application versions...
-`platform.adminPassword.literal` – the password used to login as the admin user in the nmaas Portal.
-`platform.adminPassword.literal` – the password used to login as the admin user in the nmaas Portal.
-`platform.properties.k8s.ingress.certificate.issuerOrWildcardName` – the name of the wilcard certificate to be used for customer deployed applications, or the name of the cert-manager issuer to use if certificates are issued ad-hoc.
-`platform.properties.k8s.ingress.certificate.issuerOrWildcardName` – the name of the wilcard certificate to be used for customer deployed applications, or the name of the cert-manager issuer to use if certificates are issued ad-hoc.
-`platform.properties.k8s.ingress.controller.ingressClass` – the ingress class to be used for deployed applications. Should be set to nginx in the case of K3s and public in the case of MicroK8s.
-`platform.properties.k8s.ingress.controller.ingressClass` – the ingress class to be used for deployed applications. Should be set to nginx in the case of K3s and public in the case of MicroK8s.
-`platform.properties.k8s.ingress.controller.publicIngressClass` – the ingress class to be used for applications where the users have explicitly selected to enable public access (e.g. without a VPN). Since this is a local deployment, the value of this parameter should equal the value set in `platform.properties.k8s.ingress.controller.ingressClass`.
-`platform.properties.k8s.ingress.controller.publicIngressClass` – the ingress class to be used for applications where the users have explicitly selected to enable public access (e.g. without a VPN). Since this is a local deployment, the value of this parameter should equal the value set in `platform.properties.k8s.ingress.controller.ingressClass`.
-`publicServiceDomain`, `externalServiceDomain` – for a local deployment this parameter should be set to the same value as `global.nmaasDomain`.
-`publicServiceDomain`, `externalServiceDomain` – for a local deployment this parameter should be set to the same value as `global.nmaasDomain`.
-`janitor.properties.gitlabToken.literal` – the value of the personal access token created in GitLab, previously.
nmaas also requires an the stakater autoreloader component, which can simply be installed using the commands below. This component takes care of restarting the affected pods whenever a configuration change is submitted via GitLab.
nmaas also requires an the stakater autoreloader component, which can simply be installed using the commands below. This component takes care of restarting the affected pods whenever a configuration change is submitted via GitLab.