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.yamlanddeployment.yamlby adding the following fragment:securityContext: fsGroup: 300Following is the specified locations in the manifests:
db-statefulset.yaml: | spec.template.spec deployment.yaml: | spec.template.specApply the modified Operator manifest to your Kubernetes cluster:
kubectl apply -f rhdh-operator-<VERSION>.yamlNoteExecution of the previous command is cluster-scoped and requires appropriate cluster privileges.
Create an
ImagePull Secretnamedrhdh-pull-secretusing your Red Hat credentials to access images from the protectedregistry.redhat.ioas 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-backendTo deploy the created Ingress, run the following command:
kubectl -n <your_namespace> apply -f rhdh-ingress.yamlCreate a
my-rhdh-app-configconfig map containing theapp-config.yamlDeveloper Hub configuration file by using the following example:apiVersion: v1 kind: ConfigMap metadata: name: my-rhdh-app-config data: "app-config.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
<my_product_secrets>secret and add a key namedBACKEND_SECRETwith aBase64-encodedstring value as shown in the following example:apiVersion: v1 kind: Secret metadata: name: <my_product_secrets>1 stringData: BACKEND_SECRET: "xxx"- 1
<my_product_secrets>is your preferred Developer Hub secret name, where<my_product_secrets>specifies the identifier for your secret configuration within Developer Hub.
Create your
Backstagecustom resource (CR) manifest file named<your-rhdh-cr>and include the previously createdrhdh-pull-secretas follows:apiVersion: rhdh.redhat.com/v1alpha3 kind: Backstage metadata: name: <your-rhdh-cr> spec: application: imagePullSecrets: - rhdh-pull-secret appConfig: configMaps: - name: my-rhdh-app-config extraEnvs: secrets: - name: <my_product_secrets>1 - 1
<my_product_secrets>is your preferred Developer Hub secret name, where<my_product_secrets>specifies the identifier for your secret configuration within Developer Hub.
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