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
buildjob - we created one in the previous sectionYour
buildjob declares an output namedimage- also done in the previous section
To use it you will need to ensure your GHA Environment has the following:
DUPLO_HOSTenv varDUPLO_TENANTenv varDUPLO_TOKENenv 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: serviceUpdating 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
PUT /v3/subscriptions/{tenant}/containers/replicationController/{k8sservicename}/containerimageAuthorization
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
The duplocloud/actions/update-image GitHub Action currently only supports updating the main container. To update init or sidecar containers, call the API directly within a script or CI/CD step (for example, using curl).
Make sure the ContainerName exactly matches the name defined for the init or additional containers in your service configuration.
Last updated
Was this helpful?

