Make charm's images configurable in track/1.6 branch
Closed this issue · 3 comments
Description
The goal of this task is to make all images configurable so that when this charm is deployed in an airgapped environment, all image resources are pulled from an arbitrary local container image registry (avoiding pulling images from the internet).
This serves as a tracking issue for the required changes and backports to the latest stable track/*
Github branch.
TL;DR
Mark the following as done
- Required changes (in metadata.yaml, config.yaml, src/charm.py)
- Test on airgap environment
- Publish to /stable
Required changes
WARNING: No breaking changes should be backported into the
track/<version>
branch. A breaking change can be anything that requires extra steps to refresh from the previous /stable other than justjuju refresh
. Please avoid at all costs these situations.
The following files have to be modified and/or verified to enable image configuration:
metadata.yaml
- the container image(s) of the workload containers have to be specified in this file. This only applies to sidecar charms. Example:
containers:
training-operator:
resource: training-operator-image
resources:
training-operator-image:
type: oci-image
description: OCI image for training-operator
upstream-source: kubeflow/training-operator:v1-855e096
- config.yaml - in case the charm deploys containers that are used by resource(s) the operator creates. Example:
apiVersion: v1
kind: ConfigMap
metadata:
name: seldon-config
namespace: {{ namespace }}
data:
predictor_servers: |-
{
"TENSORFLOW_SERVER": {
"protocols" : {
"tensorflow": {
"image": "tensorflow/serving", <--- this image should be configurable
"defaultImageVersion": "2.1.0"
},
"seldon": {
"image": "seldonio/tfserving-proxy",
"defaultImageVersion": "1.15.0"
}
}
},
...
-
tools/get-images.sh - is a bash script that returns a list of all the images that are used by this charm. In the case of a multi-charm repo, this is located at the root of the repo and gathers images from all charms in it.
-
src/charm.py - verify that nothing inside the charm code is calling a subprocess that requires internet connection.
Testing
-
Spin up an airgap environment following canonical/bundle-kubeflow#682 and canonical/bundle-kubeflow#703 (comment)
-
Build the charm making sure that all the changes for airgap are in place.
-
Deploy the charms manually and observe the charm go to active and idle.
-
Additionally, run integration tests or simulate them. For instance, creating a workload (like a PytorchJob, a SeldonDeployment, etc.).
Publishing
After completing the changes and testing, this charm has to be published to its stable risk in Charmhub. For that you must wait for the charm to be published to /edge, which is the revision to be promoted to /stable. Use the workflow dispatch for this (Actions>Release charm to other tracks...>Run workflow).
Suggested changes/backports
Yes as pointed out by Ivan:
- get-images script is the same in main and track/1.6.
- image already in metadata.yaml