Update a Kubernetes Service

Use Duplo to update a Service container from Github Actions

Update the Docker image for a Kubernetes service after building a new version. This can be done automatically for the main container using CI/CD workflows. For init and sidecar containers, image updates require using the API directly, supporting more complex deployment scenarios.

Updating the docker image for a service

Use a GitHub Actions workflow to update the Docker image for the main container in your Kubernetes service. This simplifies deployment as part of your CI/CD process.

Example Workflow

This example makes some assumptions:

  • Your workflow already has a build job - we created one in the previous section

  • Your build job declares an output named image - also done in the previous section

To use it you will need to ensure your GHA Environment has the following:

  • DUPLO_HOST env var

  • DUPLO_TENANT env var

  • DUPLO_TOKEN env var

You need to change the service name below from my-service to the name of your actual service.

name: Update Service

on: 
  workflow_dispatch:
    inputs:
      environment:
        description: The environment to deploy to
        type: environment
        default: dev
        required: true
      image:
        description: The full image
        type: string
        required: true

jobs:
  update_service:
    name: Update Service
    runs-on: ubuntu-latest
    environment: 
      name: ${{ inputs.environment }}
    env:
      DUPLO_TOKEN: ${{ secrets.DUPLO_TOKEN }}
      DUPLO_HOST: ${{ vars.DUPLO_HOST  }}
      DUPLO_TENANT: ${{ vars.DUPLO_TENANT }}
    steps: 
    
    # install and login to the cloud
    - name: Duplo Setup
      uses: duplocloud/[email protected]
      # only required on gcp and azure
      with:
        account-id: ${{ vars.CLOUD_ACCOUNT }}
        credentials: ${{ secrets.CLOUD_CREDENTIALS }}

    # uses duploctl from above
    - name: Update Service
      uses: duplocloud/actions/[email protected]
      with:
        name: my-service
        image: ${{ inputs.image }}
        type: service

Updating Init or Sidecar Container Images

Update images for init and sidecar containers by calling the DuploCloud API directly. This supports more advanced deployment scenarios beyond updating just the main container.

To update images for these container types, use the following API:

Endpoint PUT /v3/subscriptions/{tenant}/containers/replicationController/{k8sservicename}/containerimage

Authorization

Use a valid API token (Bearer {token}) in the Authorization header. You can generate a permanent API token from the DuploCloud Portal: see the API Token page for instructions.

Request Body Format

Submit a JSON array with one or more objects containing:

  • ContainerName: The exact name of the container (e.g., main, init, or sidecar container)

  • ImageName: The new image to use

Example Workflow

Last updated

Was this helpful?