From 07215624be65d31f5ce5d178981291dd35f6c550 Mon Sep 17 00:00:00 2001 From: Jose Riguera Date: Thu, 14 Mar 2024 10:48:23 +0100 Subject: [PATCH] Add dist folder as alternative install and update readme Co-authored-by: Cem Deniz Kabakci --- README.md | 5 + dist/install.yaml | 384 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 389 insertions(+) create mode 100644 dist/install.yaml diff --git a/README.md b/README.md index ee2a1af..8119517 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ K8S controller to manage Mimir Alerting and Recording rules with dynamic tenants 1. Follow the instructions at https://springernature.github.io/o11y-rules-telemetry-operator 2. See all available settings in the Chart: https://github.com/springernature/o11y-rules-telemetry-operator/blob/main/charts/Readme.md +Alternatively, the controller and CRDs can be installed directly with `kubectl apply -f dist/install.yaml` + ## Description Given a MimirRules CR: @@ -74,6 +76,9 @@ make docker-build docker-push IMG=ghcr.io/springernature/o11y-rules-telemetry-op # Deploys the kustomization to the K8s cluster (all files created in config) make deploy IMG=ghcr.io/springernature/o11y-rules-telemetry-operator/mimirrules-controller:$TAG + +# Generate a consolidated YAML with CRDs and deployment. +make build-installer ``` ## Building a new Chart and Docker image version diff --git a/dist/install.yaml b/dist/install.yaml new file mode 100644 index 0000000..32f8d41 --- /dev/null +++ b/dist/install.yaml @@ -0,0 +1,384 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + name: mimirrules.mimirrules.telemetry.springernature.com +spec: + group: mimirrules.telemetry.springernature.com + names: + kind: MimirRules + listKind: MimirRulesList + plural: mimirrules + singular: mimirrules + scope: Namespaced + versions: + - name: v1beta1 + schema: + openAPIV3Schema: + description: MimirRules is the Schema for the mimirrules 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: MimirRulesSpec defines the desired state of MimirRules + properties: + groups: + description: 'Important: Run "make" to regenerate code after modifying + this file' + items: + properties: + name: + description: 'Important: Run "make" to regenerate code after + modifying this file' + type: string + rules: + x-kubernetes-preserve-unknown-fields: true + required: + - name + - rules + type: object + type: array + required: + - groups + type: object + status: + description: MimirRulesStatus defines the observed state of MimirRules + properties: + Errors: + type: integer + GroupsStatus: + additionalProperties: + type: string + description: 'Important: Run "make" to regenerate code after modifying + this file' + type: object + LastUpdate: + type: string + Tenant: + type: string + required: + - Errors + - GroupsStatus + - LastUpdate + - Tenant + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +apiVersion: v1 +kind: Namespace +metadata: + labels: + app.kubernetes.io/component: manager + app.kubernetes.io/created-by: o11y-rules-telemetry-operator + app.kubernetes.io/instance: system + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: namespace + app.kubernetes.io/part-of: o11y-rules-telemetry-operator + control-plane: controller-manager + name: o11y-rules-telemetry-operator-system +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + name: mimirrules.mimirrules.telemetry.springernature.com +spec: + group: mimirrules.telemetry.springernature.com + names: + kind: MimirRules + listKind: MimirRulesList + plural: mimirrules + singular: mimirrules + scope: Namespaced + versions: + - name: v1beta1 + schema: + openAPIV3Schema: + description: MimirRules is the Schema for the mimirrules 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: MimirRulesSpec defines the desired state of MimirRules + properties: + groups: + description: 'Important: Run "make" to regenerate code after modifying + this file' + items: + properties: + name: + description: 'Important: Run "make" to regenerate code after + modifying this file' + type: string + rules: + x-kubernetes-preserve-unknown-fields: true + required: + - name + - rules + type: object + type: array + required: + - groups + type: object + status: + description: MimirRulesStatus defines the observed state of MimirRules + properties: + Errors: + type: integer + GroupsStatus: + additionalProperties: + type: string + description: 'Important: Run "make" to regenerate code after modifying + this file' + type: object + LastUpdate: + type: string + Tenant: + type: string + required: + - Errors + - GroupsStatus + - LastUpdate + - Tenant + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app.kubernetes.io/component: rbac + app.kubernetes.io/created-by: o11y-rules-telemetry-operator + app.kubernetes.io/instance: controller-manager-sa + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: serviceaccount + app.kubernetes.io/part-of: o11y-rules-telemetry-operator + name: o11y-rules-oper-controller-manager + namespace: o11y-rules-telemetry-operator-system +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + labels: + app.kubernetes.io/component: rbac + app.kubernetes.io/created-by: o11y-rules-telemetry-operator + app.kubernetes.io/instance: leader-election-role + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: role + app.kubernetes.io/part-of: o11y-rules-telemetry-operator + name: o11y-rules-oper-leader-election-role + namespace: o11y-rules-telemetry-operator-system +rules: +- apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - "" + resources: + - events + verbs: + - create + - patch +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: o11y-rules-oper-manager-role +rules: +- apiGroups: + - mimirrules.telemetry.springernature.com + resources: + - mimirrules + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - mimirrules.telemetry.springernature.com + resources: + - mimirrules/finalizers + verbs: + - update +- apiGroups: + - mimirrules.telemetry.springernature.com + resources: + - mimirrules/status + verbs: + - get + - patch + - update +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + labels: + app.kubernetes.io/component: rbac + app.kubernetes.io/created-by: o11y-rules-telemetry-operator + app.kubernetes.io/instance: leader-election-rolebinding + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: rolebinding + app.kubernetes.io/part-of: o11y-rules-telemetry-operator + name: o11y-rules-oper-leader-election-rolebinding + namespace: o11y-rules-telemetry-operator-system +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: o11y-rules-oper-leader-election-role +subjects: +- kind: ServiceAccount + name: o11y-rules-oper-controller-manager + namespace: o11y-rules-telemetry-operator-system +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + app.kubernetes.io/component: rbac + app.kubernetes.io/created-by: o11y-rules-telemetry-operator + app.kubernetes.io/instance: manager-rolebinding + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: clusterrolebinding + app.kubernetes.io/part-of: o11y-rules-telemetry-operator + name: o11y-rules-oper-manager-rolebinding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: o11y-rules-oper-manager-role +subjects: +- kind: ServiceAccount + name: o11y-rules-oper-controller-manager + namespace: o11y-rules-telemetry-operator-system +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/component: manager + app.kubernetes.io/created-by: o11y-rules-telemetry-operator + app.kubernetes.io/instance: controller-manager + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: deployment + app.kubernetes.io/part-of: o11y-rules-telemetry-operator + control-plane: controller-manager + name: o11y-rules-oper-controller-manager + namespace: o11y-rules-telemetry-operator-system +spec: + replicas: 1 + selector: + matchLabels: + control-plane: controller-manager + template: + metadata: + annotations: + kubectl.kubernetes.io/default-container: manager + labels: + control-plane: controller-manager + spec: + containers: + - args: + - --leader-elect + command: + - /manager + env: + - name: CONTROLLER_MIMIR_API + value: http://mimir-gateway.o11y-dev-metrics-mimir.svc.cluster.local/prometheus + - name: CONTROLLER_CR_MIMIR_TENANT_ANNOTATION + value: telemetry.springernature.com/o11y-tenant + - name: CONTROLLER_CR_SELECTOR + value: "" + image: ghcr.io/springernature/o11y-rules-telemetry-operator/mimirrules-controller:latest + imagePullPolicy: Always + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + name: manager + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 10m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + securityContext: + runAsNonRoot: true + serviceAccountName: o11y-rules-oper-controller-manager + terminationGracePeriodSeconds: 10