Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a lap bemutatja, hogyan automatizálhatja a Databricks-alkalmazások üzembe helyezését GitHub GitHub Actions és Declarative Automation Bundles használatával. Ez magában foglalja a számítási feladatok identitásának összevonását, a munkafolyamat YAML-ét és egy állapotellenőrzést, amely megerősíti, hogy az alkalmazás minden üzembe helyezés után a legújabb kódot szolgálja ki.
Általános GitHub Actions útmutatást Azure Databricks feladatokhoz és folyamatokhoz: GitHub Actions. A munkaterhelés-identitásföderáció beállításával kapcsolatban lásd: A munkaterhelés-identitásföderáció engedélyezése a GitHub Actionshöz.
Note
Ha azt szeretné, hogy az alkalmazás minden, az egyik ágra történő push után automatikusan újra üzembe legyen helyezve, használja az automatikus Git-alapú üzembe helyezést (béta). Lásd: Az automatikus Git-telepítések engedélyezése.
Requirements
- Egy szolgáltatásnév a Azure Databricks fiókjában, amely az üzembe helyezett alkalmazást birtokolja. Lásd: Szolgáltatási főnökök hozzáadása a fiókodhoz.
- Egy
databricks.ymlcsomagkonfiguráció a GitHub-adattár gyökerénél, amely erőforrásként deklarálja az alkalmazást. Lásd a(z) alkalmazást. - Az egyszeri beállítási feladatokhoz helyileg telepített Databricks parancssori felület. Lásd : A Databricks parancssori felület telepítése vagy frissítése.
1. lépés. Munkaterhelés-identitásföderáció konfigurálása
A munkaterhelés-identitásszövetség lehetővé teszi, hogy a GitHub Actions-futtató egy rövid élettartamú OIDC-tokennel hitelesítse magát az Azure Databricksnél, ahelyett hogy hitelesítő adatokat tárolna a repozitóriumban.
- A szolgáltatásnévben a GitHub Actions föderációs szabályzatának létrehozásához kövesse a Workload Identity Federation engedélyezése a GitHub Actionshöz című témakör lépéseit. Rögzítse a szolgáltatásnév alkalmazásazonosítóját (UUID) és a munkaterület URL-címét. Mindkét változóra szüksége van a munkafolyamatban.
- Adjon a szolgáltatásnévnek
CAN MANAGEengedélyt az alkalmazásban, vagy munkaterületi engedélyt az alkalmazások létrehozásához, ha az alkalmazás még nem létezik. Lásd: Databricks-alkalmazások engedélyeinek konfigurálása.
2. lépés. A GitHub adattár konfigurálása
A GitHub adattárban hozzon létre egy üzembehelyezési környezetet a munkaterület kapcsolati változóinak tárolásához. A környezet használatával manuális jóváhagyást is igényelhet az üzembe helyezés előtt.
- A Beállítási>környezetekben hozzon létre egy környezet nevét
prod(vagy bármely nevet, amelyet a munkafolyamat hivatkozik). - Környezeti változók esetén adja hozzá a következőket:
| Variable | Value |
|---|---|
DATABRICKS_HOST |
A munkaterület URL-címe, például https://my-workspace.cloud.databricks.com |
DATABRICKS_CLIENT_ID |
A szolgáltatásnév alkalmazásazonosítója az 1. lépésből |
Egyik érték sem hitelesítő adat. A szolgáltatásnév összevonási szabályzata szabályozza, hogy ki hitelesítheti magát, így az ügyfélazonosító önmagában nem biztosít hozzáférést. Nincs szükség titkos ügyfélkódra.
3. lépés. Konfigurálja a csomagot éles üzembe helyezéshez
Itt databricks.ymldeklaráljon egy explicit munkaterületet host és root_path a prod célon. Ez biztosítja, hogy a csomag minden futtatáskor ugyanazon a helyen legyen üzembe helyezve. Az éles módú érvényesítéshez mindkét mezőre szükség van, kivéve, ha run_as szolgáltatásnévre van beállítva. Lásd: Deklaratív Automation-csomagok üzembe helyezési módjai.
Git-forrás
Használja a(z) git_source elemet, hogy a telepítések közvetlenül a Git-adattárból kérjék le a kódot, ahelyett hogy fájlokat töltene fel a munkaterületre. Ez elkerüli a további sync lépést, és szinkronizálja az üzembe helyezett kódot az adattárral.
targets:
prod:
mode: production
workspace:
host: https://my-workspace.cloud.databricks.com
root_path: /Workspace/Users/<service-principal-or-owner>/.bundle/${bundle.name}/${bundle.target}
resources:
apps:
my_app:
name: my-app
git_repository:
url: https://github.com/org/repo
git_source:
branch: main
source_code_path: apps/my-app
Cserélje le a(z) <service-principal-or-owner> elemet arra a munkaterület-felhasználóra, amely a köteghez tartozó összetevők tulajdonosa, jellemzően a szolgáltatásnévhez tartozó alkalmazásazonosítóra. Cserélje le az git_repository URL-címet a GitHub adattár URL-címére. Ha az alkalmazás kódja a repozitórium gyökerében található, hagyja ki a(z) source_code_path elemet. Lásd a(z) alkalmazást.
Magánadattárak esetén üzembe helyezés előtt konfiguráljon egy Git-hitelesítő adatot az alkalmazás szolgáltatásnevén. Tekintse meg a Git-adattárból történő üzembe helyezés parancssori felületének utasításait.
Munkaterület forrása
A source_code_path használatával alkalmazásfájlokat tölthet fel a helyi tárolóból a munkaterületre az üzembe helyezés során.
targets:
prod:
mode: production
workspace:
host: https://my-workspace.cloud.databricks.com
root_path: /Workspace/Users/<service-principal-or-owner>/.bundle/${bundle.name}/${bundle.target}
resources:
apps:
my_app:
name: my-app
source_code_path: ./app
Cserélje le a(z) <service-principal-or-owner> elemet arra a munkaterület-felhasználóra, amely a köteghez tartozó összetevők tulajdonosa, jellemzően a szolgáltatásnévhez tartozó alkalmazásazonosítóra. Cserélje le a(z) ./app elemet az alkalmazás forráskódjának a(z) databricks.yml-hez viszonyított elérési útjára. Lásd a(z) alkalmazást.
4. lépés. Az üzembe helyezési munkafolyamat hozzáadása
Add hozzá a(z) .github/workflows/deploy.yml elemet az adattáradhoz:
name: Deploy to Databricks Apps
on:
workflow_dispatch:
# Uncomment to deploy on every push to main once the workflow is validated.
# push:
# branches: [main]
permissions:
id-token: write # required for OIDC federation
contents: read
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
environment: prod
env:
DATABRICKS_AUTH_TYPE: github-oidc
DATABRICKS_HOST: ${{ vars.DATABRICKS_HOST }}
DATABRICKS_CLIENT_ID: ${{ vars.DATABRICKS_CLIENT_ID }}
steps:
- uses: actions/checkout@v4
- name: Install Databricks CLI
uses: databricks/setup-cli@main
- name: Validate bundle
run: databricks bundle validate --target prod
- name: Deploy bundle
run: databricks bundle deploy --target prod
- name: Start or restart app
run: databricks bundle run my_app --target prod
Az utolsó lépésben cserélje le a(z) my_app elemet arra az erőforráskulcsra, amelyet a(z) databricks.yml a(z) resources.apps alatt használ.
A futónak szüksége van az id-token: write OIDC-jogkivonat igényléséhez szükséges engedélyre. A databricks/setup-cli művelet automatikusan beolvassa DATABRICKS_AUTH_TYPE=github-oidc és kezeli a hitelesítést.
Warning
databricks bundle deploy feltölti a forráskódot, és frissíti az erőforrásokat, de nem indítja újra az alkalmazásfolyamatot. Ha kihagyja az utolsó databricks bundle run lépést, az üzembe helyezés a CI-ben halad át, miközben az alkalmazás továbbra is az előző kódot szolgálja ki. Az üzembe helyezés után mindig futtassa a csomagerőforrást.
5. lépés. Várjon, amíg az alkalmazás kifogástalan állapotban van
A Databricks azt javasolja, hogy az üzembe helyezés után adjon hozzá egy állapot-lekérdezési lépést.
databricks bundle run kilép, amint jelzi az alkalmazás indítását, de lehet, hogy az alkalmazás még nem fut. Az indítás során továbbra is meghiúsulhat olyan problémák miatt, mint a hiányzó függőségek, a hiányzó környezeti változók vagy a portütközések. Lekérdezési lépés hozzáadása biztosítja, hogy egy sikertelen indítás a munkafolyamatot is meghiúsulja:
- name: Wait for app to be running
env:
APP_NAME: my-app
run: |
for i in $(seq 1 20); do
STATE=$(databricks apps get "$APP_NAME" --output json | jq -r '.app_status.state')
echo "Attempt $i/20: state=$STATE"
if [ "$STATE" = "RUNNING" ]; then
exit 0
fi
sleep 15
done
echo "App did not reach RUNNING state within 5 minutes" >&2
exit 1
Állítsa a(z) APP_NAME értékét arra az értékre, amelyet a(z) databricks.yml a(z) resources.apps.<key>.name alatt megad, ne a csomag erőforráskulcsára.
Meglévő alkalmazás kezelése
Az alkalmazásnevek a munkaterületen egyediek. A bundle deploy lépés meghiúsul An app with the same name already exists , ha egy másik csomag (vagy egy manuálisan létrehozott alkalmazás) már rendelkezik ilyen nevű alkalmazással. Kösse a csomagot a meglévő alkalmazáshoz ahelyett, hogy újra létrehozná.
Ezt helyileg futtatva csatolja a csomagot a meglévő alkalmazáshoz:
databricks bundle deployment bind my_app <existing-app-name> --target prod --auto-approve
Ezután futtassa újra a munkafolyamatot. A későbbi üzembe helyezések újra felhasználják a kötést.
Ha a meglévő alkalmazás kiszolgálóoldali konfigurációval (például budget_policy_id) rendelkezik, amely nem szerepel a databricks.ymlcsomagfájlban, az újbóli üzembe helyezés előtt másolja azt a csomagfájlba. Az eltérések terraformos "inkonzisztens eredmény" hibaként jelennek meg a csomag üzembe helyezési lépése során.
Eseményindító kiválasztása
workflow_dispatch-val kezdje, hogy az első telepítés kézi legyen. Miután néhány futtatás sikeresen lefutott, adja hozzá a push: branches: [main] elemet, hogy minden egyesítéskor üzembe helyezzen.
További biztonsági ellenőrzésként állítsa be a prod környezetet kötelező jóváhagyókkal itt: Settings>Environments>prod>Deployment protection rules. Minden munkafolyamat futtatása megvár egy jóváhagyót az üzembe helyezési feladat megkezdése előtt.
További erőforrások
- Állítsa be a számításifeladat-identitásszövetséget a GitHub Actions szövetségi szabályzatának konfigurálásához a szolgáltatásnevén.
-
Deklaráljon egy alkalmazást csomagerőforrásként az alkalmazás hozzáadásához
databricks.yml. - Alkalmazásengedélyek konfigurálása annak szabályozásához, hogy ki felügyelheti vagy használhatja az üzembe helyezett alkalmazást.
- További információ a deklaratív automation-csomagokról a csomag életciklusával és üzembe helyezési módjaival kapcsolatban.
- Az GitHub Actions Azure Databricks alkalmazáson kívüli feladatokhoz és folyamatokhoz nyújt útmutatást.