Skip to content

Commit 0b4d5c7

Browse files
authored
operator ack-ecr-controller (1.3.0)
1 parent dcd6eb0 commit 0b4d5c7

9 files changed

+913
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
FROM scratch
2+
3+
# Core bundle labels.
4+
LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1
5+
LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/
6+
LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/
7+
LABEL operators.operatorframework.io.bundle.package.v1=ack-ecr-controller
8+
LABEL operators.operatorframework.io.bundle.channels.v1=alpha
9+
LABEL operators.operatorframework.io.bundle.channel.default.v1=alpha
10+
LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.28.0
11+
LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1
12+
LABEL operators.operatorframework.io.metrics.project_layout=unknown
13+
14+
# Labels for testing.
15+
LABEL operators.operatorframework.io.test.mediatype.v1=scorecard+v1
16+
LABEL operators.operatorframework.io.test.config.v1=tests/scorecard/
17+
18+
# Copy files to locations specified by labels.
19+
COPY bundle/manifests /manifests/
20+
COPY bundle/metadata /metadata/
21+
COPY bundle/tests/scorecard /tests/scorecard/
Lines changed: 288 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,288 @@
1+
apiVersion: operators.coreos.com/v1alpha1
2+
kind: ClusterServiceVersion
3+
metadata:
4+
annotations:
5+
alm-examples: |-
6+
[
7+
{
8+
"apiVersion": "ecr.services.k8s.aws/v1alpha1",
9+
"kind": "Repository",
10+
"metadata": {
11+
"name": "example"
12+
},
13+
"spec": {}
14+
}
15+
]
16+
capabilities: Basic Install
17+
categories: Cloud Provider
18+
certified: "false"
19+
containerImage: public.ecr.aws/aws-controllers-k8s/ecr-controller:1.3.0
20+
createdAt: "2025-09-08T18:57:09Z"
21+
description: AWS ECR controller is a service controller for managing ECR resources
22+
in Kubernetes
23+
operatorframework.io/suggested-namespace: ack-system
24+
operators.operatorframework.io/builder: operator-sdk-v1.28.0
25+
operators.operatorframework.io/project_layout: unknown
26+
repository: https://github.com/aws-controllers-k8s
27+
support: Community
28+
labels:
29+
operatorframework.io/arch.amd64: supported
30+
operatorframework.io/arch.arm64: supported
31+
operatorframework.io/os.linux: supported
32+
name: ack-ecr-controller.v1.3.0
33+
namespace: placeholder
34+
spec:
35+
apiservicedefinitions: {}
36+
customresourcedefinitions:
37+
owned:
38+
- description: PullThroughCacheRule represents the state of an AWS ecr PullThroughCacheRule
39+
resource.
40+
displayName: PullThroughCacheRule
41+
kind: PullThroughCacheRule
42+
name: pullthroughcacherules.ecr.services.k8s.aws
43+
version: v1alpha1
44+
- description: Repository represents the state of an AWS ecr Repository resource.
45+
displayName: Repository
46+
kind: Repository
47+
name: repositories.ecr.services.k8s.aws
48+
version: v1alpha1
49+
description: |-
50+
Manage Amazon Elastic Container Registry (ECR) resources in AWS from within your Kubernetes cluster.
51+
52+
**About Amazon ECR**
53+
54+
Amazon Elastic Container Registry (Amazon ECR) is an AWS managed container image registry service that is secure, scalable, and reliable. Amazon ECR supports private repositories with resource-based permissions using AWS IAM. This is so that specified users or Amazon EC2 instances can access your container repositories and images. You can use your preferred CLI to push, pull, and manage Docker images, Open Container Initiative (OCI) images, and OCI compatible artifacts.
55+
56+
**About the AWS Controllers for Kubernetes**
57+
58+
This controller is a component of the [AWS Controller for Kubernetes](https://github.com/aws/aws-controllers-k8s) project.
59+
60+
**Pre-Installation Steps**
61+
62+
Please follow the following link: [Red Hat OpenShift](https://aws-controllers-k8s.github.io/community/docs/user-docs/openshift/)
63+
displayName: AWS Controllers for Kubernetes - Amazon ECR
64+
icon:
65+
- base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMzA0IDE4MiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzA0IDE4MjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMyNTJGM0U7fQoJLnN0MXtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNGRjk5MDA7fQo8L3N0eWxlPgo8Zz4KCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik04Ni40LDY2LjRjMCwzLjcsMC40LDYuNywxLjEsOC45YzAuOCwyLjIsMS44LDQuNiwzLjIsNy4yYzAuNSwwLjgsMC43LDEuNiwwLjcsMi4zYzAsMS0wLjYsMi0xLjksM2wtNi4zLDQuMiAgIGMtMC45LDAuNi0xLjgsMC45LTIuNiwwLjljLTEsMC0yLTAuNS0zLTEuNEM3Ni4yLDkwLDc1LDg4LjQsNzQsODYuOGMtMS0xLjctMi0zLjYtMy4xLTUuOWMtNy44LDkuMi0xNy42LDEzLjgtMjkuNCwxMy44ICAgYy04LjQsMC0xNS4xLTIuNC0yMC03LjJjLTQuOS00LjgtNy40LTExLjItNy40LTE5LjJjMC04LjUsMy0xNS40LDkuMS0yMC42YzYuMS01LjIsMTQuMi03LjgsMjQuNS03LjhjMy40LDAsNi45LDAuMywxMC42LDAuOCAgIGMzLjcsMC41LDcuNSwxLjMsMTEuNSwyLjJ2LTcuM2MwLTcuNi0xLjYtMTIuOS00LjctMTZjLTMuMi0zLjEtOC42LTQuNi0xNi4zLTQuNmMtMy41LDAtNy4xLDAuNC0xMC44LDEuM2MtMy43LDAuOS03LjMsMi0xMC44LDMuNCAgIGMtMS42LDAuNy0yLjgsMS4xLTMuNSwxLjNjLTAuNywwLjItMS4yLDAuMy0xLjYsMC4zYy0xLjQsMC0yLjEtMS0yLjEtMy4xdi00LjljMC0xLjYsMC4yLTIuOCwwLjctMy41YzAuNS0wLjcsMS40LTEuNCwyLjgtMi4xICAgYzMuNS0xLjgsNy43LTMuMywxMi42LTQuNWM0LjktMS4zLDEwLjEtMS45LDE1LjYtMS45YzExLjksMCwyMC42LDIuNywyNi4yLDguMWM1LjUsNS40LDguMywxMy42LDguMywyNC42VjY2LjR6IE00NS44LDgxLjYgICBjMy4zLDAsNi43LTAuNiwxMC4zLTEuOGMzLjYtMS4yLDYuOC0zLjQsOS41LTYuNGMxLjYtMS45LDIuOC00LDMuNC02LjRjMC42LTIuNCwxLTUuMywxLTguN3YtNC4yYy0yLjktMC43LTYtMS4zLTkuMi0xLjcgICBjLTMuMi0wLjQtNi4zLTAuNi05LjQtMC42Yy02LjcsMC0xMS42LDEuMy0xNC45LDRjLTMuMywyLjctNC45LDYuNS00LjksMTEuNWMwLDQuNywxLjIsOC4yLDMuNywxMC42ICAgQzM3LjcsODAuNCw0MS4yLDgxLjYsNDUuOCw4MS42eiBNMTI2LjEsOTIuNGMtMS44LDAtMy0wLjMtMy44LTFjLTAuOC0wLjYtMS41LTItMi4xLTMuOUw5Ni43LDEwLjJjLTAuNi0yLTAuOS0zLjMtMC45LTQgICBjMC0xLjYsMC44LTIuNSwyLjQtMi41aDkuOGMxLjksMCwzLjIsMC4zLDMuOSwxYzAuOCwwLjYsMS40LDIsMiwzLjlsMTYuOCw2Ni4ybDE1LjYtNjYuMmMwLjUtMiwxLjEtMy4zLDEuOS0zLjljMC44LTAuNiwyLjItMSw0LTEgICBoOGMxLjksMCwzLjIsMC4zLDQsMWMwLjgsMC42LDEuNSwyLDEuOSwzLjlsMTUuOCw2N2wxNy4zLTY3YzAuNi0yLDEuMy0zLjMsMi0zLjljMC44LTAuNiwyLjEtMSwzLjktMWg5LjNjMS42LDAsMi41LDAuOCwyLjUsMi41ICAgYzAsMC41LTAuMSwxLTAuMiwxLjZjLTAuMSwwLjYtMC4zLDEuNC0wLjcsMi41bC0yNC4xLDc3LjNjLTAuNiwyLTEuMywzLjMtMi4xLDMuOWMtMC44LDAuNi0yLjEsMS0zLjgsMWgtOC42Yy0xLjksMC0zLjItMC4zLTQtMSAgIGMtMC44LTAuNy0xLjUtMi0xLjktNEwxNTYsMjNsLTE1LjQsNjQuNGMtMC41LDItMS4xLDMuMy0xLjksNGMtMC44LDAuNy0yLjIsMS00LDFIMTI2LjF6IE0yNTQuNiw5NS4xYy01LjIsMC0xMC40LTAuNi0xNS40LTEuOCAgIGMtNS0xLjItOC45LTIuNS0xMS41LTRjLTEuNi0wLjktMi43LTEuOS0zLjEtMi44Yy0wLjQtMC45LTAuNi0xLjktMC42LTIuOHYtNS4xYzAtMi4xLDAuOC0zLjEsMi4zLTMuMWMwLjYsMCwxLjIsMC4xLDEuOCwwLjMgICBjMC42LDAuMiwxLjUsMC42LDIuNSwxYzMuNCwxLjUsNy4xLDIuNywxMSwzLjVjNCwwLjgsNy45LDEuMiwxMS45LDEuMmM2LjMsMCwxMS4yLTEuMSwxNC42LTMuM2MzLjQtMi4yLDUuMi01LjQsNS4yLTkuNSAgIGMwLTIuOC0wLjktNS4xLTIuNy03Yy0xLjgtMS45LTUuMi0zLjYtMTAuMS01LjJMMjQ2LDUyYy03LjMtMi4zLTEyLjctNS43LTE2LTEwLjJjLTMuMy00LjQtNS05LjMtNS0xNC41YzAtNC4yLDAuOS03LjksMi43LTExLjEgICBjMS44LTMuMiw0LjItNiw3LjItOC4yYzMtMi4zLDYuNC00LDEwLjQtNS4yYzQtMS4yLDguMi0xLjcsMTIuNi0xLjdjMi4yLDAsNC41LDAuMSw2LjcsMC40YzIuMywwLjMsNC40LDAuNyw2LjUsMS4xICAgYzIsMC41LDMuOSwxLDUuNywxLjZjMS44LDAuNiwzLjIsMS4yLDQuMiwxLjhjMS40LDAuOCwyLjQsMS42LDMsMi41YzAuNiwwLjgsMC45LDEuOSwwLjksMy4zdjQuN2MwLDIuMS0wLjgsMy4yLTIuMywzLjIgICBjLTAuOCwwLTIuMS0wLjQtMy44LTEuMmMtNS43LTIuNi0xMi4xLTMuOS0xOS4yLTMuOWMtNS43LDAtMTAuMiwwLjktMTMuMywyLjhjLTMuMSwxLjktNC43LDQuOC00LjcsOC45YzAsMi44LDEsNS4yLDMsNy4xICAgYzIsMS45LDUuNywzLjgsMTEsNS41bDE0LjIsNC41YzcuMiwyLjMsMTIuNCw1LjUsMTUuNSw5LjZjMy4xLDQuMSw0LjYsOC44LDQuNiwxNGMwLDQuMy0wLjksOC4yLTIuNiwxMS42ICAgYy0xLjgsMy40LTQuMiw2LjQtNy4zLDguOGMtMy4xLDIuNS02LjgsNC4zLTExLjEsNS42QzI2NC40LDk0LjQsMjU5LjcsOTUuMSwyNTQuNiw5NS4xeiIvPgoJPGc+CgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTI3My41LDE0My43Yy0zMi45LDI0LjMtODAuNywzNy4yLTEyMS44LDM3LjJjLTU3LjYsMC0xMDkuNS0yMS4zLTE0OC43LTU2LjdjLTMuMS0yLjgtMC4zLTYuNiwzLjQtNC40ICAgIGM0Mi40LDI0LjYsOTQuNywzOS41LDE0OC44LDM5LjVjMzYuNSwwLDc2LjYtNy42LDExMy41LTIzLjJDMjc0LjIsMTMzLjYsMjc4LjksMTM5LjcsMjczLjUsMTQzLjd6Ii8+CgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTI4Ny4yLDEyOC4xYy00LjItNS40LTI3LjgtMi42LTM4LjUtMS4zYy0zLjIsMC40LTMuNy0yLjQtMC44LTQuNWMxOC44LTEzLjIsNDkuNy05LjQsNTMuMy01ICAgIGMzLjYsNC41LTEsMzUuNC0xOC42LDUwLjJjLTIuNywyLjMtNS4zLDEuMS00LjEtMS45QzI4Mi41LDE1NS43LDI5MS40LDEzMy40LDI4Ny4yLDEyOC4xeiIvPgoJPC9nPgo8L2c+Cjwvc3ZnPg==
66+
mediatype: image/svg+xml
67+
install:
68+
spec:
69+
clusterPermissions:
70+
- rules:
71+
- apiGroups:
72+
- ""
73+
resources:
74+
- configmaps
75+
- secrets
76+
verbs:
77+
- get
78+
- list
79+
- patch
80+
- watch
81+
- apiGroups:
82+
- ""
83+
resources:
84+
- namespaces
85+
verbs:
86+
- get
87+
- list
88+
- watch
89+
- apiGroups:
90+
- ecr.services.k8s.aws
91+
resources:
92+
- pullthroughcacherules
93+
- repositories
94+
verbs:
95+
- create
96+
- delete
97+
- get
98+
- list
99+
- patch
100+
- update
101+
- watch
102+
- apiGroups:
103+
- ecr.services.k8s.aws
104+
resources:
105+
- pullthroughcacherules/status
106+
- repositories/status
107+
verbs:
108+
- get
109+
- patch
110+
- update
111+
- apiGroups:
112+
- iam.services.k8s.aws
113+
resources:
114+
- roles
115+
- roles/status
116+
verbs:
117+
- get
118+
- list
119+
- apiGroups:
120+
- secretsmanager.services.k8s.aws
121+
resources:
122+
- secrets
123+
- secrets/status
124+
verbs:
125+
- get
126+
- list
127+
- apiGroups:
128+
- services.k8s.aws
129+
resources:
130+
- adoptedresources
131+
- fieldexports
132+
verbs:
133+
- create
134+
- delete
135+
- get
136+
- list
137+
- patch
138+
- update
139+
- watch
140+
- apiGroups:
141+
- services.k8s.aws
142+
resources:
143+
- adoptedresources/status
144+
- fieldexports/status
145+
verbs:
146+
- get
147+
- patch
148+
- update
149+
serviceAccountName: ack-ecr-controller
150+
deployments:
151+
- label:
152+
app.kubernetes.io/name: ack-ecr-controller
153+
app.kubernetes.io/part-of: ack-system
154+
name: ack-ecr-controller
155+
spec:
156+
replicas: 1
157+
selector:
158+
matchLabels:
159+
app.kubernetes.io/name: ack-ecr-controller
160+
strategy: {}
161+
template:
162+
metadata:
163+
labels:
164+
app.kubernetes.io/name: ack-ecr-controller
165+
spec:
166+
containers:
167+
- args:
168+
- --aws-region
169+
- $(AWS_REGION)
170+
- --aws-endpoint-url
171+
- $(AWS_ENDPOINT_URL)
172+
- --enable-development-logging=$(ACK_ENABLE_DEVELOPMENT_LOGGING)
173+
- --log-level
174+
- $(ACK_LOG_LEVEL)
175+
- --resource-tags
176+
- $(ACK_RESOURCE_TAGS)
177+
- --watch-namespace
178+
- $(ACK_WATCH_NAMESPACE)
179+
- --enable-leader-election=$(ENABLE_LEADER_ELECTION)
180+
- --leader-election-namespace
181+
- $(LEADER_ELECTION_NAMESPACE)
182+
- --reconcile-default-max-concurrent-syncs
183+
- $(RECONCILE_DEFAULT_MAX_CONCURRENT_SYNCS)
184+
- --feature-gates
185+
- $(FEATURE_GATES)
186+
command:
187+
- ./bin/controller
188+
env:
189+
- name: ACK_SYSTEM_NAMESPACE
190+
valueFrom:
191+
fieldRef:
192+
fieldPath: metadata.namespace
193+
envFrom:
194+
- configMapRef:
195+
name: ack-ecr-user-config
196+
optional: false
197+
- secretRef:
198+
name: ack-ecr-user-secrets
199+
optional: true
200+
image: public.ecr.aws/aws-controllers-k8s/ecr-controller:1.3.0
201+
livenessProbe:
202+
httpGet:
203+
path: /healthz
204+
port: 8081
205+
initialDelaySeconds: 15
206+
periodSeconds: 20
207+
name: controller
208+
ports:
209+
- containerPort: 8080
210+
name: http
211+
readinessProbe:
212+
httpGet:
213+
path: /readyz
214+
port: 8081
215+
initialDelaySeconds: 5
216+
periodSeconds: 10
217+
resources:
218+
limits:
219+
cpu: 100m
220+
memory: 300Mi
221+
requests:
222+
cpu: 100m
223+
memory: 200Mi
224+
securityContext:
225+
allowPrivilegeEscalation: false
226+
capabilities:
227+
drop:
228+
- ALL
229+
privileged: false
230+
runAsNonRoot: true
231+
dnsPolicy: ClusterFirst
232+
securityContext:
233+
seccompProfile:
234+
type: RuntimeDefault
235+
serviceAccountName: ack-ecr-controller
236+
terminationGracePeriodSeconds: 10
237+
permissions:
238+
- rules:
239+
- apiGroups:
240+
- coordination.k8s.io
241+
resources:
242+
- leases
243+
verbs:
244+
- get
245+
- list
246+
- watch
247+
- create
248+
- update
249+
- patch
250+
- delete
251+
- apiGroups:
252+
- ""
253+
resources:
254+
- events
255+
verbs:
256+
- create
257+
- patch
258+
serviceAccountName: ack-ecr-controller
259+
strategy: deployment
260+
installModes:
261+
- supported: true
262+
type: OwnNamespace
263+
- supported: true
264+
type: SingleNamespace
265+
- supported: true
266+
type: MultiNamespace
267+
- supported: true
268+
type: AllNamespaces
269+
keywords:
270+
- ecr
271+
- aws
272+
- amazon
273+
- ack
274+
links:
275+
- name: AWS Controllers for Kubernetes
276+
url: https://github.com/aws-controllers-k8s/community
277+
- name: Documentation
278+
url: https://aws-controllers-k8s.github.io/community/
279+
- name: Amazon ECR Developer Resources
280+
url: https://aws.amazon.com/ecr/resources/
281+
maintainers:
282+
283+
name: ecr maintainer team
284+
maturity: alpha
285+
provider:
286+
name: Amazon, Inc.
287+
url: https://aws.amazon.com
288+
version: 1.3.0
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
creationTimestamp: null
5+
name: ack-ecr-metrics-service
6+
spec:
7+
ports:
8+
- name: metricsport
9+
port: 8080
10+
protocol: TCP
11+
targetPort: http
12+
selector:
13+
app.kubernetes.io/name: ack-ecr-controller
14+
type: ClusterIP
15+
status:
16+
loadBalancer: {}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: Role
3+
metadata:
4+
creationTimestamp: null
5+
name: ack-ecr-reader
6+
rules:
7+
- apiGroups:
8+
- ecr.services.k8s.aws
9+
resources:
10+
- pullthroughcacherules
11+
- repositories
12+
verbs:
13+
- get
14+
- list
15+
- watch
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: Role
3+
metadata:
4+
creationTimestamp: null
5+
name: ack-ecr-writer
6+
rules:
7+
- apiGroups:
8+
- ecr.services.k8s.aws
9+
resources:
10+
- pullthroughcacherules
11+
- repositories
12+
verbs:
13+
- create
14+
- delete
15+
- get
16+
- list
17+
- patch
18+
- update
19+
- watch
20+
- apiGroups:
21+
- ecr.services.k8s.aws
22+
resources:
23+
- pullthroughcacherules
24+
- repositories
25+
verbs:
26+
- get
27+
- patch
28+
- update

0 commit comments

Comments
 (0)