mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-30 01:46:23 +00:00
docs(api/kustomizaion-file): migrate field sections
This commit is contained in:
169
site/content/en/docs/Reference/API/Kustomization File/images.md
Normal file
169
site/content/en/docs/Reference/API/Kustomization File/images.md
Normal file
@@ -0,0 +1,169 @@
|
||||
---
|
||||
title: "images"
|
||||
linkTitle: "images"
|
||||
type: docs
|
||||
weight: 9
|
||||
description: >
|
||||
Modify the name, tags and/or digest for images.
|
||||
---
|
||||
|
||||
Images modify the name, tags and/or digest for images without creating patches.
|
||||
|
||||
One can change the `image` in the following ways (Refer the following example to know exactly how this is done):
|
||||
|
||||
- `postgres:8` to `my-registry/my-postgres:v1`,
|
||||
- nginx tag `1.7.9` to `1.8.0`,
|
||||
- image name `my-demo-app` to `my-app`,
|
||||
- alpine's tag `3.7` to a digest value
|
||||
|
||||
It is possible to set image tags for container images through
|
||||
the `kustomization.yaml` using the `images` field. When `images` are
|
||||
specified, Apply will override the images whose image name matches `name` with a new
|
||||
tag.
|
||||
|
||||
|
||||
| Field | Description | Example Field | Example Result |
|
||||
|-----------|--------------------------------------------------------------------------|----------| --- |
|
||||
| `name` | Match images with this image name| `name: nginx`| |
|
||||
| `newTag` | Override the image **tag** or **digest** for images whose image name matches `name` | `newTag: new` | `nginx:old` -> `nginx:new` |
|
||||
| `newName` | Override the image **name** for images whose image name matches `name` | `newName: nginx-special` | `nginx:old` -> `nginx-special:old` |
|
||||
|
||||
|
||||
## Example
|
||||
|
||||
### File Input
|
||||
|
||||
```yaml
|
||||
# deployment.yaml
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: the-deployment
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
containers:
|
||||
- name: mypostgresdb
|
||||
image: postgres:8
|
||||
- name: nginxapp
|
||||
image: nginx:1.7.9
|
||||
- name: myapp
|
||||
image: my-demo-app:latest
|
||||
- name: alpine-app
|
||||
image: alpine:3.7
|
||||
|
||||
```
|
||||
|
||||
```yaml
|
||||
# kustomization.yaml
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
|
||||
images:
|
||||
- name: postgres
|
||||
newName: my-registry/my-postgres
|
||||
newTag: v1
|
||||
- name: nginx
|
||||
newTag: 1.8.0
|
||||
- name: my-demo-app
|
||||
newName: my-app
|
||||
- name: alpine
|
||||
digest: sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d3
|
||||
|
||||
resources:
|
||||
- deployment.yaml
|
||||
|
||||
```
|
||||
|
||||
### Build Output
|
||||
|
||||
```yaml
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: the-deployment
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
containers:
|
||||
- image: my-registry/my-postgres:v1
|
||||
name: mypostgresdb
|
||||
- image: nginx:1.8.0
|
||||
name: nginxapp
|
||||
- image: my-app:latest
|
||||
name: myapp
|
||||
- image: alpine@sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d3
|
||||
name: alpine-app
|
||||
```
|
||||
|
||||
## Setting a Name
|
||||
|
||||
The name for an image may be set by specifying `newName` and the name of the old container image.
|
||||
```yaml
|
||||
# kustomization.yaml
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
images:
|
||||
- name: mycontainerregistry/myimage
|
||||
newName: differentregistry/myimage
|
||||
```
|
||||
|
||||
## Setting a Tag
|
||||
|
||||
The tag for an image may be set by specifying `newTag` and the name of the container image.
|
||||
```yaml
|
||||
# kustomization.yaml
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
images:
|
||||
- name: mycontainerregistry/myimage
|
||||
newTag: v1
|
||||
```
|
||||
|
||||
## Setting a Digest
|
||||
|
||||
The digest for an image may be set by specifying `digest` and the name of the container image.
|
||||
```yaml
|
||||
# kustomization.yaml
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
images:
|
||||
- name: alpine
|
||||
digest: sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d3
|
||||
```
|
||||
|
||||
|
||||
## Setting a Tag from the latest commit SHA
|
||||
|
||||
A common CI/CD pattern is to tag container images with the git commit SHA of source code. e.g. if
|
||||
the image name is `foo` and an image was built for the source code at commit `1bb359ccce344ca5d263cd257958ea035c978fd3`
|
||||
then the container image would be `foo:1bb359ccce344ca5d263cd257958ea035c978fd3`.
|
||||
|
||||
A simple way to push an image that was just built without manually updating the image tags is to
|
||||
[download the kustomize standalone](/docs/getting-started/installation/) tool and run
|
||||
`kustomize edit set image` command to update the tags for you.
|
||||
|
||||
**Example:** Set the latest git commit SHA as the image tag for `foo` images.
|
||||
|
||||
```bash
|
||||
kustomize edit set image foo:$(git log -n 1 --pretty=format:"%H")
|
||||
kubectl apply -f .
|
||||
```
|
||||
|
||||
## Setting a Tag from an Environment Variable
|
||||
|
||||
It is also possible to set a Tag from an environment variable using the same technique for setting from a commit SHA.
|
||||
|
||||
**Example:** Set the tag for the `foo` image to the value in the environment variable `FOO_IMAGE_TAG`.
|
||||
|
||||
```bash
|
||||
kustomize edit set image foo:$FOO_IMAGE_TAG
|
||||
kubectl apply -f .
|
||||
```
|
||||
|
||||
{{< alert color="success" title="Committing Image Tag Updates" >}}
|
||||
The `kustomization.yaml` changes *may* be committed back to git so that they
|
||||
can be audited. When committing the image tag updates that have already
|
||||
been pushed by a CI/CD system, be careful not to trigger new builds +
|
||||
deployments for these changes.
|
||||
{{< /alert >}}
|
||||
Reference in New Issue
Block a user