Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku vytvoříte infrastrukturu potřebnou k nasazení infrastruktury řadiče ARC (Actions Runner) s vysokou dostupností v AKS pomocí služby Azure Files a Helmu.
Než začnete
- Projděte si přehled nasazení a ujistěte se, že splňujete požadavky.
- Nastavte proměnné prostředí pro použití v tomto průvodci.
- Nainstalujte požadovaná rozšíření.
Nastavení proměnných prostředí
Nastavte následující proměnné prostředí pro použití v celém tomto průvodci:
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=""
Nezapomeňte nahradit hodnoty následujících požadovaných proměnných:
-
AKS_AND_STORAGE_ACCOUNT_RGs názvem skupiny prostředků, kterou používá účet úložiště a cluster AKS. -
AKS_CLUSTER_NAMEs názvem clusteru AKS. -
STORAGE_ACCOUNT_NAMEs názvem účtu úložiště. -
AKS_STORAGE_ACCOUNT_LOCATIONs názvem oblasti, ve které se mají prostředky vytvořit. V tomto příkladu je nasadíme ve stejné oblasti jako cluster AKS, abychom usnadnili správu výkonu a nákladů. -
GITHUB_CONFIG_URLs adresou URL pro organizaci nebo úložiště GitHub.
Pokud je to možné, ponechte následující volitelné proměnné jako výchozí hodnoty:
-
NAMESPACE_ARC_CONTROLLER: Název oboru názvů Kubernetes ke spuštění kontroléru škálovací sady ARC Runners. -
ARC_CONTROLLER_NAME: Název kontroleru škálovací sady ARC Runners. -
NAMESPACE_ARC_RUNNERS: Název Kubernetes namespace pro spouštění samostatně hostovaných běžců ARC. -
ARC_RUNNER_SCALESET_NAME: Název škálovací sady běžců ARC. -
ARC_RUNNER_GITHUB_SECRET_NAME: Název tajného kódu GitHubu.
Instalace požadovaných rozšíření
Rozšíření aks-preview, rozšíření k8s a amg poskytují další funkce pro správu clusterů Kubernetes a dotazování prostředků Azure. Nainstalujte tato rozšíření pomocí následujících az extension add příkazů:
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
Vytvoření skupiny zdrojů
Vytvořte skupinu prostředků pomocí příkazu az group create. Tato skupina prostředků bude obsahovat cluster AKS a účet úložiště Azure Files.
az group create \
--name $AKS_AND_STORAGE_ACCOUNT_RG \
--location $AKS_STORAGE_ACCOUNT_LOCATION
Vytvoření clusteru AKS
Vytvořte cluster AKS pomocí příkazu az aks create.
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
Připojení ke clusteru AKS
Pro správu Kubernetes clusteru použijte příkazový řádkový klient Kubernetes, kubectl. Kubectl je už nainstalovaný, pokud používáte Azure Cloud Shell. Pokud chcete nainstalovat kubectl místně, použijte az aks install-cli příkaz.
Nakonfigurujte kubectl pro připojení ke clusteru Kubernetes pomocí nástroje
az aks get-credentials command. Tento příkaz stahuje přihlašovací údaje a konfiguruje Kubernetes CLI pro jejich použití.az aks get-credentials --resource-group "${AKS_AND_STORAGE_ACCOUNT_RG}" --name "${AKS_CLUSTER_NAME}"Ověřte připojení k vašemu clusteru pomocí příkazu
kubectl get nodes. Tento příkaz vrátí seznam uzlů v clusteru AKS.kubectl get nodes
Vytvořte sdílené úložiště souborů Azure
Než budete moct jako svazek Kubernetes použít sdílenou složku Azure Files, musíte vytvořit účet úložiště Azure a sdílenou složku. V této příručce používáme protokol SMB sdílené složky Azure Premium s podporou ukládání metadat do mezipaměti. Minimální hodnota je 100 Gb pro každou sdílenou složku, kterou vytvoříte.
Vytvořte účet úložiště pomocí příkazu
az storage account create. Následující příkaz vytvoří účet úložiště pomocí skladové položky Premium_LRS.az storage account create --name "${STORAGE_ACCOUNT_NAME}" --resource-group "${AKS_AND_STORAGE_ACCOUNT_RG}" \ --location "${AKS_STORAGE_ACCOUNT_LOCATION}" \ --sku Premium_LRS \ --kind FileStorageVyexportujte připojovací řetězec jako proměnnou prostředí, kterou použijete k vytvoření sdílené složky pomocí
az storage account show-connection-stringpříkazu.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)Pomocí příkazu vytvořte sdílenou složku
az storage share createPremium o velikosti 100 Gb. V tomto příkladu používáme jako název sdílení metadatacaching. Pokud tento název změníte, musíte také změnitarc-runners-set-pv.yamlsoubor tak, aby odrážel tuto změnu.az storage share create --name metadatacaching --quota 100 --connection-string "${AZURE_STORAGE_CONNECTION_STRING}"
Instalace kontroleru škálovací sady ARC Runners
Pomocí následujícího helm install příkazu nainstalujte kontroler škálovací sady ARC Runners.
helm install "${ARC_CONTROLLER_NAME}" \
--namespace "${NAMESPACE_ARC_CONTROLLER}" \
--create-namespace \
oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set-controller
Vytvoření tajných kódů Kubernetes
Tajný klíč úložiště sdíleného úložiště souborů Azure
Služba Azure Files vyžaduje, abyste v AKS vytvořili tajný kód s klíčem úložiště, který se používá k připojení sdílené složky Azure z kontejneru podů AKS.
Pomocí příkazu exportujte klíč účtu úložiště jako proměnnou
az storage account keys listprostředí.STORAGE_KEY=$(az storage account keys list --resource-group ${AKS_AND_STORAGE_ACCOUNT_RG} --account-name ${STORAGE_ACCOUNT_NAME} --query "[0].value" -o tsv)Pomocí příkazu vytvořte obor názvů Kubernetes, který bude spouštět spouštěče
kubectl create namespacev místním prostředí ARC.kubectl create namespace "${NAMESPACE_ARC_RUNNERS}"Vytvořte tajný klíč Kubernetes pro uložení klíče úložiště sdílené složky Azure pomocí
kubectl create secret genericpříkazu.kubectl create secret generic azure-storage-secret \ --namespace "${NAMESPACE_ARC_RUNNERS}" \ --from-literal=azurestorageaccountname=${STORAGE_ACCOUNT_NAME} \ --from-literal=azurestorageaccountkey=${STORAGE_KEY}
Tajný kód aplikace GitHubu
Vytvořte aplikaci GitHub, která umožňuje místnímu spouštěči přístup k vaší organizaci nebo úložišti GitHubu pomocí průvodce registrací aplikace GitHub . Proces vytváření GitHubu poskytuje následující parametry:
-
GITHUB_APP_ID: ID aplikace GitHub. -
GITHUB_APP_INSTALLATION_ID: ID instalace aplikace GitHub. -
github_app_private_key: Privátní klíč aplikace GitHub. Potřebujete nahradit -----BEGIN RSA PRIVATE KEY----- oddíl privátním klíčem.
-
Vytvořte tajný kód Kubernetes pro uložení přihlašovacích údajů aplikace GitHub pomocí
kubectl create secret genericpříkazu. Nezapomeňte zástupné symboly nahradit skutečnými hodnotami, které jste získali z procesu vytváření aplikace GitHub.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>'
Konfigurace sdílených složek Azure
Sdílenou složku Azure Files můžete připojit ve více podech zároveň pomocí AccessMode: ReadWriteMany k připojení stejné sdílené složky ve všech podech vytvořených replikovanou sadou ARC Kubernetes.
Sdílenou složku Azure Files používáme následujícími způsoby:
Jako trvalá sdílená složka SMB pro ukládání balíčků NuGet používaných ukázkovou aplikací .NET do mezipaměti. Soubor arc-runners-set-pv-pvc.yaml vytvoří požadované PV a PVC pro připojení sdíleného úložiště Azure Files do podů škálovací sady ARC Runners. Pro tuto první možnost doporučujeme Azure File Premium. Přizpůsobte
volumeAttributesa parametry jakéhokoli oboru názvů na obou manifestech PV a PVC, jak je znázorněno v následujícím příkladu: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-runnersDočasný svazek pro pracovní složku běžců GitHubu Vytvoříme také dvě třídy úložiště: Azure Files Standard (
github-azurefile) a Azure File Premium (github-azurefile-premium). Tyto třídy umožňují vytvářet a odstraňovat svazky na vyžádání. Když se spustí úloha v GitHubu, vytvoří se v Kubernetes nový pod spouštěče. Současně se vytvoří a připojí nová sdílená složka úložiště Azure File. Objem existuje pouze během běhu úlohy. Třída Standard umožňuje libovolnou velikost svazku a Premium umožňuje minimálně 100 Gb svazku. Podle toho, kterou třídu dáváte přednost, můžete vybrat. Mějte na paměti, že Premium poskytuje lepší výkon. Souborarc-runners-storage-class-files.yamlmůžete přizpůsobit, ale není to nutné.
Vytvoření trvalého svazku a požadavku na trvalý svazek
Pomocí příkazu
kubectl applyvytvořte trvalý svazek a trvalý požadavek na svazek.kubectl apply -f ./install/arc-runners-set-pv-pvc.yaml --namespace "${NAMESPACE_ARC_RUNNERS}" --waitPoužijte třídu úložiště pro Azure Files pomocí
kubectl applypříkazu.kubectl apply -f ./install/arc-runners-storage-class-files.yaml --wait
Nainstalujte škálovací sadu ARC runners
Ukázka kódu, která je ze souboru arc-runners-set-values.yaml v instalační složce, může být upravena před instalací Helm chart sady spouštěčů.
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
V tomto příkladu používáme přizpůsobenou verzi Kubernetes containerMode pro zahrnutí připojení svazků sdílených složek Azure File k balíčkům NuGet a efemérnímu svazku složky _work.
Následující parametry nejsou povinné ke změně:
-
storageClassName: Zvolte mezi github-azurefile-premium a github-azurefile. -
storage: Zvolte velikost úložiště. Minimálně 100 Gb pro Premium.
Ostatní parametry Helmu se nastaví na příkazu helm install pomocí možnosti --set.
Kvůli kompatibilitě s funkcí kontejneru pracovního postupu GitHubu, která umožňuje spouštět kontejnery ve vaší pipelině, připojíme container-podspec-volume se specifikací podu pro pod pracovního postupu vytvořený službou ARC při spouštění pracovních postupů s funkcí kontejneru. Tato specifikace podu je připojena z mapy konfigurace vytvořené v arc-runners-set-container-pod-spec.yaml souboru v instalační složce. Nejsou vyžadovány žádné změny.
kubectl apply -f ./install/arc-runners-set-container-pod-spec.yaml
Parametry grafu Helmu škálovací sady arc runnerů
Graf Helm škálovací sady arc runnerů poskytuje několik parametrů. Při instalaci škálovací sady s Azure File share volume mount na AKS jsou nejdůležitější následující parametry:
-
githubConfigUrl: Vaše organizace nebo úložiště GitHubu. -
githubConfigSecret: Tajný kód aplikace GitHub pro přístup k GitHubu z místního spouštěče. -
minRunners: Minimální počet spouštěčů ve škálovací sadě čekajících na nové úlohy z GitHubu. -
maxRunners: Maximální počet spouštěčů, které spouštějí úlohy nebo čekají na nové úlohy z GitHubu. -
runnerGroup: Skupina spouštěčů GitHubu používaná sadou ARC runnerů.
Stáhněte si Helm chart pro škálovací sady ARC Runnerů.
Nainstalujte chart Helm na AKS
Nainstalujte chart Helm škálovací sady ARC runnerů na AKS pomocí příkazu helm install.
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
Upgradujte instalaci škálovací sady běžců
Pokud chcete upgradovat jakoukoli konfiguraci ve škálovací sadě arc runners, můžete použít helm upgrade --install příkaz se stejnými parametry, které jste použili k instalaci škálovací sady. Pokud například chcete změnit minRunners parametr z 1 na 2, můžete spustit následující příkaz:
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
Další krok
Přispěvatelé
Microsoft udržuje tento článek. Následující přispěvatelé ho původně napsali:
- Jorge Arterio | Vedoucí poradce pro cloud
- Jeff Patterson | Hlavní produktový manažer
- Rena Shah | Vedoucí produktový manažer
- Shekhar Singh Sorot | Produktový manažer 2
- Erin Schaffer | Content Developer 2