Updating a lifecycle policy
Once you create a lifecycle policy, you can edit its rules as well as its status, name, or description.
- In the management console
, select the folder where the registry was created. - In the list of services, select Container Registry.
- Select the registry and click the row with its name.
- Select the repository and click the row with its name.
- In the left-hand panel, click
Lifecycle. - In the row with the lifecycle policy, click
and select Edit. - Edit the lifecycle policy parameters:
-
Name.
-
Description.
-
Status.
-
Under Lifecycle policy rules, update the rule parameters:
- Tag regexp: Docker image tag for filtering. Java regular expressions are supported. For example, the
test.*
regular expression retrieves all images with tags starting withtest
. - Untagged: Flag indicating that the rule applies to Docker images without tags.
- Expire period, in days: Time after which the lifecycle policy may apply to the Docker image.
- Retained top: Number of Docker images that are not deleted even if they match the rule.
- Description.
- Tag regexp: Docker image tag for filtering. Java regular expressions are supported. For example, the
-
- Click Save.
If you do not have the Yandex Cloud command line interface yet, install and initialize it.
-
See the description of the CLI command for updating policy parameters:
yc container repository lifecycle-policy update --help
-
Change the policy parameters, e.g., rename it:
yc container repository lifecycle-policy update <policy_ID> \ --new-name=new-policy
To find out the policy ID, get a list of lifecycle policies in a repository or registry.
If you don't have Terraform, install it and configure the Yandex Cloud provider.
-
Open the configuration file and edit the fragment with the policy description:
resource "yandex_container_repository_lifecycle_policy" "my_lifecycle_policy" { name = "best-policy" status = "active" repository_id = "crpfvi6o4ra7********" rule { description = "rule for applying policy" untagged = true tag_regexp = ".*" retained_top = 1 expire_period = "48h" } }
-
Apply the changes:
-
In the terminal, change to the folder where you edited the configuration file.
-
Make sure the configuration file is correct using the command:
terraform validate
If the configuration is correct, the following message is returned:
Success! The configuration is valid.
-
Run the command:
terraform plan
The terminal will display a list of resources with parameters. No changes are made at this step. If the configuration contains errors, Terraform will point them out.
-
Apply the configuration changes:
terraform apply
-
Confirm the changes: type
yes
in the terminal and press Enter.
-
This will update the lifecycle policy in the specified repository. You can check the policy update using the management console
yc container repository lifecycle-policy list --registry-id <registry_ID>
To edit a lifecycle policy, use the Update method for the LifecyclePolicyService resource. Specify the policy ID in the lifecycle_policy_id
property.
You can retrieve a list of policies using the List method for the LifecyclePolicyService resource.
Examples
Updating lifecycle policy rules
-
Prepare new policy rules and save them to a file named
new-rules.json
.Example of the contents of a file with rules, where:
description
: Description of the policy rule.tag_regexp
: Docker image tag for filtering. Java regular expressions are supported. For example, thetest.*
regular expression retrieves all images with tags starting withtest
.untagged
: Flag indicating that the rule applies to Docker images without tags.expire_period
: Time after which the lifecycle policy may apply to the Docker image. This parameter is formatted as a number and a unit of measure, such ass
,m
,h
, ord
(seconds, minutes, hours, or days).expire_period
must be a multiple of 24 hours.retained_top
: Number of Docker images that are not deleted even if they match the rule.
[ { "description": "delete prod Docker images older than 60 days but retain 20 last ones", "tag_regexp": "prod", "expire_period": "60d", "retained_top": 20 }, { "description": "delete all test Docker images except 10 last ones", "tag_regexp": "test.*", "retained_top": 10 }, { "description": "delete all untagged Docker images older than 48 hours", "untagged": true, "expire_period": "48h" } ]
-
Change the policy rules by running the command with the following parameter:
new-rules
: Path to the file with the new policy description.
Alert
Updating the policy completely overwrites all current rules by destroying them.
yc container repository lifecycle-policy update crp6lg1868p3******** --new-rules ./new-rules.json
Result:
WARN: All current lifecycle rules will be overwritten. Are you sure?[y/N] y id: crp6lg1868p3******** name: test-policy ... expire_period: 172800s tag_regexp: test.* untagged: true
Updating a lifecycle policy status
Activate a lifecycle policy
Activate a deactivated lifecycle policy by running the command below with the --activate
flag:
yc container repository lifecycle-policy update crp6lg1868p3******** --activate
Result:
id: crp6lg1868p3********
name: test-policy
repository_id: crp3cpm16edq********
...
expire_period: 172800s
tag_regexp: test.*
untagged: true
Disable the lifecycle policy
Deactivate an active policy by running the command below with the --disable
flag:
yc container repository lifecycle-policy update crp6lg1868p3******** --disable
Result:
id: crp6lg1868p3********
name: test-policy
repository_id: crp3cpm16edq********
...
expire_period: 172800s
tag_regexp: test.*
untagged: true
Changing a lifecycle policy name
Change the policy name by running the command:
yc container repository lifecycle-policy update crp6lg1868p3******** --new-name new-policy
Where --new-name
is the new policy name. The naming requirements are as follows:
- The name must be from 3 to 63 characters long.
- It may contain lowercase Latin letters, numbers, and hyphens.
- The first character must be a letter and the last character cannot be a hyphen.
Result:
id: crp6lg1868p3********
name: new-policy
repository_id: crp3cpm16edq********
...
expire_period: 172800s
tag_regexp: test.*
untagged: true
Updating a lifecycle policy description
Change a policy description by running the command:
yc container repository lifecycle-policy update crp6lg1868p3******** --new-description "new description"
Where --new-description
is the new policy description.
Result:
id: crp6lg1868p3********
name: test-policy
repository_id: crp3cpm16edq********
...
expire_period: 172800s
tag_regexp: test.*
untagged: true