Skip to content

Commit 909ef46

Browse files
author
Power Cloud Robot
authored
Merge pull request #176 from sajauddin/disconnect-upgrade
Upgrading restricted network OCP cluster
2 parents 5376053 + 89ab0ed commit 909ef46

File tree

4 files changed

+113
-12
lines changed

4 files changed

+113
-12
lines changed

playbooks/roles/ocp-upgrade/README.md

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ This module will upgrade an existing OCP cluster based on upgrade_version or upg
55

66
For intermediate EUS upgrade please use eus variables and use other variables for final upgrade.
77

8+
Restricted network OCP cluster can be upgraded by providing parameters restricted_network_upgrade, upgrade_version, architecture, local_secret, local_registry and local repository.
9+
810
Requirements
911
------------
1012

@@ -13,17 +15,22 @@ Requirements
1315
Role Variables
1416
--------------
1517

16-
| Variable | Required | Default | Comments |
17-
|-----------------|----------|------------|---------------------------------------------------------------|
18-
| eus_upgrade_version | no | "" | Set to a specific version eg. 4.11.3 |
19-
| eus_upgrade_channel | no | "" | Set to channel having required upgrade version available for cluster upgrade (stable-4.x, fast-4.x, candidate-4.x, eus-4.x) eg. stable-4.11 |
20-
| eus_upgrade_image | no | "" | Set to OCP upgrade image eg. quay.io/openshift-release-dev/ocp-release@sha256:12345.. |
21-
| eus_upstream | no | "" | Set the URL for OCP update server eg. https://ppc64le.ocp.releases.ci.openshift.org/graph |
22-
| upgrade_version | no | "" | Set to a specific version eg. 4.5.4 |
23-
| upgrade_channel | no | "" | Set to channel having required upgrade version available for cluster upgrade (stable-4.x, fast-4.x, candidate-4.x) eg. stable-4.5 |
24-
| upgrade_image | no | "" | Set to OCP upgrade image eg. quay.io/openshift-release-dev/ocp-release@sha256:12345.. |
25-
| pause_time | no | 90 | Pauses playbook execution for a set amount of time in minutes |
26-
| delay_time | no | 600 | Number of seconds to wait before starting to poll |
18+
| Variable | Required | Default | Comments |
19+
|----------------------------|----------|-------------------|-------------------------------------------------------|
20+
| eus_upgrade_version | no | "" | Set to a specific version eg. 4.11.3 |
21+
| eus_upgrade_channel | no | "" | Set to channel having required upgrade version available for cluster upgrade (stable-4.x, fast-4.x, candidate-4.x, eus-4.x) eg. stable-4.11 |
22+
| eus_upgrade_image | no | "" | Set to OCP upgrade image eg. quay.io/openshift-release-dev/ocp-release@sha256:12345.. |
23+
| eus_upstream | no | "" | Set the URL for OCP update server eg. https://ppc64le.ocp.releases.ci.openshift.org/graph |
24+
| upgrade_version | no | "" | Set to a specific version eg. 4.5.4 |
25+
| upgrade_channel | no | "" | Set to channel having required upgrade version available for cluster upgrade (stable-4.x, fast-4.x, candidate-4.x) eg. stable-4.5 |
26+
| upgrade_image | no | "" | Set to OCP upgrade image eg. quay.io/openshift-release-dev/ocp-release@sha256:12345.. |
27+
| pause_time | no | 90 | Pauses playbook execution for a set amount of time in minutes |
28+
| delay_time | no | 600 | Number of seconds to wait before starting to poll |
29+
| restricted_network_upgrade | no | false | Set to true to upgrade the restricted network cluster |
30+
| architecture | no | "ppc64le" | Architecture of the cluster. |
31+
| local_secret | no | "" | Path to pull secret of the registry |
32+
| local_registry | no | "" | Specify the local registry name along with port for your mirror repository eg. registry.test-ocp-600b.ibm.com:5000 |
33+
| local_repository | no | "ocp4/openshift4" | Name of the repository to create in your registry eg. ocp4/openshift4 |
2734

2835
Note: If eus_upgrade_channel is set to the eus channel then no need to set upgrade_channel.
2936

playbooks/roles/ocp-upgrade/defaults/main.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,8 @@ upgrade_channel: ""
1010
upgrade_image: ""
1111
pause_time: 90
1212
delay_time: 600
13-
13+
restricted_network_upgrade: false
14+
architecture: "ppc64le"
15+
local_secret: ""
16+
local_registry: ""
17+
local_repository: "ocp4/openshift4"

playbooks/roles/ocp-upgrade/tasks/main.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
when:
3030
- upgrade_version != "" and upgrade_image == ""
3131
- eus_upgrade_channel == "" and eus_upgrade_image == ""
32+
- not restricted_network_upgrade
3233

3334
- name: Upgrade ocp using a release image
3435
block:
@@ -50,9 +51,17 @@
5051
when:
5152
- upgrade_image != ""
5253
- eus_upgrade_channel == "" and eus_upgrade_image == ""
54+
- not restricted_network_upgrade
5355

5456
- name: EUS to EUS upgrades
5557
include_tasks: "{{ role_path }}/tasks/eus_upgrades.yaml"
5658
when: >
5759
(eus_upgrade_channel != "" or eus_upgrade_image != "") and
5860
("eus" in eus_upgrade_channel or (upgrade_version != "" or upgrade_image != "" or upgrade_channel != ""))
61+
62+
- name: Update restricted network ocp cluster
63+
include_tasks: "{{ role_path }}/tasks/restricted_network_upgrade.yaml"
64+
when:
65+
- restricted_network_upgrade
66+
- upgrade_version != ""
67+
- local_registry != "" and local_repository != "" and local_secret != ""
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
---
2+
3+
# tasks for updating a restricted network ocp cluster
4+
5+
- name: Get count of paused machine config pools
6+
shell: |
7+
oc get mcp -ojson | jq ".items[].spec.paused" | grep -i true | wc -l
8+
register: paused_mcps_count
9+
10+
- name: Warn if machine config pools are paused
11+
debug:
12+
msg: "One or more Machine config pools appears paused. Nodes associated with a paused MCP are skipped during the update process."
13+
when: 0 < paused_mcps_count.stdout|int
14+
15+
- name: Set ocp image url
16+
set_fact:
17+
upgrade_image_url: "quay.io/openshift-release-dev/ocp-release:{{ upgrade_version }}-{{ architecture }}"
18+
19+
- name: set image directory
20+
set_fact:
21+
repo_image_dir: "{{ lookup('env','HOME') }}/ocp_repo_image"
22+
23+
- name: Create repo image directory
24+
file:
25+
path: "{{ repo_image_dir }}"
26+
state: directory
27+
mode: '0755'
28+
29+
- name: Mirror images and configuration manifests to a directory
30+
shell: |
31+
oc adm release mirror -a {{ local_secret }} --to-dir={{ repo_image_dir }}/mirror --from={{ upgrade_image_url }}
32+
33+
- name: Get sha key of the image
34+
shell: |
35+
oc image info {{ upgrade_image_url }} | grep "Digest:"|cut -d ':' -f 3
36+
register: upgrade_image_sha_key
37+
38+
- name: Upload images to local container registry
39+
shell: |
40+
oc image mirror -a {{ local_secret }} --from-dir={{ repo_image_dir }}/mirror "file://openshift/release:{{ upgrade_version }}*" {{ local_registry }}/{{ local_repository }}
41+
42+
- name: Apply mirrored release image signature config
43+
shell: |
44+
oc apply -f {{ repo_image_dir }}/mirror/config/signature-sha256-{{ upgrade_image_sha_key.stdout[:16] }}.yaml
45+
46+
- name: Get the OCP version
47+
kubernetes.core.k8s_info:
48+
kind: ClusterVersion
49+
name: version
50+
register: ocp_version
51+
52+
- name: Providing the administrator acknowledgement for 4.8 to 4.9 upgrades
53+
kubernetes.core.k8s:
54+
state: present
55+
definition:
56+
kind: ConfigMap
57+
metadata:
58+
name: admin-acks
59+
namespace: openshift-config
60+
data:
61+
ack-4.8-kube-1.22-api-removals-in-4.9: "true"
62+
when: ocp_version.resources[0].status.history[0].version | regex_search('4.8') == "4.8"
63+
64+
- name: Upgrade ocp and check for its completion
65+
block:
66+
- name: Upgrade ocp using a release image from local repository
67+
shell: |
68+
oc adm upgrade --allow-explicit-upgrade --to-image {{ local_registry }}/{{ local_repository }}@sha256:{{ upgrade_image_sha_key.stdout }}
69+
70+
- name: Waiting until upgrade completes
71+
pause:
72+
minutes: "{{ pause_time }}"
73+
74+
- name: Check for upgrade completion
75+
shell: |
76+
oc get clusterversion -o json|jq ".items[0].status.history[0].state"
77+
register: state
78+
until: state.stdout | replace('\"', '') == "Completed"
79+
retries: 5
80+
delay: "{{ delay_time }}"
81+

0 commit comments

Comments
 (0)