Utiliser l’analyse d’image pour mettre à jour les références d’image de conteneur
L’analyse d’image dans Fleet vous permet de scanner votre dépôt d’images, de récupérer l’image souhaitée et de mettre à jour votre dépôt git, sans avoir besoin de mettre à jour manuellement vos manifestes.
|
Cette fonctionnalité est considérée comme une fonctionnalité expérimentale. Par défaut, cette option est désactivée. Plus d’informations ici sur la façon de l’activer. |
Allez à fleet.yaml et ajoutez la section suivante.
imageScans:
# specify the policy to retrieve images, can be semver or alphabetical order
- policy:
# if range is specified, it will take the latest image according to semver order in the range
# for more details on how to use semver, see https://github.com/Masterminds/semver
semver:
range: "*"
# can use ascending or descending order
alphabetical:
order: asc
# specify images to scan
image: "your.registry.com/repo/image"
# Specify the tag name, it has to be unique in the same bundle
tagName: test-scan
# specify secret to pull image if in private registry
secretRef:
name: dockerhub-secret
# Specify the scan interval
interval: 5m
|
Vous pouvez créer plusieurs analyses d’image dans fleet.yaml. |
|
Semver ignorera les versions pré-release (par exemple, 0.0.1-10) à moins qu’une version pré-release ne soit explicitement utilisée dans la définition de la plage. Par exemple, la plage "*" ignorera les pré-releases tandis que ">= 0.0.1-10" les prendra en compte. |
Allez dans vos fichiers de manifeste et mettez à jour le champ que vous souhaitez remplacer. Par exemple :
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-slave
spec:
selector:
matchLabels:
app: redis
role: slave
tier: backend
replicas: 2
template:
metadata:
labels:
app: redis
role: slave
tier: backend
spec:
containers:
- name: slave
image: <image>:<tag> # {"$imagescan": "test-scan"}
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 6379
|
Il existe plusieurs formes de tagName que vous pouvez référencer. Exemple :
|
Créez un GitRepo qui inclut votre fleet.yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
name: my-repo
namespace: fleet-local
spec:
# change this to be your own repo
repo: https://github.com/rancher/fleet-examples
# define how long it will sync all the images and decide to apply change
imageScanInterval: 5m
# user must properly provide a secret that have write access to git repository
clientSecretName: secret
# specify the commit pattern
imageScanCommit:
authorName: foo
authorEmail: foo@bar.com
messageTemplate: "update image"
Essayez de pousser un nouveau tag d’image, par exemple, <image>:<new-tag>. Attendez un moment et un nouveau commit devrait être poussé dans votre dépôt git pour changer le tag dans deployment.yaml.
Une fois le changement effectué dans le dépôt git, Fleet lira le changement et déploiera le changement dans votre cluster.