@@ -180,6 +180,69 @@ type RosaControlPlaneSpec struct { //nolint: maligned
180180 // ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.
181181 // +optional
182182 ControlPlaneEndpoint clusterv1.APIEndpoint `json:"controlPlaneEndpoint"`
183+
184+ // ClusterRegistryConfig represents registry config used with the cluster.
185+ // +optional
186+ ClusterRegistryConfig * RegistryConfig `json:"clusterRegistryConfig,omitempty"`
187+ }
188+
189+ // RegistryConfig for ROSA-HCP cluster
190+ type RegistryConfig struct {
191+ // AdditionalTrustedCAs containing the registry hostname as the key, and the PEM-encoded certificate as the value,
192+ // for each additional registry CA to trust.
193+ // +optional
194+ AdditionalTrustedCAs map [string ]string `json:"additionalTrustedCAs,omitempty"`
195+
196+ // AllowedRegistriesForImport limits the container image registries that normal users may import
197+ // images from. Set this list to the registries that you trust to contain valid Docker
198+ // images and that you want applications to be able to import from.
199+ // +optional
200+ AllowedRegistriesForImport []RegistryLocation `json:"allowedRegistriesForImport,omitempty"`
201+
202+ // RegistrySources contains configuration that determines how the container runtime
203+ // should treat individual registries when accessing images. It does not contain configuration
204+ // for the internal cluster registry. AllowedRegistries, BlockedRegistries are mutually exclusive.
205+ // +optional
206+ RegistrySources * RegistrySources `json:"registrySources,omitempty"`
207+ }
208+
209+ // RegistryLocation contains a location of the registry specified by the registry domain name.
210+ type RegistryLocation struct {
211+ // domainName specifies a domain name for the registry. The domain name might include wildcards, like '*' or '??'.
212+ // In case the registry use non-standard (80 or 443) port, the port should be included in the domain name as well.
213+ // +optional
214+ DomainName string `json:"domainName,omitempty"`
215+
216+ // insecure indicates whether the registry is secure (https) or insecure (http), default is secured.
217+ // +kubebuilder:default=false
218+ // +optional
219+ Insecure bool `json:"insecure,omitempty"`
220+ }
221+
222+ // RegistrySources contains registries configuration.
223+ type RegistrySources struct {
224+ // AllowedRegistries are the registries for which image pull and push actions are allowed.
225+ // To specify all subdomains, add the asterisk (*) wildcard character as a prefix to the domain name,
226+ // For example, *.example.com.
227+ // You can specify an individual repository within a registry, For example: reg1.io/myrepo/myapp:latest.
228+ // All other registries are blocked.
229+ // +optional
230+ AllowedRegistries []string `json:"allowedRegistries,omitempty"`
231+
232+ // BlockedRegistries are the registries for which image pull and push actions are denied.
233+ // To specify all subdomains, add the asterisk (*) wildcard character as a prefix to the domain name,
234+ // For example, *.example.com.
235+ // You can specify an individual repository within a registry, For example: reg1.io/myrepo/myapp:latest.
236+ // All other registries are allowed.
237+ // +optional
238+ BlockedRegistries []string `json:"blockedRegistries,omitempty"`
239+
240+ // InsecureRegistries are registries which do not have a valid TLS certificate or only support HTTP connections.
241+ // To specify all subdomains, add the asterisk (*) wildcard character as a prefix to the domain name,
242+ // For example, *.example.com.
243+ // You can specify an individual repository within a registry, For example: reg1.io/myrepo/myapp:latest.
244+ // +optional
245+ InsecureRegistries []string `json:"insecureRegistries,omitempty"`
183246}
184247
185248// NetworkSpec for ROSA-HCP.
0 commit comments