diff --git a/operators/ack-acm-controller/1.0.0/bundle.Dockerfile b/operators/ack-acm-controller/1.0.0/bundle.Dockerfile new file mode 100644 index 00000000000..9fd97df6df3 --- /dev/null +++ b/operators/ack-acm-controller/1.0.0/bundle.Dockerfile @@ -0,0 +1,21 @@ +FROM scratch + +# Core bundle labels. +LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 +LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ +LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ +LABEL operators.operatorframework.io.bundle.package.v1=ack-acm-controller +LABEL operators.operatorframework.io.bundle.channels.v1=alpha +LABEL operators.operatorframework.io.bundle.channel.default.v1=alpha +LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.28.0 +LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 +LABEL operators.operatorframework.io.metrics.project_layout=unknown + +# Labels for testing. +LABEL operators.operatorframework.io.test.mediatype.v1=scorecard+v1 +LABEL operators.operatorframework.io.test.config.v1=tests/scorecard/ + +# Copy files to locations specified by labels. +COPY bundle/manifests /manifests/ +COPY bundle/metadata /metadata/ +COPY bundle/tests/scorecard /tests/scorecard/ diff --git a/operators/ack-acm-controller/1.0.0/manifests/ack-acm-controller.clusterserviceversion.yaml b/operators/ack-acm-controller/1.0.0/manifests/ack-acm-controller.clusterserviceversion.yaml new file mode 100644 index 00000000000..63bfcc72432 --- /dev/null +++ b/operators/ack-acm-controller/1.0.0/manifests/ack-acm-controller.clusterserviceversion.yaml @@ -0,0 +1,266 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "acm.services.k8s.aws/v1alpha1", + "kind": "Certificate", + "metadata": { + "name": "example" + }, + "spec": {} + } + ] + capabilities: Basic Install + categories: Cloud Provider + certified: "false" + containerImage: public.ecr.aws/aws-controllers-k8s/acm-controller:1.0.0 + createdAt: "2024-11-07T19:25:55Z" + description: AWS ACM controller is a service controller for managing ACM resources + in Kubernetes + operatorframework.io/suggested-namespace: ack-system + operators.operatorframework.io/builder: operator-sdk-v1.28.0 + operators.operatorframework.io/project_layout: unknown + repository: https://github.com/aws-controllers-k8s + support: Community + labels: + operatorframework.io/arch.amd64: supported + operatorframework.io/arch.arm64: supported + operatorframework.io/os.linux: supported + name: ack-acm-controller.v1.0.0 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: Certificate represents the state of an AWS acm Certificate resource. + displayName: Certificate + kind: Certificate + name: certificates.acm.services.k8s.aws + version: v1alpha1 + description: |- + Manage AWS Certificate Manager (ACM) resources in AWS from within your Kubernetes cluster. + + **About Amazon ACM** + + AWS Certificate Manager (ACM) handles the complexity of creating, storing, and renewing public and private SSL/TLS X.509 certificates and keys that protect your AWS websites and applications. You can provide certificates for your [integrated AWS services](https://docs.aws.amazon.com/acm/latest/userguide/acm-services.html) either by issuing them directly with ACM or by [importing](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) third-party certificates into the ACM management system. ACM certificates can secure singular domain names, multiple specific domain names, wildcard domains, or combinations of these. ACM wildcard certificates can protect an unlimited number of subdomains. You can also [export](https://docs.aws.amazon.com/acm/latest/userguide/export-private.html) ACM certificates signed by AWS Private CA for use anywhere in your internal PKI. + + **About the AWS Controllers for Kubernetes** + + This controller is a component of the [AWS Controller for Kubernetes](https://github.com/aws/aws-controllers-k8s) project. This project is currently in **developer preview**. + displayName: AWS Controllers for Kubernetes - Amazon ACM + icon: + - base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMzA0IDE4MiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzA0IDE4MjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMyNTJGM0U7fQoJLnN0MXtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNGRjk5MDA7fQo8L3N0eWxlPgo8Zz4KCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik04Ni40LDY2LjRjMCwzLjcsMC40LDYuNywxLjEsOC45YzAuOCwyLjIsMS44LDQuNiwzLjIsNy4yYzAuNSwwLjgsMC43LDEuNiwwLjcsMi4zYzAsMS0wLjYsMi0xLjksM2wtNi4zLDQuMiAgIGMtMC45LDAuNi0xLjgsMC45LTIuNiwwLjljLTEsMC0yLTAuNS0zLTEuNEM3Ni4yLDkwLDc1LDg4LjQsNzQsODYuOGMtMS0xLjctMi0zLjYtMy4xLTUuOWMtNy44LDkuMi0xNy42LDEzLjgtMjkuNCwxMy44ICAgYy04LjQsMC0xNS4xLTIuNC0yMC03LjJjLTQuOS00LjgtNy40LTExLjItNy40LTE5LjJjMC04LjUsMy0xNS40LDkuMS0yMC42YzYuMS01LjIsMTQuMi03LjgsMjQuNS03LjhjMy40LDAsNi45LDAuMywxMC42LDAuOCAgIGMzLjcsMC41LDcuNSwxLjMsMTEuNSwyLjJ2LTcuM2MwLTcuNi0xLjYtMTIuOS00LjctMTZjLTMuMi0zLjEtOC42LTQuNi0xNi4zLTQuNmMtMy41LDAtNy4xLDAuNC0xMC44LDEuM2MtMy43LDAuOS03LjMsMi0xMC44LDMuNCAgIGMtMS42LDAuNy0yLjgsMS4xLTMuNSwxLjNjLTAuNywwLjItMS4yLDAuMy0xLjYsMC4zYy0xLjQsMC0yLjEtMS0yLjEtMy4xdi00LjljMC0xLjYsMC4yLTIuOCwwLjctMy41YzAuNS0wLjcsMS40LTEuNCwyLjgtMi4xICAgYzMuNS0xLjgsNy43LTMuMywxMi42LTQuNWM0LjktMS4zLDEwLjEtMS45LDE1LjYtMS45YzExLjksMCwyMC42LDIuNywyNi4yLDguMWM1LjUsNS40LDguMywxMy42LDguMywyNC42VjY2LjR6IE00NS44LDgxLjYgICBjMy4zLDAsNi43LTAuNiwxMC4zLTEuOGMzLjYtMS4yLDYuOC0zLjQsOS41LTYuNGMxLjYtMS45LDIuOC00LDMuNC02LjRjMC42LTIuNCwxLTUuMywxLTguN3YtNC4yYy0yLjktMC43LTYtMS4zLTkuMi0xLjcgICBjLTMuMi0wLjQtNi4zLTAuNi05LjQtMC42Yy02LjcsMC0xMS42LDEuMy0xNC45LDRjLTMuMywyLjctNC45LDYuNS00LjksMTEuNWMwLDQuNywxLjIsOC4yLDMuNywxMC42ICAgQzM3LjcsODAuNCw0MS4yLDgxLjYsNDUuOCw4MS42eiBNMTI2LjEsOTIuNGMtMS44LDAtMy0wLjMtMy44LTFjLTAuOC0wLjYtMS41LTItMi4xLTMuOUw5Ni43LDEwLjJjLTAuNi0yLTAuOS0zLjMtMC45LTQgICBjMC0xLjYsMC44LTIuNSwyLjQtMi41aDkuOGMxLjksMCwzLjIsMC4zLDMuOSwxYzAuOCwwLjYsMS40LDIsMiwzLjlsMTYuOCw2Ni4ybDE1LjYtNjYuMmMwLjUtMiwxLjEtMy4zLDEuOS0zLjljMC44LTAuNiwyLjItMSw0LTEgICBoOGMxLjksMCwzLjIsMC4zLDQsMWMwLjgsMC42LDEuNSwyLDEuOSwzLjlsMTUuOCw2N2wxNy4zLTY3YzAuNi0yLDEuMy0zLjMsMi0zLjljMC44LTAuNiwyLjEtMSwzLjktMWg5LjNjMS42LDAsMi41LDAuOCwyLjUsMi41ICAgYzAsMC41LTAuMSwxLTAuMiwxLjZjLTAuMSwwLjYtMC4zLDEuNC0wLjcsMi41bC0yNC4xLDc3LjNjLTAuNiwyLTEuMywzLjMtMi4xLDMuOWMtMC44LDAuNi0yLjEsMS0zLjgsMWgtOC42Yy0xLjksMC0zLjItMC4zLTQtMSAgIGMtMC44LTAuNy0xLjUtMi0xLjktNEwxNTYsMjNsLTE1LjQsNjQuNGMtMC41LDItMS4xLDMuMy0xLjksNGMtMC44LDAuNy0yLjIsMS00LDFIMTI2LjF6IE0yNTQuNiw5NS4xYy01LjIsMC0xMC40LTAuNi0xNS40LTEuOCAgIGMtNS0xLjItOC45LTIuNS0xMS41LTRjLTEuNi0wLjktMi43LTEuOS0zLjEtMi44Yy0wLjQtMC45LTAuNi0xLjktMC42LTIuOHYtNS4xYzAtMi4xLDAuOC0zLjEsMi4zLTMuMWMwLjYsMCwxLjIsMC4xLDEuOCwwLjMgICBjMC42LDAuMiwxLjUsMC42LDIuNSwxYzMuNCwxLjUsNy4xLDIuNywxMSwzLjVjNCwwLjgsNy45LDEuMiwxMS45LDEuMmM2LjMsMCwxMS4yLTEuMSwxNC42LTMuM2MzLjQtMi4yLDUuMi01LjQsNS4yLTkuNSAgIGMwLTIuOC0wLjktNS4xLTIuNy03Yy0xLjgtMS45LTUuMi0zLjYtMTAuMS01LjJMMjQ2LDUyYy03LjMtMi4zLTEyLjctNS43LTE2LTEwLjJjLTMuMy00LjQtNS05LjMtNS0xNC41YzAtNC4yLDAuOS03LjksMi43LTExLjEgICBjMS44LTMuMiw0LjItNiw3LjItOC4yYzMtMi4zLDYuNC00LDEwLjQtNS4yYzQtMS4yLDguMi0xLjcsMTIuNi0xLjdjMi4yLDAsNC41LDAuMSw2LjcsMC40YzIuMywwLjMsNC40LDAuNyw2LjUsMS4xICAgYzIsMC41LDMuOSwxLDUuNywxLjZjMS44LDAuNiwzLjIsMS4yLDQuMiwxLjhjMS40LDAuOCwyLjQsMS42LDMsMi41YzAuNiwwLjgsMC45LDEuOSwwLjksMy4zdjQuN2MwLDIuMS0wLjgsMy4yLTIuMywzLjIgICBjLTAuOCwwLTIuMS0wLjQtMy44LTEuMmMtNS43LTIuNi0xMi4xLTMuOS0xOS4yLTMuOWMtNS43LDAtMTAuMiwwLjktMTMuMywyLjhjLTMuMSwxLjktNC43LDQuOC00LjcsOC45YzAsMi44LDEsNS4yLDMsNy4xICAgYzIsMS45LDUuNywzLjgsMTEsNS41bDE0LjIsNC41YzcuMiwyLjMsMTIuNCw1LjUsMTUuNSw5LjZjMy4xLDQuMSw0LjYsOC44LDQuNiwxNGMwLDQuMy0wLjksOC4yLTIuNiwxMS42ICAgYy0xLjgsMy40LTQuMiw2LjQtNy4zLDguOGMtMy4xLDIuNS02LjgsNC4zLTExLjEsNS42QzI2NC40LDk0LjQsMjU5LjcsOTUuMSwyNTQuNiw5NS4xeiIvPgoJPGc+CgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTI3My41LDE0My43Yy0zMi45LDI0LjMtODAuNywzNy4yLTEyMS44LDM3LjJjLTU3LjYsMC0xMDkuNS0yMS4zLTE0OC43LTU2LjdjLTMuMS0yLjgtMC4zLTYuNiwzLjQtNC40ICAgIGM0Mi40LDI0LjYsOTQuNywzOS41LDE0OC44LDM5LjVjMzYuNSwwLDc2LjYtNy42LDExMy41LTIzLjJDMjc0LjIsMTMzLjYsMjc4LjksMTM5LjcsMjczLjUsMTQzLjd6Ii8+CgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTI4Ny4yLDEyOC4xYy00LjItNS40LTI3LjgtMi42LTM4LjUtMS4zYy0zLjIsMC40LTMuNy0yLjQtMC44LTQuNWMxOC44LTEzLjIsNDkuNy05LjQsNTMuMy01ICAgIGMzLjYsNC41LTEsMzUuNC0xOC42LDUwLjJjLTIuNywyLjMtNS4zLDEuMS00LjEtMS45QzI4Mi41LDE1NS43LDI5MS40LDEzMy40LDI4Ny4yLDEyOC4xeiIvPgoJPC9nPgo8L2c+Cjwvc3ZnPg== + mediatype: image/svg+xml + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - configmaps + - secrets + verbs: + - get + - list + - patch + - watch + - apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - list + - watch + - apiGroups: + - acm.services.k8s.aws + resources: + - certificates + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - acm.services.k8s.aws + resources: + - certificates/status + verbs: + - get + - patch + - update + - apiGroups: + - acmpca.services.k8s.aws + resources: + - certificateauthorities + - certificateauthorities/status + verbs: + - get + - list + - apiGroups: + - services.k8s.aws + resources: + - adoptedresources + - fieldexports + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - services.k8s.aws + resources: + - adoptedresources/status + - fieldexports/status + verbs: + - get + - patch + - update + serviceAccountName: ack-acm-controller + deployments: + - label: + app.kubernetes.io/name: ack-acm-controller + app.kubernetes.io/part-of: ack-system + name: ack-acm-controller + spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: ack-acm-controller + strategy: {} + template: + metadata: + labels: + app.kubernetes.io/name: ack-acm-controller + spec: + containers: + - args: + - --aws-region + - $(AWS_REGION) + - --aws-endpoint-url + - $(AWS_ENDPOINT_URL) + - --enable-development-logging=$(ACK_ENABLE_DEVELOPMENT_LOGGING) + - --log-level + - $(ACK_LOG_LEVEL) + - --resource-tags + - $(ACK_RESOURCE_TAGS) + - --watch-namespace + - $(ACK_WATCH_NAMESPACE) + - --enable-leader-election=$(ENABLE_LEADER_ELECTION) + - --leader-election-namespace + - $(LEADER_ELECTION_NAMESPACE) + - --reconcile-default-max-concurrent-syncs + - $(RECONCILE_DEFAULT_MAX_CONCURRENT_SYNCS) + command: + - ./bin/controller + env: + - name: ACK_SYSTEM_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + envFrom: + - configMapRef: + name: ack-acm-user-config + optional: false + - secretRef: + name: ack-acm-user-secrets + optional: true + image: public.ecr.aws/aws-controllers-k8s/acm-controller:1.0.0 + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + name: controller + ports: + - containerPort: 8080 + name: http + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 100m + memory: 300Mi + requests: + cpu: 100m + memory: 200Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + runAsNonRoot: true + dnsPolicy: ClusterFirst + securityContext: + seccompProfile: + type: RuntimeDefault + serviceAccountName: ack-acm-controller + terminationGracePeriodSeconds: 10 + permissions: + - rules: + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + serviceAccountName: ack-acm-controller + strategy: deployment + installModes: + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: true + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - acm + - aws + - amazon + - ack + links: + - name: AWS Controllers for Kubernetes + url: https://github.com/aws-controllers-k8s/community + - name: Documentation + url: https://aws-controllers-k8s.github.io/community/ + - name: Amazon ACM Developer Resources + url: https://aws.amazon.com/certificate-manager/resources/ + maintainers: + - email: ack-maintainers@amazon.com + name: acm maintainer team + maturity: alpha + provider: + name: Amazon, Inc. + url: https://aws.amazon.com + version: 1.0.0 diff --git a/operators/ack-acm-controller/1.0.0/manifests/ack-acm-metrics-service_v1_service.yaml b/operators/ack-acm-controller/1.0.0/manifests/ack-acm-metrics-service_v1_service.yaml new file mode 100644 index 00000000000..805da4f555e --- /dev/null +++ b/operators/ack-acm-controller/1.0.0/manifests/ack-acm-metrics-service_v1_service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: null + name: ack-acm-metrics-service +spec: + ports: + - name: metricsport + port: 8080 + protocol: TCP + targetPort: http + selector: + app.kubernetes.io/name: ack-acm-controller + type: NodePort +status: + loadBalancer: {} diff --git a/operators/ack-acm-controller/1.0.0/manifests/ack-acm-reader_rbac.authorization.k8s.io_v1_role.yaml b/operators/ack-acm-controller/1.0.0/manifests/ack-acm-reader_rbac.authorization.k8s.io_v1_role.yaml new file mode 100644 index 00000000000..d1ec1dc41ee --- /dev/null +++ b/operators/ack-acm-controller/1.0.0/manifests/ack-acm-reader_rbac.authorization.k8s.io_v1_role.yaml @@ -0,0 +1,14 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + creationTimestamp: null + name: ack-acm-reader +rules: +- apiGroups: + - acm.services.k8s.aws + resources: + - certificates + verbs: + - get + - list + - watch diff --git a/operators/ack-acm-controller/1.0.0/manifests/ack-acm-writer_rbac.authorization.k8s.io_v1_role.yaml b/operators/ack-acm-controller/1.0.0/manifests/ack-acm-writer_rbac.authorization.k8s.io_v1_role.yaml new file mode 100644 index 00000000000..8df05bc3233 --- /dev/null +++ b/operators/ack-acm-controller/1.0.0/manifests/ack-acm-writer_rbac.authorization.k8s.io_v1_role.yaml @@ -0,0 +1,26 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + creationTimestamp: null + name: ack-acm-writer +rules: +- apiGroups: + - acm.services.k8s.aws + resources: + - certificates + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - acm.services.k8s.aws + resources: + - certificates + verbs: + - get + - patch + - update diff --git a/operators/ack-acm-controller/1.0.0/manifests/acm.services.k8s.aws_certificates.yaml b/operators/ack-acm-controller/1.0.0/manifests/acm.services.k8s.aws_certificates.yaml new file mode 100644 index 00000000000..b8aa82943a1 --- /dev/null +++ b/operators/ack-acm-controller/1.0.0/manifests/acm.services.k8s.aws_certificates.yaml @@ -0,0 +1,512 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.2 + creationTimestamp: null + name: certificates.acm.services.k8s.aws +spec: + group: acm.services.k8s.aws + names: + kind: Certificate + listKind: CertificateList + plural: certificates + singular: certificate + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: Certificate is the Schema for the Certificates API + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: CertificateSpec defines the desired state of Certificate. + properties: + certificate: + description: |- + The Certificate to import into AWS Certificate Manager (ACM) to use with services that are integrated with ACM. + This field is only valid when importing an existing certificate into ACM. + properties: + key: + description: Key is the key within the secret + type: string + name: + description: name is unique within a namespace to reference a + secret resource. + type: string + namespace: + description: namespace defines the space within which the secret + name must be unique. + type: string + required: + - key + type: object + x-kubernetes-map-type: atomic + certificateARN: + description: |- + The Amazon Resource Name (ARN) of an imported certificate to replace. This field is only valid when importing + an existing certificate into ACM. + type: string + certificateAuthorityARN: + description: |- + The Amazon Resource Name (ARN) of the private certificate authority (CA) + that will be used to issue the certificate. If you do not provide an ARN + and you are trying to request a private certificate, ACM will attempt to + issue a public certificate. For more information about private CAs, see the + Amazon Web Services Private Certificate Authority (https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html) + user guide. The ARN must have the following form: + + arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012 + type: string + certificateAuthorityRef: + description: "AWSResourceReferenceWrapper provides a wrapper around + *AWSResourceReference\ntype to provide more user friendly syntax + for references using 'from' field\nEx:\nAPIIDRef:\n\n\tfrom:\n\t + \ name: my-api" + properties: + from: + description: |- + AWSResourceReference provides all the values necessary to reference another + k8s resource for finding the identifier(Id/ARN/Name) + properties: + name: + type: string + namespace: + type: string + type: object + type: object + certificateChain: + description: |- + SecretKeyReference combines a k8s corev1.SecretReference with a + specific key within the referred-to Secret + properties: + key: + description: Key is the key within the secret + type: string + name: + description: name is unique within a namespace to reference a + secret resource. + type: string + namespace: + description: namespace defines the space within which the secret + name must be unique. + type: string + required: + - key + type: object + x-kubernetes-map-type: atomic + domainName: + description: |- + Fully qualified domain name (FQDN), such as www.example.com, that you want + to secure with an ACM certificate. Use an asterisk (*) to create a wildcard + certificate that protects several sites in the same domain. For example, + *.example.com protects www.example.com, site.example.com, and images.example.com. + + In compliance with RFC 5280 (https://datatracker.ietf.org/doc/html/rfc5280), + the length of the domain name (technically, the Common Name) that you provide + cannot exceed 64 octets (characters), including periods. To add a longer + domain name, specify it in the Subject Alternative Name field, which supports + names up to 253 octets in length. + type: string + domainValidationOptions: + description: |- + The domain name that you want ACM to use to send you emails so that you can + validate domain ownership. + items: + description: |- + Contains information about the domain names that you want ACM to use to send + you emails that enable you to validate domain ownership. + properties: + domainName: + type: string + validationDomain: + type: string + type: object + type: array + keyAlgorithm: + description: |- + Specifies the algorithm of the public and private key pair that your certificate + uses to encrypt data. RSA is the default key algorithm for ACM certificates. + Elliptic Curve Digital Signature Algorithm (ECDSA) keys are smaller, offering + security comparable to RSA keys but with greater computing efficiency. However, + ECDSA is not supported by all network clients. Some AWS services may require + RSA keys, or only support ECDSA keys of a particular size, while others allow + the use of either RSA and ECDSA keys to ensure that compatibility is not + broken. Check the requirements for the AWS service where you plan to deploy + your certificate. + + Default: RSA_2048 + type: string + options: + description: |- + Currently, you can use this parameter to specify whether to add the certificate + to a certificate transparency log. Certificate transparency makes it possible + to detect SSL/TLS certificates that have been mistakenly or maliciously issued. + Certificates that have not been logged typically produce an error message + in a browser. For more information, see Opting Out of Certificate Transparency + Logging (https://docs.aws.amazon.com/acm/latest/userguide/acm-bestpractices.html#best-practices-transparency). + properties: + certificateTransparencyLoggingPreference: + type: string + type: object + privateKey: + description: |- + The private key that matches the public key in the certificate. This field is only valid when importing + an existing certificate into ACM. + properties: + key: + description: Key is the key within the secret + type: string + name: + description: name is unique within a namespace to reference a + secret resource. + type: string + namespace: + description: namespace defines the space within which the secret + name must be unique. + type: string + required: + - key + type: object + x-kubernetes-map-type: atomic + subjectAlternativeNames: + description: |- + Additional FQDNs to be included in the Subject Alternative Name extension + of the ACM certificate. For example, add the name www.example.net to a certificate + for which the DomainName field is www.example.com if users can reach your + site by using either name. The maximum number of domain names that you can + add to an ACM certificate is 100. However, the initial quota is 10 domain + names. If you need more than 10 names, you must request a quota increase. + For more information, see Quotas (https://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html). + + The maximum length of a SAN DNS name is 253 octets. The name is made up of + multiple labels separated by periods. No label can be longer than 63 octets. + Consider the following examples: + + * (63 octets).(63 octets).(63 octets).(61 octets) is legal because the + total length is 253 octets (63+1+63+1+63+1+61) and no label exceeds 63 + octets. + + * (64 octets).(63 octets).(63 octets).(61 octets) is not legal because + the total length exceeds 253 octets (64+1+63+1+63+1+61) and the first + label exceeds 63 octets. + + * (63 octets).(63 octets).(63 octets).(62 octets) is not legal because + the total length of the DNS name (63+1+63+1+63+1+62) exceeds 253 octets. + items: + type: string + type: array + tags: + description: One or more resource tags to associate with the certificate. + items: + description: A key-value pair that identifies or specifies metadata + about an ACM resource. + properties: + key: + type: string + value: + type: string + type: object + type: array + type: object + status: + description: CertificateStatus defines the observed state of Certificate + properties: + ackResourceMetadata: + description: |- + All CRs managed by ACK have a common `Status.ACKResourceMetadata` member + that is used to contain resource sync state, account ownership, + constructed ARN for the resource + properties: + arn: + description: |- + ARN is the Amazon Resource Name for the resource. This is a + globally-unique identifier and is set only by the ACK service controller + once the controller has orchestrated the creation of the resource OR + when it has verified that an "adopted" resource (a resource where the + ARN annotation was set by the Kubernetes user on the CR) exists and + matches the supplied CR's Spec field values. + https://github.com/aws/aws-controllers-k8s/issues/270 + type: string + ownerAccountID: + description: |- + OwnerAccountID is the AWS Account ID of the account that owns the + backend AWS service API resource. + type: string + region: + description: Region is the AWS region in which the resource exists + or will exist. + type: string + required: + - ownerAccountID + - region + type: object + conditions: + description: |- + All CRS managed by ACK have a common `Status.Conditions` member that + contains a collection of `ackv1alpha1.Condition` objects that describe + the various terminal states of the CR and its backend AWS service API + resource + items: + description: |- + Condition is the common struct used by all CRDs managed by ACK service + controllers to indicate terminal states of the CR and its backend AWS + service API resource + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type is the type of the Condition + type: string + required: + - status + - type + type: object + type: array + createdAt: + description: The time at which the certificate was requested. + format: date-time + type: string + domainValidations: + description: |- + Contains information about the initial validation of each domain name that + occurs as a result of the RequestCertificate request. This field exists only + when the certificate type is AMAZON_ISSUED. + items: + description: Contains information about the validation of each domain + name in the certificate. + properties: + domainName: + type: string + resourceRecord: + description: |- + Contains a DNS record value that you can use to validate ownership or control + of a domain. This is used by the DescribeCertificate action. + properties: + name: + type: string + type_: + type: string + value: + type: string + type: object + validationDomain: + type: string + validationEmails: + items: + type: string + type: array + validationMethod: + type: string + validationStatus: + type: string + type: object + type: array + extendedKeyUsages: + description: |- + Contains a list of Extended Key Usage X.509 v3 extension objects. Each object + specifies a purpose for which the certificate public key can be used and + consists of a name and an object identifier (OID). + items: + description: |- + The Extended Key Usage X.509 v3 extension defines one or more purposes for + which the public key can be used. This is in addition to or in place of the + basic purposes specified by the Key Usage extension. + properties: + name: + type: string + oid: + type: string + type: object + type: array + failureReason: + description: |- + The reason the certificate request failed. This value exists only when the + certificate status is FAILED. For more information, see Certificate Request + Failed (https://docs.aws.amazon.com/acm/latest/userguide/troubleshooting.html#troubleshooting-failed) + in the Certificate Manager User Guide. + type: string + importedAt: + description: |- + The date and time when the certificate was imported. This value exists only + when the certificate type is IMPORTED. + format: date-time + type: string + inUseBy: + description: |- + A list of ARNs for the Amazon Web Services resources that are using the certificate. + A certificate can be used by multiple Amazon Web Services resources. + items: + type: string + type: array + issuedAt: + description: |- + The time at which the certificate was issued. This value exists only when + the certificate type is AMAZON_ISSUED. + format: date-time + type: string + issuer: + description: The name of the certificate authority that issued and + signed the certificate. + type: string + keyUsages: + description: |- + A list of Key Usage X.509 v3 extension objects. Each object is a string value + that identifies the purpose of the public key contained in the certificate. + Possible extension values include DIGITAL_SIGNATURE, KEY_ENCHIPHERMENT, NON_REPUDIATION, + and more. + items: + description: |- + The Key Usage X.509 v3 extension defines the purpose of the public key contained + in the certificate. + properties: + name: + type: string + type: object + type: array + notAfter: + description: The time after which the certificate is not valid. + format: date-time + type: string + notBefore: + description: The time before which the certificate is not valid. + format: date-time + type: string + renewalEligibility: + description: |- + Specifies whether the certificate is eligible for renewal. At this time, + only exported private certificates can be renewed with the RenewCertificate + command. + type: string + renewalSummary: + description: |- + Contains information about the status of ACM's managed renewal (https://docs.aws.amazon.com/acm/latest/userguide/acm-renewal.html) + for the certificate. This field exists only when the certificate type is + AMAZON_ISSUED. + properties: + domainValidationOptions: + items: + description: Contains information about the validation of each + domain name in the certificate. + properties: + domainName: + type: string + resourceRecord: + description: |- + Contains a DNS record value that you can use to validate ownership or control + of a domain. This is used by the DescribeCertificate action. + properties: + name: + type: string + type_: + type: string + value: + type: string + type: object + validationDomain: + type: string + validationEmails: + items: + type: string + type: array + validationMethod: + type: string + validationStatus: + type: string + type: object + type: array + renewalStatus: + type: string + renewalStatusReason: + type: string + updatedAt: + format: date-time + type: string + type: object + revocationReason: + description: |- + The reason the certificate was revoked. This value exists only when the certificate + status is REVOKED. + type: string + revokedAt: + description: |- + The time at which the certificate was revoked. This value exists only when + the certificate status is REVOKED. + format: date-time + type: string + serial: + description: The serial number of the certificate. + type: string + signatureAlgorithm: + description: The algorithm that was used to sign the certificate. + type: string + status: + description: |- + The status of the certificate. + + A certificate enters status PENDING_VALIDATION upon being requested, unless + it fails for any of the reasons given in the troubleshooting topic Certificate + request fails (https://docs.aws.amazon.com/acm/latest/userguide/troubleshooting-failed.html). + ACM makes repeated attempts to validate a certificate for 72 hours and then + times out. If a certificate shows status FAILED or VALIDATION_TIMED_OUT, + delete the request, correct the issue with DNS validation (https://docs.aws.amazon.com/acm/latest/userguide/dns-validation.html) + or Email validation (https://docs.aws.amazon.com/acm/latest/userguide/email-validation.html), + and try again. If validation succeeds, the certificate enters status ISSUED. + type: string + subject: + description: |- + The name of the entity that is associated with the public key contained in + the certificate. + type: string + type_: + description: |- + The source of the certificate. For certificates provided by ACM, this value + is AMAZON_ISSUED. For certificates that you imported with ImportCertificate, + this value is IMPORTED. ACM does not provide managed renewal (https://docs.aws.amazon.com/acm/latest/userguide/acm-renewal.html) + for imported certificates. For more information about the differences between + certificates that you import and those that ACM provides, see Importing Certificates + (https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) + in the Certificate Manager User Guide. + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/ack-acm-controller/1.0.0/metadata/annotations.yaml b/operators/ack-acm-controller/1.0.0/metadata/annotations.yaml new file mode 100644 index 00000000000..b72495ea871 --- /dev/null +++ b/operators/ack-acm-controller/1.0.0/metadata/annotations.yaml @@ -0,0 +1,15 @@ +annotations: + # Core bundle annotations. + operators.operatorframework.io.bundle.mediatype.v1: registry+v1 + operators.operatorframework.io.bundle.manifests.v1: manifests/ + operators.operatorframework.io.bundle.metadata.v1: metadata/ + operators.operatorframework.io.bundle.package.v1: ack-acm-controller + operators.operatorframework.io.bundle.channels.v1: alpha + operators.operatorframework.io.bundle.channel.default.v1: alpha + operators.operatorframework.io.metrics.builder: operator-sdk-v1.28.0 + operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 + operators.operatorframework.io.metrics.project_layout: unknown + + # Annotations for testing. + operators.operatorframework.io.test.mediatype.v1: scorecard+v1 + operators.operatorframework.io.test.config.v1: tests/scorecard/ diff --git a/operators/ack-acm-controller/1.0.0/tests/scorecard/config.yaml b/operators/ack-acm-controller/1.0.0/tests/scorecard/config.yaml new file mode 100644 index 00000000000..382ddefd156 --- /dev/null +++ b/operators/ack-acm-controller/1.0.0/tests/scorecard/config.yaml @@ -0,0 +1,50 @@ +apiVersion: scorecard.operatorframework.io/v1alpha3 +kind: Configuration +metadata: + name: config +stages: +- parallel: true + tests: + - entrypoint: + - scorecard-test + - basic-check-spec + image: quay.io/operator-framework/scorecard-test:v1.7.1 + labels: + suite: basic + test: basic-check-spec-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-bundle-validation + image: quay.io/operator-framework/scorecard-test:v1.7.1 + labels: + suite: olm + test: olm-bundle-validation-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-crds-have-validation + image: quay.io/operator-framework/scorecard-test:v1.7.1 + labels: + suite: olm + test: olm-crds-have-validation-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-spec-descriptors + image: quay.io/operator-framework/scorecard-test:v1.7.1 + labels: + suite: olm + test: olm-spec-descriptors-test + storage: + spec: + mountPath: {} +storage: + spec: + mountPath: {}