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! < my-rhdh-project> 네임스페이스를 생성하고 활성화합니다.
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.6.2
helm -n $NAMESPACE install -f values.yaml $DEPLOYMENT_NAME openshift-helm-charts/redhat-developer-hub --version 1.6.2
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.6.2/redhat-developer-hub-1.6.2.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.6.2/redhat-developer-hub-1.6.2.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.6.2/redhat-developer-hub-1.6.2.tgz
helm upgrade $DEPLOYMENT_NAME -i https://github.com/openshift-helm-charts/charts/releases/download/redhat-redhat-developer-hub-1.6.2/redhat-developer-hub-1.6.2.tgz
Copy to Clipboard Copied!
삭제
배포를 삭제하려면 다음 명령을 실행합니다.
helm -n $NAMESPACE delete $DEPLOYMENT_NAME
helm -n $NAMESPACE delete $DEPLOYMENT_NAME
Copy to Clipboard Copied!