Skip to content

Helm chart artifact promotion and releasing #128

@fmuyassarov

Description

@fmuyassarov

I was trying to figure out what needs to be done to setup things around Helm chart promotion as an OCI artifact and I was hoping that it would be very similar to the images of the driver as both charts and container images are OCI artifacts.
Here is what I think we can do during the release process and I would appreciate your thoughts on this:

  1. Someone with write access on dranet repo pushes a release tag

    git tag -a v1.1.1 -m "Release v1.1.1"
    git push origin v1.1.1

    The Prow postsubmit job post-dranet-image in k8s-staging-dranet.yaml kicks off and triggers the cloud build run based on our cloudbuild.yaml.

  2. cloudbuild.yaml runs two steps:

    make release - which builds and pushes the image to staging repo - gcr.io/k8s-staging-networking/dranet:<_GIT_TAG>
    make helm-push (TODO) - which packages and pushes the chart as an OCI artifact to the same staging repo - gcr.io/k8s-staging-networking/charts/dranet:<_GIT_TAG> (TODO)

  3. We obtain artifact digests

    Once the cloud build run succeeds, we will retrieve the SHA for both artifacts from the build output or we just run

    crane digest gcr.io/k8s-staging-networking/dranet:<_GIT_TAG>
    crane digest gcr.io/k8s-staging-networking/charts/dranet:<_GIT_TAG>
  4. We then promote artifacts from staging to production registry

    So here, we open up a PR to k8s.io dranet/images.yaml. So, on top of already existing dranet entry we will have charts/dranet entry

    - name: dranet
      dmap:
        "sha256:<IMAGE_DIGEST>": ["v1.1.1"]
    ...
    
    - name: charts/dranet
      dmap:
        "sha256:<CHART_DIGEST>": ["v1.1.1"]

    Once the PR is merged, the post-k8sio-image-promo postsubmit job in k8s.io/test-infra will promote both artifacts.

  5. Finally, we double check that artifacts are promoted

    crane digest registry.k8s.io/networking/dranet:v1.1.1
    helm show chart oci://registry.k8s.io/networking/charts/dranet --version 1.1.1
    # or
    helm install dranet oci://registry.k8s.io/networking/charts/dranet --version 1.1.1

Does this sound correct to you?

Is that okay that we keep helm chart artifact under the same dranet/images.yaml so that we avoid creating a separate staging repo and google groups, etc?

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions