This documentation is for a release that is no longer maintained
See documentation for the latest supported version.Microsoft Azure Kubernetes Service에 Red Hat Developer Hub 설치
초록
1장. Azure Kubernetes Service(AKS)에 Red Hat Developer Hub 설치
다음 방법 중 하나를 사용하여 Microsoft Azure Kubernetes Service(AKS)에 Red Hat Developer Hub를 설치할 수 있습니다.
- Red Hat Developer Hub Operator
- Red Hat Developer Hub Helm 차트
1.1. Operator를 사용하여 AKS에 개발자 허브 배포
Red Hat Developer Hub Operator를 사용하여 AKS에 개발자 허브를 배포할 수 있습니다.
프로세스
rhdh-operator-<VERSION>.yaml
이라는 Red Hat Developer Hub Operator 매니페스트 파일을 가져오고 다음 조각을 추가하여db-statefulset.yaml
및deployment.yaml
의 기본 구성을 수정합니다.securityContext: fsGroup: 300
securityContext: fsGroup: 300
Copy to Clipboard Copied! 다음은 매니페스트에 지정된 위치입니다.
db-statefulset.yaml: | spec.template.spec deployment.yaml: | spec.template.spec
db-statefulset.yaml: | spec.template.spec deployment.yaml: | spec.template.spec
Copy to Clipboard Copied! 수정된 Operator 매니페스트를 Kubernetes 클러스터에 적용합니다.
kubectl apply -f rhdh-operator-<VERSION>.yaml
kubectl apply -f rhdh-operator-<VERSION>.yaml
Copy to Clipboard Copied! 참고이전 명령을 실행하는 것은 클러스터 범위이며 적절한 클러스터 권한이 필요합니다.
다음 예와 같이 보호된
registry.redhat.io
의 이미지에 액세스하기 위해 Red Hat 인증 정보를 사용하여rhdh-pull-secret
이라는ImagePull
보안을 생성합니다.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>
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>
Copy to Clipboard Copied! 다음과 같이 Developer Hub 서비스 이름을 지정하여
rhdh-ingress.yaml
이라는 Ingress 매니페스트 파일을 생성합니다.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: rhdh-ingress namespace: <your_namespace> spec: ingressClassName: webapprouting.kubernetes.azure.com rules: - http: paths: - path: / pathType: Prefix backend: service: name: backstage-<your-CR-name> port: name: http-backend
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: rhdh-ingress namespace: <your_namespace> spec: ingressClassName: webapprouting.kubernetes.azure.com rules: - http: paths: - path: / pathType: Prefix backend: service: name: backstage-<your-CR-name> port: name: http-backend
Copy to Clipboard Copied! 생성된 Ingress를 배포하려면 다음 명령을 실행합니다.
kubectl -n <your_namespace> apply -f rhdh-ingress.yaml
kubectl -n <your_namespace> apply -f rhdh-ingress.yaml
Copy to Clipboard Copied! 다음 예제를 사용하여 Developer Hub 구성이 포함된
app-config-rhdh
라는 ConfigMap을 생성합니다.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: keys: - secret: "${BACKEND_SECRET}" baseUrl: https://<app_address> cors: origin: https://<app_address>
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: keys: - secret: "${BACKEND_SECRET}" baseUrl: https://<app_address> cors: origin: https://<app_address>
Copy to Clipboard Copied! secrets-rhdh
라는 시크릿을 생성하고 다음 예와 같이Base64 인코딩
문자열 값을 사용하여BACKEND_SECRET
이라는 키를 추가합니다.apiVersion: v1 kind: Secret metadata: name: secrets-rhdh stringData: BACKEND_SECRET: "xxx"
apiVersion: v1 kind: Secret metadata: name: secrets-rhdh stringData: BACKEND_SECRET: "xxx"
Copy to Clipboard Copied! rhdh.yaml
이라는 사용자 정의 리소스(CR) 매니페스트 파일을 생성하고 다음과 같이 이전에 생성된rhdh-pull-secret
을 포함합니다.apiVersion: rhdh.redhat.com/v1alpha1 kind: Backstage metadata: name: <your-rhdh-cr> spec: application: imagePullSecrets: - rhdh-pull-secret appConfig: configMaps: - name: "app-config-rhdh" extraEnvs: secrets: - name: "secrets-rhdh"
apiVersion: rhdh.redhat.com/v1alpha1 kind: Backstage metadata: name: <your-rhdh-cr> spec: application: imagePullSecrets: - rhdh-pull-secret appConfig: configMaps: - name: "app-config-rhdh" extraEnvs: secrets: - name: "secrets-rhdh"
Copy to Clipboard Copied! CR 매니페스트를 네임스페이스에 적용합니다.
kubectl -n <your_namespace> apply -f rhdh.yaml
kubectl -n <your_namespace> apply -f rhdh.yaml
Copy to Clipboard Copied! -
URL을 사용하여 배포된 개발자 허브에 액세스합니다.
https://<app_address
> . 여기서 <app_address>는 이전에 가져온 Ingress 주소입니다(예:https://108.141.70.228
). 선택 사항: CR을 삭제하려면 다음 명령을 실행합니다.
kubectl -n <your_namespace> delete -f rhdh.yaml
kubectl -n <your_namespace> delete -f rhdh.yaml
Copy to Clipboard Copied!
1.2. Helm 차트를 사용하여 AKS에 개발자 허브 배포
AKS(Azure Kubernetes Service)에 Developer Hub 애플리케이션을 배포하여 애플리케이션을 빌드, 테스트 및 배포하기 위한 포괄적인 솔루션에 액세스할 수 있습니다.
사전 요구 사항
- 활성 서브스크립션이 있는 Microsoft Azure 계정이 있어야 합니다.
- Azure CLI 를 설치했습니다.
-
kubectl
CLI 를 설치했습니다. -
kubectl
을 사용하여 클러스터에 로그인하고개발자
또는관리자
권한이 있어야 합니다. - Helm 3 또는 최신 버전을 설치했습니다.
기본 Developer Hub 배포와 AKS 세부 사항 비교
-
권한 문제: Developer Hub 컨테이너에 특정 작업을 시도할 때
Permission denied
와 같은 권한 관련 오류가 발생할 수 있습니다. 이 오류는PodSpec.securityContext
의fsGroup
을 조정하여 처리할 수 있습니다. Ingress 구성: AKS에서는 설치된 Developer Hub 인스턴스에 액세스하려면 Ingress를 구성해야 합니다. Developer Hub 인스턴스에 액세스하려면 다음 명령을 사용하여 NGINX 기반 Ingress 컨트롤러인 라우팅 애드온을 활성화해야 합니다.
az aks approuting enable --resource-group <your_ResourceGroup> --name <your_ClusterName>
az aks approuting enable --resource-group <your_ResourceGroup> --name <your_ClusterName>
Copy to Clipboard Copied! 작은 정보Azure CLI 확장
aks-preview
를 설치해야 할 수 있습니다. 확장 기능이 자동으로 설치되지 않은 경우 다음 명령을 사용하여 수동으로 설치해야 할 수 있습니다.az extension add --upgrade -n aks-preview --allow-preview true
az extension add --upgrade -n aks-preview --allow-preview true
Copy to Clipboard Copied! 참고Ingress 컨트롤러를 설치하면 Ingress 컨트롤러가 있는
app-routing-system
네임스페이스가 클러스터에 배포됩니다. 설치된 Ingress 컨트롤러의 개발자 허브 애플리케이션 주소(예: 108.141.70.228)는 나중에 <app_address
>로 참조되는 Developer Hub 애플리케이션에 액세스할 수 있습니다.kubectl get svc nginx --namespace app-routing-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
kubectl get svc nginx --namespace app-routing-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
Copy to Clipboard Copied! 네임스페이스 관리: 다음 명령을 사용하여 AKS에 Developer Hub 배포를 위한 전용 네임스페이스를 생성할 수 있습니다.
kubectl create namespace <your_namespace>
kubectl create namespace <your_namespace>
Copy to Clipboard Copied!
프로세스
다음 명령을 실행하여 AKS에 로그인합니다.
az login [--tenant=<optional_directory_name>]
az login [--tenant=<optional_directory_name>]
Copy to Clipboard Copied! 다음 명령을 실행하여 리소스 그룹을 생성합니다.
az group create --name <resource_group_name> --location <location>
az group create --name <resource_group_name> --location <location>
Copy to Clipboard Copied! 작은 정보다음 명령을 실행하여 사용 가능한 리전을 나열할 수 있습니다.
az account list-locations -o table
az account list-locations -o table
Copy to Clipboard Copied! 다음 명령을 실행하여 AKS 클러스터를 생성합니다.
az aks create \ --resource-group <resource_group_name> \ --name <cluster_name> \ --enable-managed-identity \ --generate-ssh-keys
az aks create \ --resource-group <resource_group_name> \ --name <cluster_name> \ --enable-managed-identity \ --generate-ssh-keys
Copy to Clipboard Copied! 추가 옵션은
--help
를 참조할 수 있습니다.다음 명령을 실행하여 클러스터에 연결합니다.
az aks get-credentials --resource-group <resource_group_name> --name <cluster_name>
az aks get-credentials --resource-group <resource_group_name> --name <cluster_name>
Copy to Clipboard Copied! 이전 명령은 Kubernetes 클라이언트를 구성하고
kubeconfig
의 현재 컨텍스트를 AKS 클러스터를 가리키도록 설정합니다.터미널을 열고 다음 명령을 실행하여 Helm 차트 리포지터리를 추가합니다.
helm repo add openshift-helm-charts https://charts.openshift.io/
helm repo add openshift-helm-charts https://charts.openshift.io/
Copy to Clipboard Copied! < rhdh> 네임스페이스를 생성하고 활성화합니다.
DEPLOYMENT_NAME=<redhat-developer-hub> NAMESPACE=<rhdh> kubectl create namespace ${NAMESPACE} kubectl config set-context --current --namespace=${NAMESPACE}
DEPLOYMENT_NAME=<redhat-developer-hub> NAMESPACE=<rhdh> kubectl create namespace ${NAMESPACE} kubectl config set-context --current --namespace=${NAMESPACE}
Copy to Clipboard Copied! 다음 명령을 실행하여 Red Hat Ecosystem에서 Developer Hub 이미지를 가져오는 데 사용되는 풀 시크릿을 생성합니다.
kubectl -n $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>
kubectl -n $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>
Copy to Clipboard Copied! 다음 템플릿을 사용하여
values.yaml
이라는 파일을 생성합니다.global: host: <app_address> route: enabled: false upstream: ingress: enabled: true className: webapprouting.kubernetes.azure.com host: backstage: image: pullSecrets: - rhdh-pull-secret podSecurityContext: fsGroup: 3000 postgresql: image: pullSecrets: - rhdh-pull-secret primary: podSecurityContext: enabled: true fsGroup: 3000 volumePermissions: enabled: true
global: host: <app_address> route: enabled: false upstream: ingress: enabled: true className: webapprouting.kubernetes.azure.com host: backstage: image: pullSecrets: - rhdh-pull-secret podSecurityContext: fsGroup: 3000 postgresql: image: pullSecrets: - rhdh-pull-secret primary: podSecurityContext: enabled: true fsGroup: 3000 volumePermissions: enabled: true
Copy to Clipboard Copied! Helm 차트를 사용하여 개발자 허브를 설치하려면 다음 명령을 실행합니다.
helm -n $NAMESPACE install -f values.yaml $DEPLOYMENT_NAME openshift-helm-charts/redhat-developer-hub --version 1.2.6
helm -n $NAMESPACE install -f values.yaml $DEPLOYMENT_NAME openshift-helm-charts/redhat-developer-hub --version 1.2.6
Copy to Clipboard Copied! 배포 상태를 확인합니다.
kubectl get deploy $DEPLOYMENT_NAME -n $NAMESPACE
kubectl get deploy $DEPLOYMENT_NAME -n $NAMESPACE
Copy to Clipboard Copied! 클러스터의 Developer Hub 데이터베이스 암호 및 라우터 기본 URL 값을 사용하여 Developer Hub Helm 차트 인스턴스를 구성합니다.
PASSWORD=$(kubectl get secret redhat-developer-hub-postgresql -o jsonpath="{.data.password}" | base64 -d) CLUSTER_ROUTER_BASE=$(kubectl get route console -n openshift-console -o=jsonpath='{.spec.host}' | sed 's/^[^.]*\.//') helm upgrade $DEPLOYMENT_NAME -i "https://github.com/openshift-helm-charts/charts/releases/download/redhat-redhat-developer-hub-1.2.6/redhat-developer-hub-1.2.6.tgz" \ --set global.clusterRouterBase="$CLUSTER_ROUTER_BASE" \ --set global.postgresql.auth.password="$PASSWORD"
PASSWORD=$(kubectl get secret redhat-developer-hub-postgresql -o jsonpath="{.data.password}" | base64 -d) CLUSTER_ROUTER_BASE=$(kubectl get route console -n openshift-console -o=jsonpath='{.spec.host}' | sed 's/^[^.]*\.//') helm upgrade $DEPLOYMENT_NAME -i "https://github.com/openshift-helm-charts/charts/releases/download/redhat-redhat-developer-hub-1.2.6/redhat-developer-hub-1.2.6.tgz" \ --set global.clusterRouterBase="$CLUSTER_ROUTER_BASE" \ --set global.postgresql.auth.password="$PASSWORD"
Copy to Clipboard Copied! 다음 명령을 실행하여 실행 중인 Developer Hub 인스턴스 URL을 표시합니다.
echo "https://$DEPLOYMENT_NAME-$NAMESPACE.$CLUSTER_ROUTER_BASE"
echo "https://$DEPLOYMENT_NAME-$NAMESPACE.$CLUSTER_ROUTER_BASE"
Copy to Clipboard Copied!
검증
- 브라우저에서 실행 중인 Developer Hub 인스턴스 URL을 열어 개발자 허브를 사용합니다.
업그레이드
배포를 업그레이드하려면 다음 명령을 실행합니다.
helm upgrade $DEPLOYMENT_NAME -i https://github.com/openshift-helm-charts/charts/releases/download/redhat-redhat-developer-hub-1.2.6/redhat-developer-hub-1.2.6.tgz
helm upgrade $DEPLOYMENT_NAME -i https://github.com/openshift-helm-charts/charts/releases/download/redhat-redhat-developer-hub-1.2.6/redhat-developer-hub-1.2.6.tgz
Copy to Clipboard Copied!
delete
배포를 삭제하려면 다음 명령을 실행합니다.
helm -n $NAMESPACE delete $DEPLOYMENT_NAME
helm -n $NAMESPACE delete $DEPLOYMENT_NAME
Copy to Clipboard Copied!