Skip to content

Commit 7c8b77a

Browse files
stevsmitSteven Smith
andauthored
updates advanced configuration guide in deploying quay docs (quay#1457)
Co-authored-by: Steven Smith <[email protected]>
1 parent 4f83795 commit 7c8b77a

22 files changed

+429
-459
lines changed

deploy_red_hat_quay_operator/master.adoc

Lines changed: 30 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ include::modules/first-user-ui.adoc[leveloffset=+2]
4141
include::modules/first-user-api.adoc[leveloffset=+2]
4242

4343
//post installation configuration
44+
//quayregistry cr
45+
include::modules/modifying-quayregistry-cr-after-deployment.adoc[leveloffset=+1]
46+
include::modules/modifying-quayregistry-cr-ui.adoc[leveloffset=+2]
47+
include::modules/modifying-quayregistry-cr-cli.adoc[leveloffset=+2]
48+
//enabling features after deployment
4449
include::modules/enabling-features-after-deployment.adoc[leveloffset=+1]
4550
include::modules/operator-config-cli.adoc[leveloffset=+2]
4651
include::modules/operator-config-cli-download.adoc[leveloffset=+2]
@@ -53,58 +58,40 @@ include::modules/installing-quay-operator-namespace.adoc[leveloffset=+2]
5358
include::modules/creating-registry-infra-node.adoc[leveloffset=+2]
5459

5560
//Advanced configuration
61+
include::modules/advanced-configuration.adoc[leveloffset=+1]
5662

57-
58-
//Troubleshooting
59-
include::modules/operator-quayregistry-troubleshooting.adoc[leveloffset=+1]
60-
include::modules/operator-quayregistry-status.adoc[leveloffset=+2]
61-
include::modules/operator-monitor-deploy-cli.adoc[leveloffset=+2]
62-
63-
64-
65-
66-
include::modules/operator-deploy-hpa.adoc[leveloffset=+1]
67-
68-
69-
//traffic ingress
70-
[id="configuring-traffic-ingress"]
71-
== Configuring traffic ingress
72-
include::modules/operator-preconfig-tls-routes.adoc[leveloffset=+2]
73-
74-
//configuring resources
75-
include::modules/configuring-resources-managed-components.adoc[leveloffset=+1]
76-
77-
//Database
78-
[id="configuring-the-database-poc"]
79-
== Configuring the database
63+
//advanced configuration - database
8064
include::modules/operator-unmanaged-postgres.adoc[leveloffset=+2]
81-
include::modules/config-fields-db.adoc[leveloffset=+3]
82-
include::modules/operator-managed-postgres.adoc[leveloffset=+3]
83-
//* The Operator will deploy an OpenShift `Route` as the default entrypoint to the registry. If you prefer a different entrypoint (e.g. `Ingress` or direct `Service` access that configuration will need to be done manually).
84-
include::modules/operator-components-unmanaged-other.adoc[leveloffset=+2]
85-
include::modules/operator-unmanaged-redis.adoc[leveloffset=+3]
65+
include::modules/integrating-external-postgresql-db.adoc[leveloffset=+3]
8666

87-
[role="_additional-resources"]
88-
.Additional resources
89-
link:https://access.redhat.com/documentation/en-us/red_hat_quay/{producty}/html-single/configure_red_hat_quay/index#config-fields-redis[Redis configuration fields]
67+
//advanced configuration - redis
68+
include::modules/operator-components-unmanaged-redis.adoc[leveloffset=+2]
69+
include::modules/operator-unmanaged-redis.adoc[leveloffset=+3]
9070

71+
//advanced configuration - hpa
72+
include::modules/about-hpa.adoc[leveloffset=+2]
9173
include::modules/operator-unmanaged-hpa.adoc[leveloffset=+3]
92-
include::modules/operator-unmanaged-route.adoc[leveloffset=+3]
93-
include::modules/operator-unmanaged-monitoring.adoc[leveloffset=+3]
94-
include::modules/operator-unmanaged-mirroring.adoc[leveloffset=+3]
9574

75+
//advanced configuration - route/ssl
76+
include::modules/operator-custom-ingress.adoc[leveloffset=+2]
77+
include::modules/disabling-route-component.adoc[leveloffset=+3]
78+
include::modules/configuring-ssl-tls-routes.adoc[leveloffset=+3]
9679

97-
//SSL/TLS
98-
include::modules/operator-custom-ssl-certs-config-bundle.adoc[leveloffset=+1]
99-
//include::modules/ssl-create-certs.adoc[leveloffset=+2]
100-
//include::modules/creating-custom-ssl-certs-config-bundle.adoc[leveloffset=+2]
80+
//advanced configuration - monitoring
81+
include::modules/operator-unmanaged-monitoring.adoc[leveloffset=+2]
10182

102-
//Deploying configuration tool
103-
//include::modules/operator-config-ui.adoc[leveloffset=+1]
83+
//advanced configuration - mirroring
84+
include::modules/operator-unmanaged-mirroring.adoc[leveloffset=+2]
10485

105-
//upgrading 38-39
106-
//removed for 3.10+
107-
//include::modules/upgrading-postgresql.adoc[leveloffset=+1]
86+
//configuring resources
87+
include::modules/configuring-resources-managed-components.adoc[leveloffset=+2]
88+
include::modules/configuring-resources-ocp-ui.adoc[leveloffset=+3]
89+
include::modules/configuring-resources-ocp-yaml.adoc[leveloffset=+3]
90+
91+
//Troubleshooting
92+
include::modules/operator-quayregistry-troubleshooting.adoc[leveloffset=+1]
93+
include::modules/operator-quayregistry-status.adoc[leveloffset=+2]
94+
include::modules/operator-monitor-deploy-cli.adoc[leveloffset=+2]
10895

10996
[role="quay-next-steps"]
11097
.Next steps

modules/about-hpa.adoc

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
:_mod-docs-content-type: CONCEPT
2+
[id="about-hpa"]
3+
= About Horizontal Pod Autoscaling (HPA)
4+
5+
By default, {productname} deployments include managed *Horizontal Pod Autoscalers (HPAs)* for key components to ensure availability and performance during load spikes or maintenance events. HPAs automatically adjust the number of running pods based on observed CPU and memory utilization.
6+
7+
A typical {productname} deployment includes the following pods:
8+
9+
* Two pods for the {productname} application (`example-registry-quay-app-*`)
10+
* One Redis pod for {productname} logging (`example-registry-quay-redis-*`)
11+
* One PostgreSQL pod for metadata storage (`example-registry-quay-database-*`)
12+
* Two `Quay` mirroring pods (`example-registry-quay-mirror-*`)
13+
* Two pods for Clair (`example-registry-clair-app-*`)
14+
* One PostgreSQL pod for Clair (`example-registry-clair-postgres-*`)
15+
16+
HPAs are managed by default for the `Quay`, `Clair`, and `Mirror` components, each starting with two replicas to prevent downtime during upgrades, reconfigurations, or pod rescheduling ev
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
:_mod-docs-content-type: PROCEDURE
2+
[id="advanced-configuration"]
3+
= Advanced configuration
4+
5+
The following sections cover advanced configuration options for when the default deployment settings do not meet your organization's needs for performance, security, or existing infrastructure integration.
Lines changed: 3 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
:_mod-docs-content-type: PROCEDURE
1+
:_mod-docs-content-type: CONCEPT
22
[id="configuring-resources-managed-components"]
33
= Configuring resources for managed components on {ocp}
44

@@ -18,122 +18,9 @@ The following components should not be set lower than their minimum requirements
1818
* `clair`: Recommended of 2 GB memory, 2 vCPUs
1919
* `clairpostgres`: Minimum of 200 MB
2020
21-
You can configure resource requests on the {ocp} UI, or by directly by updating the `QuayRegistry` YAML.
21+
You can configure resource requests on the {ocp} UI or directly by updating the `QuayRegistry` CR via the CLI.
2222

2323
[IMPORTANT]
2424
====
2525
The default values set for these components are the suggested values. Setting resource requests too high or too low might lead to inefficient resource utilization, or performance degradation, respectively.
26-
====
27-
28-
[id="configuring-resources-ocp-ui"]
29-
== Configuring resource requests by using the {ocp} UI
30-
31-
Use the following procedure to configure resources by using the {ocp} UI.
32-
33-
.Procedure
34-
35-
. On the {ocp} developer console, click *Operators* -> *Installed Operators* -> *Red Hat Quay*.
36-
37-
. Click *QuayRegistry*.
38-
39-
. Click the name of your registry, for example, *example-registry*.
40-
41-
. Click *YAML*.
42-
43-
. In the `spec.components` field, you can override the resource of the `quay`, `clair`, `mirroring` `clairpostgres`, and `postgres` resources by setting values for the `.overrides.resources.limits` and the `overrides.resources.requests` fields. For example:
44-
+
45-
[source,yaml]
46-
----
47-
spec:
48-
components:
49-
- kind: clair
50-
managed: true
51-
overrides:
52-
resources:
53-
limits:
54-
cpu: "5" # Limiting to 5 CPU (equivalent to 5000m or 5000 millicpu)
55-
memory: "18Gi" # Limiting to 18 Gibibytes of memory
56-
requests:
57-
cpu: "4" # Requesting 4 CPU
58-
memory: "4Gi" # Requesting 4 Gibibytes of memory
59-
- kind: postgres
60-
managed: true
61-
overrides:
62-
resources:
63-
limits: {} <1>
64-
requests:
65-
cpu: "700m" # Requesting 700 millicpu or 0.7 CPU
66-
memory: "4Gi" # Requesting 4 Gibibytes of memory
67-
- kind: mirror
68-
managed: true
69-
overrides:
70-
resources:
71-
limits: <2>
72-
requests:
73-
cpu: "800m" # Requesting 800 millicpu or 0.8 CPU
74-
memory: "1Gi" # Requesting 1 Gibibyte of memory
75-
- kind: quay
76-
managed: true
77-
overrides:
78-
resources:
79-
limits:
80-
cpu: "4" # Limiting to 4 CPU
81-
memory: "10Gi" # Limiting to 10 Gibibytes of memory
82-
requests:
83-
cpu: "4" # Requesting 4 CPU
84-
memory: "10Gi" # Requesting 10 Gibi of memory
85-
- kind: clairpostgres
86-
managed: true
87-
overrides:
88-
resources:
89-
limits:
90-
cpu: "800m" # Limiting to 800 millicpu or 0.8 CPU
91-
memory: "3Gi" # Limiting to 3 Gibibytes of memory
92-
requests: {}
93-
----
94-
<1> Setting the `limits` or `requests` fields to `{}` uses the default values for these resources.
95-
<2> Leaving the `limits` or `requests` field empty puts no limitations on these resources.
96-
97-
[id="configuring-resources-ocp-yaml"]
98-
== Configuring resource requests by editing the QuayRegistry YAML
99-
100-
You can re-configure {productname} to configure resource requests after you have already deployed a registry. This can be done by editing the `QuayRegistry` YAML file directly and then re-deploying the registry.
101-
102-
.Procedure
103-
104-
. Optional: If you do not have a local copy of the `QuayRegistry` YAML file, enter the following command to obtain it:
105-
+
106-
[source,terminal]
107-
----
108-
$ oc get quayregistry <registry_name> -n <namespace> -o yaml > quayregistry.yaml
109-
----
110-
111-
. Open the `quayregistry.yaml` created from Step 1 of this procedure and make the desired changes. For example:
112-
+
113-
[source,yaml]
114-
----
115-
- kind: quay
116-
managed: true
117-
overrides:
118-
resources:
119-
limits: {}
120-
requests:
121-
cpu: "0.7" # Requesting 0.7 CPU (equivalent to 500m or 500 millicpu)
122-
memory: "512Mi" # Requesting 512 Mebibytes of memory
123-
----
124-
125-
. Save the changes.
126-
127-
. Apply the {productname} registry using the updated configurations by running the following command:
128-
+
129-
[source,terminal]
130-
----
131-
$ oc replace -f quayregistry.yaml
132-
----
133-
+
134-
.Example output
135-
+
136-
[source,terminal]
137-
----
138-
quayregistry.quay.redhat.com/example-registry replaced
139-
----
26+
====
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
:_mod-docs-content-type: PROCEDURE
2+
[id="configuring-resources-ocp-ui"]
3+
= Configuring resource requests by using the {ocp} UI
4+
5+
Use the following procedure to configure resources by using the {ocp} UI.
6+
7+
.Procedure
8+
9+
. On the {ocp} developer console, click *Operators* -> *Installed Operators* -> *Red Hat Quay*.
10+
11+
. Click *QuayRegistry*.
12+
13+
. Click the name of your registry, for example, *example-registry*.
14+
15+
. Click *YAML*.
16+
17+
. In the `spec.components` field, you can override the resource of the `quay`, `clair`, `mirroring` `clairpostgres`, and `postgres` resources by setting values for the `.overrides.resources.limits` and the `overrides.resources.requests` fields. For example:
18+
+
19+
[source,yaml]
20+
----
21+
spec:
22+
components:
23+
- kind: clair
24+
managed: true
25+
overrides:
26+
resources:
27+
limits:
28+
cpu: "5" # Limiting to 5 CPU (equivalent to 5000m or 5000 millicpu)
29+
memory: "18Gi" # Limiting to 18 Gibibytes of memory
30+
requests:
31+
cpu: "4" # Requesting 4 CPU
32+
memory: "4Gi" # Requesting 4 Gibibytes of memory
33+
- kind: postgres
34+
managed: true
35+
overrides:
36+
resources:
37+
limits: {} <1>
38+
requests:
39+
cpu: "700m" # Requesting 700 millicpu or 0.7 CPU
40+
memory: "4Gi" # Requesting 4 Gibibytes of memory
41+
- kind: mirror
42+
managed: true
43+
overrides:
44+
resources:
45+
limits: <2>
46+
requests:
47+
cpu: "800m" # Requesting 800 millicpu or 0.8 CPU
48+
memory: "1Gi" # Requesting 1 Gibibyte of memory
49+
- kind: quay
50+
managed: true
51+
overrides:
52+
resources:
53+
limits:
54+
cpu: "4" # Limiting to 4 CPU
55+
memory: "10Gi" # Limiting to 10 Gibibytes of memory
56+
requests:
57+
cpu: "4" # Requesting 4 CPU
58+
memory: "10Gi" # Requesting 10 Gibi of memory
59+
- kind: clairpostgres
60+
managed: true
61+
overrides:
62+
resources:
63+
limits:
64+
cpu: "800m" # Limiting to 800 millicpu or 0.8 CPU
65+
memory: "3Gi" # Limiting to 3 Gibibytes of memory
66+
requests: {}
67+
----
68+
<1> Setting the `limits` or `requests` fields to `{}` uses the default values for these resources.
69+
<2> Leaving the `limits` or `requests` field empty puts no limitations on these resources.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
:_mod-docs-content-type: PROCEDURE
2+
[id="configuring-resources-ocp-yaml"]
3+
= Configuring resource requests by using the CLI
4+
5+
You can re-configure {productname} to configure resource requests after you have already deployed a registry. This can be done by editing the `QuayRegistry` YAML file directly and then re-deploying the registry.
6+
7+
.Procedure
8+
9+
. Edit the `QuayRegistry` CR by entering the following command:
10+
+
11+
[source,terminal]
12+
----
13+
$ oc edit quayregistry <registry_name> -n <namespace>
14+
----
15+
16+
. Make any desired changes. For example:
17+
+
18+
[source,yaml]
19+
----
20+
- kind: quay
21+
managed: true
22+
overrides:
23+
resources:
24+
limits: {}
25+
requests:
26+
cpu: "0.7" # Requesting 0.7 CPU (equivalent to 500m or 500 millicpu)
27+
memory: "512Mi" # Requesting 512 Mebibytes of memory
28+
----
29+
30+
. Save the changes.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
:_mod-docs-content-type: CONCEPT
2+
[id="configuring-ssl-tls-routes"]
3+
= Configuring SSL/TLS and routes
4+
5+
Support for {ocp} _edge termination_ routes is provided through the `tls` component. This separation allows independent control of route management and TLS certificate handling.
6+
7+
`EXTERNAL_TLS_TERMINATION: true` is the default, opinionated setting, which assumes the cluster manages TLS termination.
8+
9+
[NOTE]
10+
====
11+
* When `tls` is *managed*, the cluster's default wildcard certificate is used.
12+
* When `tls` is *unmanaged*, you must supply your own SSL/TLS certificate and key pair.
13+
====
14+
15+
Multiple valid configurations are possible, as shown in the following table:
16+
17+
.Valid configuration options for TLS and routes
18+
[width="100%",cols="2,2,2,2,3",options="header"]
19+
|===
20+
|Option | Route | TLS | Certs provided | Result
21+
| My own load balancer handles TLS | Managed | Managed | No | Edge route using default cluster wildcard certificate
22+
| {productname} handles TLS | Managed | Unmanaged | Yes | Passthrough route with certificates mounted in the {productname} pod
23+
| {productname} handles TLS | Unmanaged | Unmanaged | Yes | Certificates set inside the {productname} pod; user must manually create a route
24+
|===

0 commit comments

Comments
 (0)