kubernetes Azure/k8s-deploy镜像替换

ijxebb2r  于 5个月前  发布在  Kubernetes
关注(0)|答案(1)|浏览(63)

我在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

mbskvtky

mbskvtky1#

在部署清单(my-deployment.yaml)中,您有以下部分:

containers:
  - name: portfolio-app
    image: WILL_I_BE_REPLACED

字符串

  • image字段被设置为占位符(WILL_I_BE_REPLACED)。这需要在部署过程中使用实际的image标签动态更新。下面是对GitHub Actions工作流的修改,以实现这一点:
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"
    - name: Update deployment manifest
      run: sed -i "s|WILL_I_BE_REPLACED|${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.sha }}|g" ${{ env.DEPLOYMENT_MANIFEST_PATH }}
    - 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

  • GitHub操作工作流已成功构建Docker映像,并将其推送到Azure容器注册表(ACR)。kubectl apply -f deployment.yaml

已将更新的映像部署到Azure Kubernetes Service(AKS)群集。kubectl get service my-app-api-service

相关问题