GitHub操作Azure容器应用生成部署
本教程介绍如何使用 GitHub 操作部署 Azure 容器应用。我将提供有关如何生成自定义 Github 操作工作流以将容器应用部署到 Azure 的示例和分步说明。这将介绍如何根据需要为容器部署创建自己的操作。
一些假设: 你有一个 Azure 帐户。 您有一个 GitHub 帐户。 你有 Azure CLI。 你有权在要部署到的 Azure 订阅中创建资源和服务主体。 您有一个映像存储库,您可以在其中存储容器映像。 您有要部署的代码。
下面是用于部署容器应用的操作工作流示例: # The name of the deployment name: Trigger auto deployment for containerapps # When this action will be executed on: # Automatically trigger it when detected changes in repo push: # Branched to look out for changes on branches: [ main ] # Allow manually trigger of the jobs workflow_dispatch: jobs: # Job run image. build: runs-on: ubuntu-latest # Steps that need to happen in this job run. steps: # Check out the code - name: Check out code uses: actions/checkout@v2 # Log in to Azure CLI - name: Log in to Azure uses: azure/login@v1 with: # Azure CLI credentials creds: ${{ secrets.AZURE_CREDENTIALS }} # Build and deploy the container app - name: Build and deploy Container App uses: azure/container-apps-deploy-action@v0 with: appSourcePath: ${{ github.workspace }} acrName: acrUsername: ${{ secrets.REGISTRY_USERNAME }} acrPassword: ${{ secrets.REGISTRY_PASSWORD }} containerAppName: containerAppEnvironment: resourceGroup: imageToBuild: /: dockerfilePath: /Path/to/Dockerfile
这是相当多的,所以让我们解开它。 GitHub 操作文件结构工作流名称
name: Trigger auto deployment for containerapps
这是要为部署运行指定的名称。 工作流触发器# When this action will be executed on: # Automatically trigger it when detected changes in repo push: # Branched to look out for changes on branches: [ main ] # Allow manually trigger of the jobs workflow_dispatch:
worflow 触发器是你选择触发部署的方式。此示例基于我将代码推送到主分支创建一个触发器;可以根据触发部署的分支进行设置。也可以使用通配符,例如: branches: - main - "releases/**"
这允许您在 GitHub 操作中手动触发工作流。当我对基础结构进行更改并且需要再次触发部署时,我发现这特别有用。workflow_dispatch
您可以在此处阅读有关工作流触发器的更多信息:
触发工作流的事件 - GitHub 文档 工作
这是一组需要运行的步骤。您可以有一个或多个作业。
上面的例子只有一个名为"build"的作业,它构建和部署项目并在 ubuntu 映像上运行。
默认情况下,这些作业并行运行,但您可以使用 needs: 关键字创建对其他作业的依赖关系。您还可以有条件地运行作业。 jobs: review: name: Deploy/Review staging: name: Deploy/Staging production: name: Deploy/Production if: ${{ always() }} needs: [staging, review]
在上图中,"部署/暂存"、"部署/查看"和"部署/生产"块是作业。
您可以在此处阅读有关工作的更多信息:
在工作流中使用作业 - GitHub 文档 步骤
这些是需要作为作业的一部分运行的任务。在这种情况下,我们有 3 个步骤需要作为作业的一部分运行。 签出代码 登录到 Azure 生成和部署容器应用
这些操作可以包含来自市场的操作或自定义操作,但在本例中,我们使用标准市场操作。
"签出代码"步骤将运行此操作的存储库中的代码签出到运行生成/部署的容器中。
"登录到 Azure"步骤将你登录到 azure CLI,并为部署提供用于部署容器应用的访问令牌。
"生成和部署容器应用"将在下一节中生成和部署容器应用,我们将更详细地介绍其用途。 凭据和机密设置
首先,我们需要在 Azure 中创建服务主体。最好的方法是使用此 Azure CLI。
请确保已登录到要部署容器应用的订阅。
然后运行以下命令来创建服务主体: az ad sp create-for-rbac --name "myApp" --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} --sdk-auth
将 and 替换为要分别部署到的订阅 ID 和资源组。还应替换为服务原则名称。{subscription-id}{resource-group}myApp
此命令将创建一个 RBAC(基于角色的访问控制)服务主体,然后该主体对订阅和资源组具有参与者访问权限。
然后,您将获得如下所示的输出。您应该小心 不要共享 此信息,因为它是敏感信息。您需要 保留它 ,因为您很快就会使用它。 { "clientId": "", "clientSecret": "", "subscriptionId": "", "tenantId": "", "resourceManagerEndpointUrl": "" (...) }
现在,在存储库的 GitHub 中创建机密,以便将其用于操作。 单击要部署的存储库。 导航到"设置" 然后在"安全性"下展开"机密和变量" 点击"操作" 在"机密"选项卡上,单击"新建存储库机密" 创建名为" AZURE_CREDENTIALS "的密钥 使机密值成为您通过创建服务原则获得的值。
仅当要使用容器注册表时,才需要此部分。
创建机密时,还需要 2 个。" REGISTRY_USERNAME "和" REGISTRY_PASSWORD "。这可以从 Azure 容器注册表获取。
REGISTRY_USERNAME 是注册表用户的用户名。
REGISTRY_PASSWORD是注册表用户的密码。 最低限度
工作流页面的前半部分应如下所示: # The name of the deployment name: Trigger auto deployment for containerapps # When this action will be executed on: # Automatically trigger it when detected changes in repo push: # Branched to look out for changes on branches: [ main ] # Allow mannually trigger of the jobs workflow_dispatch: jobs: # Job run image. build: runs-on: ubuntu-latest
添加的以下步骤将基于不同的方案。
因此,让我们从前三个开始。
1.) 您正在部署具有公共注册表访问权限的现有容器映像。 steps: - name: Log in to Azure uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Build and deploy Container App uses: azure/container-apps-deploy-action@v0 with: imageToDeploy: mcr.microsoft.com/azuredocs/containerapps-helloworld:latest
2.) 您正在构建和部署映像。 steps: - name: Log in to Azure uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Build and deploy Container App uses: azure/container-apps-deploy-action@v0 with: appSourcePath: ${{ github.workspace }} acrName: mytestacr
3.) 您没有 dockerfile 或构建的映像,但您有运行时堆栈。 steps: - name: Log in to Azure uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Build and deploy Container App uses: azure/container-apps-deploy-action@v0 with: appSourcePath: ${{ github.workspace }} acrName: mytestacr runtimeStack: "dotnetcore:7.0"
在这些情况下,如果没有手动或通过以前的运行创建容器应用、容器环境或资源组,它将为你创建这些资源。
资源将按如下方式命名: Container App : github-action-container-app-- 资源组: <容器应用名称>-rg 容器应用环境: <容器应用名称>-环境
我发现这在大多数情况下并不理想,所以让我们看看我们需要给它什么才能不创建这些。 其他参数
因此,若要防止操作创建这些资源,需要为其指定现有资源的名称,或者为其指定要初始创建并随后重用的资源的名称。
然后,可以将这些参数添加到"生成和部署容器应用"步骤。 containerAppName: containerAppEnvironment: resourceGroup:
如果您有要构建和部署的自定义 Docker 映像,则需要使用这些参数来生成映像并进行部署。这是如果你有一个现有的Dockerfile imageToBuild: /: dockerfilePath: /Path/to/Dockerfile
还需要登录到容器注册表才能推送映像,因此还需要以下参数。如果要从私有映像存储库中提取映像,则还需要这些映像。 acrName: acrUsername: ${{ secrets.REGISTRY_USERNAME }} acrPassword: ${{ secrets.REGISTRY_PASSWORD }}
我没有使用但可能有用的其他一些是: environmentVariables容器的环境变量列表。"键=值"格式的空格分隔值。用于清除现有值的空字符串。前缀值为"secretref:"以引用密钥。 targetPort容器应用将侦听的目标端口。如果未提供,则对于 Python 应用程序,此值将为"80",对于所有其他受支持的平台,此值将为"8080"。
干的好!你已经一路走到了最后。
预定下一年名人堂席位,诺维茨基21年不请经纪人省了多少钱?近日,2022届篮球名人堂成功举办,以球员身份入选的只有两人,分别是吉诺比利和蒂姆哈达威,看得出来,这一届星光黯淡,远没有去年举办的2020届篮球名人堂风光,不过在下一年,也就是2
哈登再立功!76人4换1报价库兹马,场均178太能打,东部一超多强76人在今夏动作频频,虽然核心阵容没有变动,但角色球员却迎来了大升级,先后得到了梅尔顿塔克豪斯奎因以及哈雷尔。如今的阵容配备已有足够的竞争力,但似乎76人并没有就此终止补强的步伐。
每天都喝水,但是你真的会喝水吗?所见所得,都很科学水是人体不可缺少的成分,有助于血液流动体温调节营养物质的消化和吸收等的正常进行。由于气候炎热劳动或运动时大量出汗,人体内水分和盐分会大量丢失,严重时可引起中暑。此
自治区第十届民运会今日开幕新疆网讯(全媒体记者陈彦仿)今日,自治区第十届少数民族传统体育运动会在博尔塔拉蒙古自治州正式拉开帷幕。来自全疆14个地州市以及新疆生产建设兵团共15支代表团1752名运动员(线上1
面对孩子体态异常,我们该怎么办编者按少年强则国强。鲁迅先生曾用脊梁比喻民族之魂,其实,挺直的脊梁不仅事关精神风貌,更事关儿童青少年的体质健康。随着科技发展,孩子们的生活方式也发生了较大变化,脊柱侧弯已成为继近视
希望孩子长高三好要做到来源今晚报不久前,河南省郑州市一10岁男童因长期晚睡致使褪黑素分泌减少,骨龄发育慢4年的消息引起许多家长的关注。市中研附院儿科诊疗中心主任医师王津提醒,要想孩子长高,简单地说要做到
陈国军一生最爱最恨的女人是刘晓庆,大儿子陈赫是他晚年的骄傲前言陈国军是一位导演。如果你对他不是很熟悉,那么有一个人你肯定知道,就是刘晓庆。刘晓庆跟陈国军曾经有过一段短暂的婚姻,后来因为姜文的缘故,两人分道扬镳。那个时候,姜文是个很有才的年
又进去一个,小鲜肉们为什么偏偏有这种爱好?这个中秋小长假的娱乐圈,无疑又被小鲜肉李某峰掀起了波澜。看这照片,小伙子一脸正气,尤其在出演号手就位中还出演了硬朗的军人形象,怎么就会去干PC的事呢?最近这些年因为PC被抓的名人还
打卡秋季,就去这10个绝美的地方每年的9月初,金色的秋天,就从北方一步一步地蔓延开来以下10个秋天的绝美打卡地,去过一半都不简单。国庆长假也快来了,赶紧收藏备用吧。第一坝上。每年从9月下旬到10月上旬,树叶开始大
不用VIP也能舒服的看电视现如今,大多数家庭都配置了网络智能电视,但是很多人还是觉得很烦恼,因为智能电视机或者网络电视机顶盒不是广告,就是需要VIP会员,时间一长很多人就不愿意看电视了,基本成了家里的摆设,
入秋后,少碰3绿,常补2物,按揉1处,养好身子骨,人更长寿今年入秋感觉格外的快,气候潮湿阴凉,中秋前后又以燥为主,此时很容易招惹风寒埋下病根。所以每年初秋,都以养生为第一位。这个时期,很多人开始容易关节刺痛腿脚发沉无力等问题,那我们应当如