From 772b18afd922f0aeb5f3f232455b59d76e44333f Mon Sep 17 00:00:00 2001 From: Steven Fitzpatrick Date: Tue, 2 Mar 2021 18:07:29 +0000 Subject: [PATCH] Create an 'LMA-Infra' Composite This composite deploys the logging and prometheus operators such that they are ready to collect logs and metrics from a k8s cluster. The operators can be extended by introducing custom resources, allowing any application running in the cluster to use these services Note: Due to [0], this composite cannot be successfully deployed in the initinfra-target phase, so a separate 'lma-infra' phase is introduced [0] https://github.com/airshipit/airshipctl/issues/474 Change-Id: Ia20cc7bdaeb2b2f52ba4bcdc8e55a202ef4b0110 --- manifests/composite/lma-infra/README.md | 5 ++ .../composite/lma-infra/kustomization.yaml | 11 +++++ manifests/composite/lma-infra/namespace.yaml | 4 ++ .../patches/kube-prometheus-stack.yaml | 42 +++++++++++++++++ .../lma-infra/patches/logging-operator.yaml | 15 ++++++ .../lma-infra/patches/logging-spec.yaml | 47 +++++++++++++++++++ .../logging-operator/helmrelease-logging.yaml | 19 ++++++++ ...release.yaml => helmrelease-operator.yaml} | 1 - .../logging-operator/kustomization.yaml | 3 +- .../target/lma-infra/kustomization.yaml | 2 + .../airship-core/phases/kustomization.yaml | 1 + .../airship-core/phases/lma-infra-target.yaml | 11 +++++ .../target/initinfra/kustomization.yaml | 1 + .../31_deploy_initinfra_target_node.sh | 2 + 14 files changed, 162 insertions(+), 2 deletions(-) create mode 100644 manifests/composite/lma-infra/README.md create mode 100644 manifests/composite/lma-infra/kustomization.yaml create mode 100644 manifests/composite/lma-infra/namespace.yaml create mode 100644 manifests/composite/lma-infra/patches/kube-prometheus-stack.yaml create mode 100644 manifests/composite/lma-infra/patches/logging-operator.yaml create mode 100644 manifests/composite/lma-infra/patches/logging-spec.yaml create mode 100644 manifests/function/logging-operator/helmrelease-logging.yaml rename manifests/function/logging-operator/{helmrelease.yaml => helmrelease-operator.yaml} (96%) create mode 100644 manifests/site/test-site/target/lma-infra/kustomization.yaml create mode 100644 manifests/type/airship-core/phases/lma-infra-target.yaml diff --git a/manifests/composite/lma-infra/README.md b/manifests/composite/lma-infra/README.md new file mode 100644 index 000000000..6256efcff --- /dev/null +++ b/manifests/composite/lma-infra/README.md @@ -0,0 +1,5 @@ +# LMA Infra + +This composite deploys the logging-operator and kube-prometheus-stack, +configured to provide basic LMA facilities to a cluster. Application Logs and +metrics can be collected by supplying the operators CRs. diff --git a/manifests/composite/lma-infra/kustomization.yaml b/manifests/composite/lma-infra/kustomization.yaml new file mode 100644 index 000000000..05ac67606 --- /dev/null +++ b/manifests/composite/lma-infra/kustomization.yaml @@ -0,0 +1,11 @@ +resources: + - namespace.yaml + - ../../function/logging-operator + - ../../function/kube-prometheus-stack + +namespace: lma-infra + +patches: + - path: patches/kube-prometheus-stack.yaml + - path: patches/logging-operator.yaml + - path: patches/logging-spec.yaml diff --git a/manifests/composite/lma-infra/namespace.yaml b/manifests/composite/lma-infra/namespace.yaml new file mode 100644 index 000000000..22df02fd9 --- /dev/null +++ b/manifests/composite/lma-infra/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: lma-infra diff --git a/manifests/composite/lma-infra/patches/kube-prometheus-stack.yaml b/manifests/composite/lma-infra/patches/kube-prometheus-stack.yaml new file mode 100644 index 000000000..340ef2424 --- /dev/null +++ b/manifests/composite/lma-infra/patches/kube-prometheus-stack.yaml @@ -0,0 +1,42 @@ +apiVersion: "helm.toolkit.fluxcd.io/v2beta1" +kind: HelmRelease +metadata: + name: kube-prometheus-stack +spec: + releaseName: lma-infra-monitoring + values: + fullnameOverride: lma-infra-monitoring + grafana: + enabled: false + prometheus: + prometheusSpec: + serviceMonitorSelectorNilUsesHelmValues: false + tolerations: + - key: node-role.kubernetes.io/master + effect: NoSchedule + + prometheusOperator: + admissionWebhooks: + patch: + tolerations: + - key: node-role.kubernetes.io/master + effect: NoSchedule + tolerations: + - key: node-role.kubernetes.io/master + effect: NoSchedule + + alertmanager: + alertmanagerSpec: + tolerations: + - key: node-role.kubernetes.io/master + effect: NoSchedule + + prometheus-node-exporter: + tolerations: + - key: node-role.kubernetes.io/master + effect: NoSchedule + + kube-state-metrics: + tolerations: + - key: node-role.kubernetes.io/master + effect: NoSchedule diff --git a/manifests/composite/lma-infra/patches/logging-operator.yaml b/manifests/composite/lma-infra/patches/logging-operator.yaml new file mode 100644 index 000000000..a0625eba9 --- /dev/null +++ b/manifests/composite/lma-infra/patches/logging-operator.yaml @@ -0,0 +1,15 @@ +apiVersion: "helm.toolkit.fluxcd.io/v2beta1" +kind: HelmRelease +metadata: + name: logging-operator +spec: + dependsOn: + - name: kube-prometheus-stack + values: + fullnameOverride: lma-infra-logging-operator + monitoring: + serviceMonitor: + enabled: true + tolerations: + - key: node-role.kubernetes.io/master + effect: NoSchedule diff --git a/manifests/composite/lma-infra/patches/logging-spec.yaml b/manifests/composite/lma-infra/patches/logging-spec.yaml new file mode 100644 index 000000000..a5d61dc3e --- /dev/null +++ b/manifests/composite/lma-infra/patches/logging-spec.yaml @@ -0,0 +1,47 @@ +apiVersion: "helm.toolkit.fluxcd.io/v2beta1" +kind: HelmRelease +metadata: + name: logging-operator-logging +spec: + releaseName: lma-infra-logging + dependsOn: + - name: logging-operator + # Reference values at + # https://github.com/banzaicloud/logging-operator/blob/master/charts/logging-operator-logging/values.yaml + values: + controlNamespace: lma-infra + loggingRef: lma-infra-logging + nameOverride: lma-infra-logging + fullnameOverride: lma-infra-logging + fluentbit: + tolerations: + - key: node-role.kubernetes.io/master + effect: NoSchedule + metrics: + serviceMonitor: true + fluentd: + fluentLogDestination: stdout + disablePvc: true + metrics: + serviceMonitor: true + tolerations: + - key: node-role.kubernetes.io/master + effect: NoSchedule + clusterFlows: + - name: all-pods + spec: + globalOutputRefs: + - elasticsearch + clusterOutputs: + - name: elasticsearch + spec: + elasticsearch: + host: elasticsearch-elasticsearch-cluster.default.svc.cluster.local + port: 9200 + scheme: https + ssl_verify: false + ssl_version: TLSv1_2 + buffer: + timekey: 1m + timekey_wait: 30s + timekey_use_utc: true diff --git a/manifests/function/logging-operator/helmrelease-logging.yaml b/manifests/function/logging-operator/helmrelease-logging.yaml new file mode 100644 index 000000000..5d78ef1bd --- /dev/null +++ b/manifests/function/logging-operator/helmrelease-logging.yaml @@ -0,0 +1,19 @@ +apiVersion: "helm.toolkit.fluxcd.io/v2beta1" +kind: HelmRelease +metadata: + name: logging-operator-logging +spec: + releaseName: logging-operator-logging + interval: 5m + chart: + spec: + chart: logging-operator-logging + sourceRef: + kind: HelmRepository + name: banzaicloud + version: 3.8.3 + interval: 1m + timeout: 5m + # Reference values at + # https://github.com/banzaicloud/logging-operator/blob/master/charts/logging-operator-logging/values.yaml + values: {} diff --git a/manifests/function/logging-operator/helmrelease.yaml b/manifests/function/logging-operator/helmrelease-operator.yaml similarity index 96% rename from manifests/function/logging-operator/helmrelease.yaml rename to manifests/function/logging-operator/helmrelease-operator.yaml index dbb099b61..e51b33e4e 100644 --- a/manifests/function/logging-operator/helmrelease.yaml +++ b/manifests/function/logging-operator/helmrelease-operator.yaml @@ -2,7 +2,6 @@ apiVersion: "helm.toolkit.fluxcd.io/v2beta1" kind: HelmRelease metadata: name: logging-operator - namespace: logging spec: releaseName: logging-operator interval: 5m diff --git a/manifests/function/logging-operator/kustomization.yaml b/manifests/function/logging-operator/kustomization.yaml index 2e8ba2676..a5f888bf5 100644 --- a/manifests/function/logging-operator/kustomization.yaml +++ b/manifests/function/logging-operator/kustomization.yaml @@ -2,6 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - helmrepository.yaml - - helmrelease.yaml + - helmrelease-operator.yaml + - helmrelease-logging.yaml namespace: logging diff --git a/manifests/site/test-site/target/lma-infra/kustomization.yaml b/manifests/site/test-site/target/lma-infra/kustomization.yaml new file mode 100644 index 000000000..0d8b3feff --- /dev/null +++ b/manifests/site/test-site/target/lma-infra/kustomization.yaml @@ -0,0 +1,2 @@ +resources: + - ../../../../composite/lma-infra diff --git a/manifests/type/airship-core/phases/kustomization.yaml b/manifests/type/airship-core/phases/kustomization.yaml index 865393d92..4ed8ec7d5 100644 --- a/manifests/type/airship-core/phases/kustomization.yaml +++ b/manifests/type/airship-core/phases/kustomization.yaml @@ -1,2 +1,3 @@ resources: - ../../../../../airshipctl/manifests/phases/ + - lma-infra-target.yaml \ No newline at end of file diff --git a/manifests/type/airship-core/phases/lma-infra-target.yaml b/manifests/type/airship-core/phases/lma-infra-target.yaml new file mode 100644 index 000000000..047f43cce --- /dev/null +++ b/manifests/type/airship-core/phases/lma-infra-target.yaml @@ -0,0 +1,11 @@ +apiVersion: airshipit.org/v1alpha1 +kind: Phase +metadata: + name: lma-infra-target + clusterName: target-cluster +config: + executorRef: + apiVersion: airshipit.org/v1alpha1 + kind: KubernetesApply + name: kubernetes-apply + documentEntryPoint: target/lma-infra diff --git a/manifests/type/airship-core/target/initinfra/kustomization.yaml b/manifests/type/airship-core/target/initinfra/kustomization.yaml index 155222b98..a6280ceeb 100644 --- a/manifests/type/airship-core/target/initinfra/kustomization.yaml +++ b/manifests/type/airship-core/target/initinfra/kustomization.yaml @@ -3,5 +3,6 @@ resources: - ../../../../../../airshipctl/manifests/function/hwcc - ../../../../function/clusterctl - ../../../../../../airshipctl/manifests/composite/flux-helm/ + commonLabels: airshipit.org/stage: initinfra diff --git a/tools/deployment/31_deploy_initinfra_target_node.sh b/tools/deployment/31_deploy_initinfra_target_node.sh index 78bcea9c6..50fadbdf8 100755 --- a/tools/deployment/31_deploy_initinfra_target_node.sh +++ b/tools/deployment/31_deploy_initinfra_target_node.sh @@ -28,3 +28,5 @@ kubectl \ label node $NODENAME node-type=controlplane ./tools/deployment/31_deploy_initinfra_target_node.sh + +airshipctl phase run lma-infra-target --debug