Chapter 1. Deploying Developer Hub on AKS with the Operator
You can deploy your Developer Hub on AKS using the Red Hat Developer Hub Operator.
Procedure
Obtain the Red Hat Developer Hub Operator manifest file, named
rhdh-operator-<VERSION>.yaml
, and modify the default configuration ofdb-statefulset.yaml
anddeployment.yaml
by adding the following fragment:securityContext: fsGroup: 300
Following is the specified locations in the manifests:
db-statefulset.yaml: | spec.template.spec deployment.yaml: | spec.template.spec
Apply the modified Operator manifest to your Kubernetes cluster:
kubectl apply -f rhdh-operator-<VERSION>.yaml
NoteExecution of the previous command is cluster-scoped and requires appropriate cluster privileges.
Create an
ImagePull Secret
namedrhdh-pull-secret
using your Red Hat credentials to access images from the protectedregistry.redhat.io
as shown in the following example:kubectl -n <your_namespace> create secret docker-registry rhdh-pull-secret \ --docker-server=registry.redhat.io \ --docker-username=<redhat_user_name> \ --docker-password=<redhat_password> \ --docker-email=<email>
Create an Ingress manifest file, named
rhdh-ingress.yaml
, specifying your Developer Hub service name as follows:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: rhdh-ingress namespace: my-rhdh-project spec: ingressClassName: webapprouting.kubernetes.azure.com rules: - http: paths: - path: / pathType: Prefix backend: service: name: backstage-<your-CR-name> port: name: http-backend
To deploy the created Ingress, run the following command:
kubectl -n <your_namespace> apply -f rhdh-ingress.yaml
Create a ConfigMap named
app-config-rhdh
containing the Developer Hub configuration using the following example:apiVersion: v1 kind: ConfigMap metadata: name: app-config-rhdh data: "app-config-rhdh.yaml": | app: title: Red Hat Developer Hub baseUrl: https://<app_address> backend: auth: externalAccess: - type: legacy options: subject: legacy-default-config secret: "${BACKEND_SECRET}" baseUrl: https://<app_address> cors: origin: https://<app_address>
Create a Secret named
my-rhdh-secrets
and add a key namedBACKEND_SECRET
with aBase64-encoded
string value as shown in the following example:apiVersion: v1 kind: Secret metadata: name: my-rhdh-secrets stringData: BACKEND_SECRET: "xxx"
Create your
Backstage
custom resource (CR) manifest file namedrhdh.yaml
and include the previously createdrhdh-pull-secret
as follows:apiVersion: rhdh.redhat.com/v1alpha3 kind: Backstage metadata: name: <your-rhdh-cr> spec: application: imagePullSecrets: - rhdh-pull-secret appConfig: configMaps: - name: "app-config-rhdh" extraEnvs: secrets: - name: "my-rhdh-secrets"
Apply the CR manifest to your namespace:
kubectl -n my-rhdh-project apply -f rhdh.yaml
-
Access the deployed Developer Hub using the URL:
https://<app_address>
, where <app_address> is the Ingress address obtained earlier (for example,https://108.141.70.228
). Optional: To delete the CR, run the following command:
kubectl -n my-rhdh-project delete -f rhdh.yaml