我在Azure中设置了一个集群,并在“自动部署”菜单的帮助下,在我的Github Repo中创建了一个工作流,它使用了Github操作。
首先,它构建镜像并将其推送到Azure容器注册表,这第一步进行得很顺利,但当我进入部署步骤时,它不会用构建的镜像替换部署镜像。
相反,我确实看到清单在集群中弹出。不需要更改的服务很好,但是图像,我希望被新构建的替代仍然是一样的。工作流程与Azure生成的方式基本相同。我认为这一定与Azure容器注册表或我使用最后一步的方式有关(Azure/k8s-deploy@v4).我是否遗漏了什么?link to docs of final step
(在发布到这里之前,我已经更改了Azure登录步骤,它曾经显示一个长哈希,但这无关紧要)
name: deploy_to_ota
"on":
push:
branches:
- main
workflow_dispatch: {}
env:
ACR_RESOURCE_GROUP: ota
AZURE_CONTAINER_REGISTRY: otaRegistry
CLUSTER_NAME: ota
CLUSTER_RESOURCE_GROUP: ota
CONTAINER_NAME: portfolio-image
DEPLOYMENT_MANIFEST_PATH: |
./kubernetes/my-deployment.yaml
./kubernetes/my-service.yaml
jobs:
buildImage:
permissions:
contents: read
id-token: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '21'
- name: Build with Maven
run: mvn clean package
- uses: azure/login@HASH
name: Azure login
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
- name: Build and push image to ACR
run: az acr build --image ${{ env.CONTAINER_NAME }}:${{ github.sha }} --registry ${{ env.AZURE_CONTAINER_REGISTRY }} -g ${{ env.ACR_RESOURCE_GROUP }} -f ./Dockerfile ./
deploy:
permissions:
actions: read
contents: read
id-token: write
runs-on: ubuntu-latest
needs:
- buildImage
steps:
- uses: actions/checkout@v3
- uses: azure/login@HASH
name: Azure login
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
- uses: azure/use-kubelogin@v1
name: Set up kubelogin for non-interactive login
with:
kubelogin-version: v0.0.25
- uses: azure/aks-set-context@v3
name: Get K8s context
with:
admin: "false"
cluster-name: ${{ env.CLUSTER_NAME }}
resource-group: ${{ env.CLUSTER_RESOURCE_GROUP }}
use-kubelogin: "true"
- uses: Azure/k8s-deploy@v4
name: Deploys application
with:
action: deploy
images: ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.sha }}
manifests: ${{ env.DEPLOYMENT_MANIFEST_PATH }}
namespace: portfolio
字符串
我指定的清单是一个部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: portfolio-deployment
spec:
replicas: 1
selector:
matchLabels:
app: portfolio
template:
metadata:
labels:
app: portfolio
spec:
containers:
- name: portfolio-app
image: WILL_I_BE_REPLACED
型
1条答案
按热度按时间mbskvtky1#
在部署清单(
my-deployment.yaml
)中,您有以下部分:字符串
image
字段被设置为占位符(WILL_I_BE_REPLACED
)。这需要在部署过程中使用实际的image标签动态更新。下面是对GitHub Actions工作流的修改,以实现这一点:型
kubectl apply -f deployment.yaml
已将更新的映像部署到Azure Kubernetes Service(AKS)群集。
kubectl get service my-app-api-service