Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ismerkedjen meg a GitHub Actions szolgáltatással egy munkafolyamat létrehozásával, amely létrehoz egy virtuálisgép-rendszerképet.
A GitHub Actions segítségével felgyorsíthatja a CI/CD-folyamatot, ha egyéni virtuálisgép-lemezképeket hoz létre a munkafolyamatok összetevőivel. Képeket is készíthet, és terjesztheti őket egy megosztott képgyűjteményben.
Ezeket a rendszerképeket ezután virtuális gépek és virtuálisgép-méretezési csoportok létrehozásához használhatja.
A virtuális gép rendszerkép építési művelet az Azure Image Builder szolgáltatást használja.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel. Hozzon létre egy fiókot ingyenesen.
- Egy GitHub-fiók aktív adattárral. Ha nincs fiókja, ingyenesen regisztrálhat egyet.
- Ez a példa a Java Spring PetClinic mintaalkalmazást használja.
- Egy Azure Compute Galéria egy képpel.
Munkafolyamat-fájl áttekintése
A munkafolyamatokat egy YAML-fájl (.yml) határozza meg az /.github/workflows/ adattár elérési útján. Ez a definíció a munkafolyamatot alkotó különböző lépéseket és paramétereket tartalmazza.
A fájl három szakaszból áll:
| Szakasz | Tasks |
|---|---|
| Authentication | 1. Felhasználó által felügyelt identitás hozzáadása. 2. Szolgáltatási főfelhasználó vagy Open ID Connect beállítása. 3. Hozzon létre egy GitHub-titkos kulcsot. |
| Épít | 1. A környezet beállítása. 2. Az alkalmazás létrehozása. |
| Image | 1. Virtuálisgép-rendszerkép létrehozása. 2. Hozzon létre egy virtuális gépet. |
Felhasználó által felügyelt identitás létrehozása
A rendszerképek terjesztéséhez szüksége lesz egy felhasználó által felügyelt identitásra az Azure Image Builderhez (AIB). Az Azure-beli felhasználó által hozzárendelt felügyelt identitást a rendszer a rendszerkép összeállítása során fogja használni képek olvasására és közös képgyűjteménybe való írására.
Felhasználó által felügyelt identitás létrehozása az Azure CLI-vel vagy az Azure Portallal. Írja le a felügyelt identitás nevét.
Szabja testre ezt a JSON-kódot. Cserélje le a
{subscriptionID}helyőrzőt az előfizetés azonosítójára és a{rgName}helyőrzőt az erőforráscsoport nevére.{ "properties": { "roleName": "Image Creation Role", "IsCustom": true, "description": "Azure Image Builder access to create resources for the image build", "assignableScopes": [ "/subscriptions/{subscriptionID}/resourceGroups/{rgName}" ], "permissions": [ { "actions": [ "Microsoft.Compute/galleries/read", "Microsoft.Compute/galleries/images/read", "Microsoft.Compute/galleries/images/versions/read", "Microsoft.Compute/galleries/images/versions/write", "Microsoft.Compute/images/write", "Microsoft.Compute/images/read", "Microsoft.Compute/images/delete" ], "notActions": [], "dataActions": [], "notDataActions": [] } ] } }Ezzel a JSON-kóddal új egyéni szerepkört hozhat létre a JSON használatával.
Az Azure Portalon nyissa meg az Azure Compute Galleryt, és lépjen a Hozzáférés-vezérlés (IAM) elemre.
Válassza a Szerepkör-hozzárendelés hozzáadása lehetőséget, és rendelje hozzá a képlétrehozási szerepkört a felhasználó által felügyelt identitáshoz.
Üzembehelyezési hitelesítő adatok létrehozása
Az Azure Bejelentkezési művelet OIDC-vel való használatához konfigurálnia kell egy összevont identitás hitelesítő adatait egy Microsoft Entra-alkalmazáson vagy egy felhasználó által hozzárendelt felügyelt identitáson.
1. lehetőség: Microsoft Entra-alkalmazás
- Microsoft Entra-alkalmazás létrehozása szolgáltatásazonossággal az Azure Portal, Azure CLI vagy Azure PowerShell használatával.
- Másolja ki az ügyfél-azonosító, az előfizetés-azonosító és a címtár-(bérlői) azonosító értékeit a GitHub Actions munkafolyamat későbbi részében való használathoz.
- Rendeljen hozzá egy megfelelő szerepkört a szolgáltatási főnévhez az Azure portal, az Azure CLI vagy az Azure PowerShell használatával.
- Konfiguráljon összevont identitás-hitelesítő adatokat egy Microsoft Entra-alkalmazáson , hogy megbízzon a GitHub Actions által a GitHub-adattárban kibocsátott jogkivonatokban.
2. lehetőség: Felhasználó által hozzárendelt felügyelt identitás
- Felhasználó által hozzárendelt felügyelt identitás létrehozása.
- Másolja ki az ügyfél-azonosító, az előfizetés-azonosító és a címtár-(bérlői) azonosító értékeit a GitHub Actions munkafolyamat későbbi részében való használathoz.
- Rendeljen hozzá egy megfelelő szerepkört a felhasználó által hozzárendelt felügyelt identitáshoz.
- Konfiguráljon egy federált identitás hitelesítő adatot egy felhasználóhoz rendelt felügyelt identitáson, hogy megbízhasson a GitHub Actions által kibocsátott jogkivonatokban a GitHub-adattárban.
GitHub-titkos kódok létrehozása
A bejelentkezési művelethez meg kell adnia az alkalmazás ügyfél-, címtár- (bérlői) azonosítóját és előfizetés-azonosítóját. Ezek az értékek közvetlenül a munkafolyamatban is megadhatók, vagy a GitHub titkokban tárolhatók, és a munkafolyamatban hivatkozhatók. Az értékek GitHub-titkos kulcsként való mentése a biztonságosabb megoldás.
A GitHubon nyissa meg az adattárat.
Válassza ki a Biztonsági > titkos kulcsok és változók > műveletek lehetőséget.
Válassza az Új tárház titkos kódját.
Megjegyzés:
A nyilvános adattárak munkafolyamat-biztonságának javítása érdekében tárházi titkos kulcsok helyett használjon környezeti titkos kulcsokat . Ha a környezet jóváhagyást igényel, a feladatok nem férhetnek hozzá a környezeti titkos kódokhoz, amíg az egyik szükséges véleményező nem hagyja jóvá.
Titkos kulcsok létrehozása a következőhöz
AZURE_CLIENT_ID: ,AZURE_TENANT_IDésAZURE_SUBSCRIPTION_ID. Másolja ki ezeket az értékeket a Microsoft Entra-alkalmazásból vagy a felhasználó által hozzárendelt felügyelt identitásból a GitHub-titkos kulcsokhoz:GitHub-titkos kód Microsoft Entra-alkalmazás vagy felhasználó által hozzárendelt felügyelt identitás AZURE_CLIENT_ID (Az Azure ügyfélazonosító) Ügyfélazonosító AZURE_SUBSCRIPTION_ID Előfizetés azonosító AZURE_TENANT_ID Címtár (ügyfél) azonosítója Megjegyzés:
Biztonsági okokból azt javasoljuk, hogy a GitHub Titkos kulcsokat használja ahelyett, hogy közvetlenül a munkafolyamatnak ad át értékeket.
Az Azure bejelentkezési műveletének használata
Az Azure Bejelentkezési művelettel a GitHub-titkos kód használatával hitelesítheti magát az Azure-ban.
Az Open ID Connect esetében az Active Directory-alkalmazáshoz társított összevont hitelesítő adatokat kell használnia.
A GitHub-titkos kódok munkafolyamat-fájlban való hivatkozásáról a GitHub Docs titkosított titkos kulcsainak használata című témakörben olvashat bővebben.
on: [push]
name: Create Custom VM Image
jobs:
build-image:
runs-on: ubuntu-latest
steps:
- name: Log in with Azure
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
A Java konfigurálása
Állítsa be a Java-környezetet a Java Setup SDK művelettel. Ebben a példában beállítja a környezetet, a Mavennel épít, majd egy összetevőt ad ki.
A GitHub-összetevők használatával fájlokat oszthat meg egy munkafolyamatban a feladatok között. ** Létrehoz egy tárolóelemet a JAR-fájl számára, majd hozzáadja a virtuális gép képéhez.
on: [push]
name: Create Custom VM Image
jobs:
build-image:
runs-on: ubuntu-latest
strategy:
matrix:
java: [ '17' ]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Login via Az module
uses: azure/login@v2
with:
creds: ${{secrets.AZURE_CREDENTIALS}}
- name: Set up JDK ${{matrix.java}}
uses: actions/setup-java@v2
with:
java-version: ${{matrix.java}}
distribution: 'adopt'
cache: maven
- name: Build with Maven Wrapper
run: ./mvnw -B package
- name: Build Java
run: mvn --batch-mode --update-snapshots verify
- run: mkdir staging && cp target/*.jar staging
- uses: actions/upload-artifact@v2
with:
name: Package
path: staging
A rendszerkép létrehozása
Cserélje le a helyőrzőket {subscriptionID}{rgName}{Identity} az előfizetés azonosítójára, az erőforráscsoport nevére és a felügyelt identitás nevére. Cserélje le {galleryName} és {imageName} értékeit a saját képgyűjteményének nevére és a kép nevére.
Megjegyzés:
Ha az Alkalmazás Baked Image létrehozása művelet engedélyhiba miatt meghiúsul, ellenőrizze, hogy hozzárendelte-e a Képlétrehozási jogosultságot a felhasználó által kezelt identitáshoz.
- name: Create App Baked Image
id: imageBuilder
uses: azure/build-vm-image@v0
with:
location: 'eastus2'
resource-group-name: '{rgName}'
managed-identity: '{Identity}' # Managed identity
source-os-type: 'windows'
source-image-type: 'platformImage'
source-image: MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest #unique identifier of source image
dist-type: 'SharedImageGallery'
dist-resource-id: '/subscriptions/{subscriptionID}/resourceGroups/{rgName}/providers/Microsoft.Compute/galleries/{galleryName}/images/{imageName}/versions/0.1.${{ GITHUB.RUN_ID }}' #Replace with the resource id of your shared image gallery's image definition
dist-location: 'eastus2'
Virtuális gép műveleti argumentumai
| Bemenet | Kötelező | Description |
|---|---|---|
resource-group-name |
Igen | A buildelési folyamat során a tároláshoz és az összetevők mentéséhez használt erőforráscsoport. |
image-builder-template-name |
Nem | A használt képszerkesztő sablonerőforrás neve. |
location |
Igen | Az a hely, ahol az Azure Image Builder futni fog. Lásd a támogatott helyeket. |
build-timeout-in-minutes |
Nem | Az az időtartam, ami után a build lemondásra kerül. Alapértelmezett érték: 240. |
vm-size |
Opcionális | Alapértelmezés szerint a Standard_D1_v2 rendszer ezt használja. Lásd a virtuális gépek méretét. |
managed-identity |
Igen | A korábban létrehozott, felhasználó által kezelt identitás. Használja a teljes azonosítót, ha az identitás egy másik erőforráscsoportban található. Használja a nevet, ha ugyanabban az erőforráscsoportban található. |
source-os |
Igen | Az alaprendszerkép operációs rendszerének típusa (Linux vagy Windows) |
source-image-type |
Igen | Az egyéni rendszerkép létrehozásához használt alapképtípus. |
source-image |
Igen | Az alapkép erőforrás-azonosítója. A forrásrendszerképnek ugyanabban az Azure-régióban kell lennie, amely a hely bemeneti értékében van megadva. |
customizer-source |
Nem | Az a könyvtár, ahol megtarthatja az összes összetevőt, amelyet hozzá kell adni az alaprendszerképhez a testreszabáshoz. Alapértelmezés szerint az érték ${{ GITHUB.WORKSPACE }}/workflow-artifacts. |
customizer-destination |
Nem | Ez az a könyvtár a testre szabott képen, ahová az összetevőket másolni kell. |
customizer-windows-update |
Nem | Csak Windows esetén. Logikai érték. Ha truea rendszerképkészítő a testreszabások végén futtatja a Windows-frissítést. |
dist-location |
Nem | A SharedImageGallery esetében ez a dist-type. |
dist-image-tags |
Nem | Ezek a felhasználó által definiált címkék, amelyek hozzáadódnak a létrehozott egyéni rendszerképhez (például: version:beta). |
A virtuális gép létrehozása
Utolsó lépésként hozzon létre egy virtuális gépet a rendszerképből.
Cserélje le a helyőrzőket
{rgName}az erőforráscsoport nevére.Adjon hozzá egy GitHub-titkos kulcsot a virtuális gép jelszavával (
VM_PWD). Mindenképpen írja le a jelszót, mert nem fogja tudni újra látni. A felhasználónévmyuser.
- name: CREATE VM
uses: azure/CLI@v1
with:
azcliversion: 2.0.72
inlineScript: |
az vm create --resource-group ghactions-vMimage --name "app-vm-${{ GITHUB.RUN_NUMBER }}" --admin-username myuser --admin-password "${{ secrets.VM_PWD }}" --location eastus2 \
--image "${{ steps.imageBuilder.outputs.custom-image-uri }}"
TELJES YAML
on: [push]
name: Create Custom VM Image
jobs:
build-image:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Login via Az module
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Setup Java 1.8.x
uses: actions/setup-java@v1
with:
java-version: '1.8.x'
- name: Build Java
run: mvn --batch-mode --update-snapshots verify
- run: mkdir staging && cp target/*.jar staging
- uses: actions/upload-artifact@v2
with:
name: Package
path: staging
- name: Create App Baked Image
id: imageBuilder
uses: azure/build-vm-image@v0
with:
location: 'eastus2'
resource-group-name: '{rgName}'
managed-identity: '{Identity}' # Managed identity
source-os-type: 'windows'
source-image-type: 'platformImage'
source-image: MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest #unique identifier of source image
dist-type: 'SharedImageGallery'
dist-resource-id: '/subscriptions/{subscriptionID}/resourceGroups/{rgName}/providers/Microsoft.Compute/galleries/{galleryName}/images/{imageName}/versions/0.1.${{ GITHUB.RUN_ID }}' #Replace with the resource id of your shared image gallery's image definition
dist-location: 'eastus2'
- name: CREATE VM
uses: azure/CLI@v1
with:
azcliversion: 2.0.72
inlineScript: |
az vm create --resource-group ghactions-vMimage --name "app-vm-${{ GITHUB.RUN_NUMBER }}" --admin-username myuser --admin-password "${{ secrets.VM_PWD }}" --location eastus2 \
--image "${{ steps.imageBuilder.outputs.custom-image-uri }}"
Következő lépések
- Megtudhatja, hogyan helyezheti üzembe az Azure-ban.