Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Azure Dosyalar ve Helm kullanarak AKS üzerinde yüksek oranda kullanılabilir bir Actions Runner Controller (ARC) altyapısı dağıtmak için gereken altyapıyı oluşturacaksınız.
Başlamadan önce
- Dağıtıma genel bakış bölümünü gözden geçirin ve önkoşulları karşıladığınızdan emin olun.
- Bu kılavuz boyunca kullanılacak ortam değişkenlerini ayarlayın.
- Gerekli uzantıları yükleyin.
Ortam değişkenlerini belirleme
Bu kılavuz boyunca kullanmak üzere aşağıdaki ortam değişkenlerini ayarlayın:
export AKS_AND_STORAGE_ACCOUNT_RG="aks-files-actions"
export AKS_CLUSTER_NAME="aks-actions"
export STORAGE_ACCOUNT_NAME=""
export AKS_STORAGE_ACCOUNT_LOCATION="westus3"
export GITHUB_CONFIG_URL="azure-files-samples/Workloads/azurefiles-actions-aks at master · Azure-Samples/azure-files-samples"
# Optional. Changes might require additional changes on ./install/*.yaml files.
export NAMESPACE_ARC_CONTROLLER="arc-systems"
export ARC_CONTROLLER_NAME="arc-controller"
export NAMESPACE_ARC_RUNNERS="arc-runners"
export ARC_RUNNER_SCALESET_NAME="arc-runner-set"
export ARC_RUNNER_GITHUB_SECRET_NAME=""
Aşağıdaki gerekli değişkenlerin değerlerini değiştirdiğinden emin olun:
-
AKS_AND_STORAGE_ACCOUNT_RGdepolama hesabı ve AKS kümesinin kullandığı kaynak grubunun adıyla. -
AKS_CLUSTER_NAMEAKS kümesinin adıyla birlikte. -
STORAGE_ACCOUNT_NAMEdepolama hesabının adıyla birlikte. -
AKS_STORAGE_ACCOUNT_LOCATIONkaynak oluşturulacak bölgenin adıyla. Bu örnekte, performans ve maliyet yönetimini kolaylaştırmak için bunları AKS kümesiyle aynı bölgeye dağıtacağız. -
GITHUB_CONFIG_URLve GitHub kuruluşunun veya deponun URL'sini seçin.
Mümkünse aşağıdaki isteğe bağlı değişkenleri varsayılan olarak tutun:
-
NAMESPACE_ARC_CONTROLLER: ARC runner'ları ölçek kümesi denetleyicisini çalıştırmak için Kubernetes ad alanının adı. -
ARC_CONTROLLER_NAME: ARC çalıştırıcı ölçekleme kümesi denetleyicisinin adı. -
NAMESPACE_ARC_RUNNERS: ARC kendi sunucunuzda barındırılan çalıştırıcıları çalıştırmak için Kubernetes ad alanının adı. -
ARC_RUNNER_SCALESET_NAME: ARC runners ölçek kümesinin adı. -
ARC_RUNNER_GITHUB_SECRET_NAME: GitHub gizli anahtarının adı.
Gerekli uzantıları yükleme
aks-preview, k8s-extension ve amg uzantıları Kubernetes kümelerini yönetmek ve Azure kaynaklarını sorgulamak için daha fazla işlevsellik sağlar. Aşağıdaki az extension add komutları kullanarak bu uzantıları yükleyin:
az extension add --upgrade --name aks-preview --yes --allow-preview true
az extension add --upgrade --name k8s-extension --yes --allow-preview false
az extension add --upgrade --name amg --yes --allow-preview false
Bir kaynak grubu oluşturun
az group create komutunu kullanarak bir kaynak grubu oluşturun. Bu kaynak grubu AKS kümesini ve Azure Dosyalar depolama hesabını barındıracaktır.
az group create \
--name $AKS_AND_STORAGE_ACCOUNT_RG \
--location $AKS_STORAGE_ACCOUNT_LOCATION
AKS kümesi oluşturma
az aks create komutunu kullanarak bir AKS kümesi oluşturun.
az aks create --resource-group "${AKS_AND_STORAGE_ACCOUNT_RG}" --name "${AKS_CLUSTER_NAME}" \
--os-sku AzureLinux \
--node-count 1 \
--enable-cluster-autoscaler \
--min-count 1 \
--max-count 3 \
--node-vm-size standard_d4s_v5 \
--max-pods=100 \
--network-plugin azure \
--network-plugin-mode overlay \
--generate-ssh-keys
AKS kümesine bağlanma
Bir Kubernetes kümesini yönetmek için, Kubernetes komut satırı istemcisi olan kubectl'i kullanın. Azure Cloud Shell kullanıyorsanız kubectl zaten yüklüdür. Kubectl'yi yerel olarak yüklemek için komutunu kullanın az aks install-cli .
'kubectl'yi
az aks get-credentials commandkullanarak Kubernetes kümenize bağlanacak şekilde yapılandırın. Bu komut, kimlik bilgilerini indirir ve Kubernetes CLI'yi bunları kullanacak şekilde yapılandırır.az aks get-credentials --resource-group "${AKS_AND_STORAGE_ACCOUNT_RG}" --name "${AKS_CLUSTER_NAME}"Kümelenize olan bağlantınızı
kubectl get nodeskomutunu kullanarak doğrulayın. Bu komut AKS kümenizdeki düğümlerin listesini döndürür.kubectl get nodes
Azure dosya paylaşımı oluşturma
Bir Azure Dosyalar dosya paylaşımını Kubernetes birimi olarak kullanabilmeniz için önce bir Azure depolama hesabı ve dosya paylaşımı oluşturmanız gerekir. Bu kılavuzda, meta verileri önbelleğe alma desteğiyle Azure dosya paylaşımı Premium SMB'sini kullanacağız. Oluşturduğunuz her paylaşım için en az 100 Gb'tır .
komutunu kullanarak
az storage account createbir depolama hesabı oluşturun. Aşağıdaki komut, Premium_LRS SKU'yu kullanarak bir depolama hesabı oluşturur.az storage account create --name "${STORAGE_ACCOUNT_NAME}" --resource-group "${AKS_AND_STORAGE_ACCOUNT_RG}" \ --location "${AKS_STORAGE_ACCOUNT_LOCATION}" \ --sku Premium_LRS \ --kind FileStorageBağlantı dizesini, komutunu kullanarak dosya paylaşımını oluşturmak için kullandığınız bir ortam değişkeni olarak dışarı aktarın
az storage account show-connection-string.export AZURE_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string --name "${STORAGE_ACCOUNT_NAME}" --resource-group "${AKS_AND_STORAGE_ACCOUNT_RG}" --query connectionString -o tsv)komutunu kullanarak 100 Gb Premium dosya paylaşımı oluşturun
az storage share create. Bu örnekte, paylaşım adı olarak meta veri ayıklamayı kullanırız. Bu adı değiştirirseniz, dosyayı da bu değişikliği yansıtacak şekilde değiştirmenizarc-runners-set-pv.yamlgerekir.az storage share create --name metadatacaching --quota 100 --connection-string "${AZURE_STORAGE_CONNECTION_STRING}"
ARC çalıştırıcıları ölçek kümesi denetleyicisini yükleyin
Aşağıdaki helm install komutu kullanarak ARC çalıştırıcıları ölçek kümesi denetleyicisini yükleyin.
helm install "${ARC_CONTROLLER_NAME}" \
--namespace "${NAMESPACE_ARC_CONTROLLER}" \
--create-namespace \
oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set-controller
Kubernetes gizli anahtarlar oluşturma
Azure dosya paylaşımı depolama gizli anahtarı
Azure Dosyalar, AKS pod kapsayıcısından Azure dosya paylaşımını bağlamak için kullanılan depolama anahtarıyla AKS üzerinde bir gizli oluşturmanızı gerektirir.
komutunu kullanarak depolama hesabı anahtarını ortam değişkeni olarak dışarı aktarın
az storage account keys list.STORAGE_KEY=$(az storage account keys list --resource-group ${AKS_AND_STORAGE_ACCOUNT_RG} --account-name ${STORAGE_ACCOUNT_NAME} --query "[0].value" -o tsv)kubectl create namespacekomutunu kullanarak ARC'nin kendi kendine barındırılan çalıştırıcılarını çalıştırmak için bir Kubernetes ad alanı oluşturun.kubectl create namespace "${NAMESPACE_ARC_RUNNERS}"kubectl create secret generickomutunu kullanarak Azure dosya paylaşımı depolama anahtarını depolamak için bir Kubernetes sırrı oluşturun.kubectl create secret generic azure-storage-secret \ --namespace "${NAMESPACE_ARC_RUNNERS}" \ --from-literal=azurestorageaccountname=${STORAGE_ACCOUNT_NAME} \ --from-literal=azurestorageaccountkey=${STORAGE_KEY}
GitHub uygulama gizli anahtarı
GitHub uygulaması kaydetme kılavuzunu kullanarak şirket içinde barındırılan çalıştırıcının GitHub kuruluşunuza veya deponuza erişmesine izin vermek için bir GitHub uygulaması oluşturun. GitHub oluşturma işlemi size aşağıdaki parametreleri sağlar:
-
GITHUB_APP_ID: GitHub uygulamasının kimliği. -
GITHUB_APP_INSTALLATION_ID: GitHub uygulamasının yükleme kimliği. -
github_app_private_key: GitHub uygulamasının özel anahtarı. -----BEGIN RSA PRIVATE KEY----- bölümünü özel anahtarınız ile değiştirmeniz gerekir.
-
GitHub uygulaması kimlik bilgilerini depolamak için
kubectl create secret generickomutunu kullanarak bir Kubernetes secret oluşturun. Yer tutucuları GitHub uygulama oluşturma işleminden aldığınız gerçek değerlerle değiştirdiğinizden emin olun.GITHUB_APP_ID="app-id-placeholder" GITHUB_APP_INSTALLATION_ID="installation-id-placeholder" kubectl create secret generic ${ARC_RUNNER_GITHUB_SECRET_NAME} \ --namespace=${NAMESPACE_ARC_RUNNERS} \ --from-literal=github_app_id=${GITHUB_APP_ID} \ --from-literal=github_app_installation_id=${GITHUB_APP_INSTALLATION_ID} \ --from-literal=github_app_private_key=' <Private Key read here>'
Azure dosya paylaşımı yapılandırmaları
Arc Kubernetes çoğaltma kümesi tarafından oluşturulan tüm podlarda aynı dosya paylaşımını bağlamak için AccessMode: ReadWriteMany kullanarak Azure Dosyalar dosya paylaşımını aynı anda birden çok poda bağlayabilirsiniz.
Azure Dosyalar dosya paylaşımını aşağıdaki yollarla kullanırız:
.NET örnek uygulaması tarafından kullanılan NuGet paketlerini önbelleğe almak için kalıcı bir SMB dosya paylaşımı olarak. arc-runners-set-pv-pvc.yaml dosyası, ARC runners scale set podlarına Azure Files dosya paylaşımını bağlamak için gerekli PV ve PVC'yi oluşturur. Bu ilk seçenek için Azure Dosya Ekstra'nın kullanılması önerilir. Aşağıdaki örnekte gösterildiği gibi hem PV hem de PVC bildirimlerinde
volumeAttributesöğesini ve herhangi bir ad alanı parametrelerini özelleştirin:volumeAttributes: resourceGroup: metadata-agroves # Optional. Only set this when the storage account isn't in the same resource group as node. shareName: metadatacaching nodeStageSecretRef: name: azure-storage-secret namespace: arc-runnersGitHub yürütücülerinin çalışma klasörü için geçici birim olarak. Ayrıca iki depolama sınıfı da oluşturuyoruz: Azure Dosyalar Standart (
github-azurefile) ve Azure Dosya Ekstra (github-azurefile-premium). Bu sınıflar, isteğe bağlı birimler oluşturmanıza ve silmenize olanak sağlar. GitHub işi çalıştırıldığında Kubernetes'te yeni bir runner pod oluşturulur ve yeni bir Azure Dosya dosya paylaşımı oluşturulur ve bağlanır. Hacim yalnızca iş çalışması sırasında bulunur. Standart sınıf herhangi bir birim boyutuna izin verir ve Premium en az 100 Gb birim sağlar. Hangi sınıfı tercih ettiğinizi seçebilirsiniz. Premium'un size daha iyi bir performans sağladığını unutmayın. Dosyayı özelleştirebilirsinizarc-runners-storage-class-files.yaml, ancak gerekli değildir.
Kalıcı volume ve persistent volume talebi oluşturma
kubectl applykomutunu kullanarak kalıcı birim ve kalıcı birim talebi oluşturun.kubectl apply -f ./install/arc-runners-set-pv-pvc.yaml --namespace "${NAMESPACE_ARC_RUNNERS}" --waitkomutunu kullanarak Azure Dosyalar için depolama sınıfını
kubectl applyuygulayın.kubectl apply -f ./install/arc-runners-storage-class-files.yaml --wait
ARC çalıştırıcıları ölçek kümesini yükleme
Aşağıdaki kod parçacığı, runner kümesini kurmadan önce özelleştirebileceğiniz kurulum klasöründeki arc-runners-set-values.yaml dosyasındandır.
containerMode:
type: "kubernetes" # Type can be set to dind or kubernetes
## The following is required when containerMode.type=kubernetes
kubernetesModeWorkVolumeClaim:
accessModes: ["ReadWriteMany"]
storageClassName: "github-azurefile-premium" # or "github-azurefile" for Standard_LRS
resources:
requests:
storage: 100Gi # 100Gi minimum to premium or any size when using Standard_LRS "github-azurefile" storage class
template:
spec:
securityContext:
fsGroup: 123 # Group used by GitHub default agent image
containers:
- name: runner
image: ghcr.io/actions/actions-runner:latest
command: ["/home/runner/run.sh"]
env:
- name: ACTIONS_RUNNER_REQUIRE_JOB_CONTAINER
value: "false"
- name: ACTIONS_RUNNER_CONTAINER_HOOK_TEMPLATE
value: "/home/runner/container-config/container-podspec.yaml"
volumeMounts:
- name: "container-podspec-volume"
mountPath: "/home/runner/container-config"
- name: azurefile
mountPath: /home/runner/.nuget/
volumes:
- name: "container-podspec-volume"
configMap:
name: hook-extension
- name: azurefile
persistentVolumeClaim:
claimName: azurefile
Bu örnekte, NuGet paketlerine ve kısa ömürlü _work klasör birimine Azure Dosya paylaşımı birim bağlamalarını eklemek için Kubernetes'in containerMode özelleştirilmiş bir sürümünü kullanıyoruz.
Aşağıdaki parametrelerin değiştirilmesi zorunlu değildir:
-
storageClassName: "github-azurefile-premium" ile "github-azurefile" arasında seçim yapın. -
storage: Depolamanın boyutunu seçin. Premium için en az 100 Gb.
Helm'in diğer parametreleri, helm install seçeneği kullanılarak --set komutunda ayarlanır.
İşlem hattınızda kapsayıcı çalıştırmanıza olanak tanıyan GitHub İş Akışı kapsayıcısı özelliğiyle uyumluluk için, kapsayıcı özelliğiyle iş akışlarını çalıştırırken ARC tarafından oluşturulan iş akışı podunun pod belirtimini içeren bir container-podspec-volume ekleriz. Bu pod tanımı, yükleme klasöründeki arc-runners-set-container-pod-spec.yaml dosyasında oluşturulan bir yapılandırma haritasından monte edilir. Değişiklik gerekmez.
kubectl apply -f ./install/arc-runners-set-container-pod-spec.yaml
ARC koşucuları ölçek kümesi Helm grafiği parametreleri
ARC runners ölçek kümesi Helm grafiği birkaç parametre sağlar. AKS'ye Azure Dosya paylaşımı birimi bağlama ile bir ölçek kümesi yüklerken en önemli parametreler şunlardır:
-
githubConfigUrl: GitHub kuruluşunuz veya deponuz. -
githubConfigSecret: GitHub'a kendi kendine barındırılan çalıştırıcıdan erişmek için GitHub uygulama gizli anahtarı. -
minRunners: Ölçek kümesindeki GitHub'dan yeni iş bekleyen en az koşucu sayısı. -
maxRunners: GitHub'dan iş çalıştıran veya yeni iş bekleyen çalışan sayısı üst sınırı. -
runnerGroup: ARC çalıştırıcıları kümesi tarafından kullanılan GitHub çalıştırıcı grubu.
ARC runners ölçek kümesi Helm grafiğini indirin.
HELM grafiğini AKS'ye yükleme
ARC çalıştırıcılar ölçek kümesi Helm grafiğini, helm install komutunu kullanarak AKS'ye yükleyin.
helm install "${ARC_RUNNER_SCALESET_NAME}" \
--namespace "${NAMESPACE_ARC_RUNNERS}" \
--create-namespace \
--values ./install/arc-runners-set-values.yaml \
--set githubConfigUrl="${GITHUB_CONFIG_URL}" \
--set githubConfigSecret="${ARC_RUNNER_GITHUB_SECRET_NAME}" \
--set minRunners=1 \
--set maxRunners=3 \
--set runnerGroup=default \
oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set
Çalıştırıcı ölçek seti kurulumunu yükseltme
ARC çalıştırıcıları ölçek kümesindeki herhangi bir yapılandırmayı yükseltmek istiyorsanız, ölçek kümesini yüklemek için kullandığınız parametrelerle birlikte helm upgrade --install komutunu kullanabilirsiniz. Örneğin, parametresini minRunners1'den2'ye değiştirmek istiyorsanız aşağıdaki komutu çalıştırabilirsiniz:
helm upgrade --install "${ARC_RUNNER_SCALESET_NAME}" \
--namespace "${NAMESPACE_ARC_RUNNERS}" \
--create-namespace \
--values ./install/arc-runners-set-values.yaml \
--set githubConfigUrl="${GITHUB_CONFIG_URL}" \
--set githubConfigSecret="${ARC_RUNNER_GITHUB_SECRET_NAME}" \
--set minRunners=2 \
--set maxRunners=3 \
--set runnerGroup=default \
oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set
Sonraki adım
Katkıda Bulunanlar
Microsoft bu makaleyi korur. Başlangıçta aşağıdaki katkıda bulunanlar yazdı:
- Jorge Arterio | Üst Düzey Bulut Danışmanı
- Jeff Patterson | Ana Ürün Yöneticisi
- Rena Shah | Kıdemli Ürün Yöneticisi
- Shekhar Singh Sorot | Product Manager 2
- Erin Schaffer | İçerik Geliştirici 2