diff --git a/docs/gitbook/tutorials/kuma-progressive-delivery.md b/docs/gitbook/tutorials/kuma-progressive-delivery.md index 7d556057d..b09133c88 100644 --- a/docs/gitbook/tutorials/kuma-progressive-delivery.md +++ b/docs/gitbook/tutorials/kuma-progressive-delivery.md @@ -6,13 +6,13 @@ This guide shows you how to use Kuma and Flagger to automate canary deployments. ## Prerequisites -Flagger requires a Kubernetes cluster **v1.16** or newer and Kuma **1.3** or newer. +Flagger requires a Kubernetes cluster **v1.19** or newer and Kuma **1.7** or newer. Install Kuma and Prometheus (part of Kuma Metrics): ```bash kumactl install control-plane | kubectl apply -f - -kumactl install metrics | kubectl apply -f - +kumactl install observability --components "grafana,prometheus" | kubectl apply -f - ``` Install Flagger in the `kuma-system` namespace: diff --git a/kustomize/kuma/kustomization.yaml b/kustomize/kuma/kustomization.yaml index bdd2d17a1..e17f64b06 100644 --- a/kustomize/kuma/kustomization.yaml +++ b/kustomize/kuma/kustomization.yaml @@ -3,3 +3,5 @@ bases: - ../base/flagger/ patchesStrategicMerge: - patch.yaml +resources: + - mesh.yaml diff --git a/kustomize/kuma/mesh.yaml b/kustomize/kuma/mesh.yaml new file mode 100644 index 000000000..b987857b6 --- /dev/null +++ b/kustomize/kuma/mesh.yaml @@ -0,0 +1,10 @@ +apiVersion: kuma.io/v1alpha1 +kind: Mesh +metadata: + name: default +spec: + metrics: + enabledBackend: prometheus-1 + backends: + - name: prometheus-1 + type: prometheus diff --git a/kustomize/kuma/patch.yaml b/kustomize/kuma/patch.yaml index cbcc4f880..08ddacd74 100644 --- a/kustomize/kuma/patch.yaml +++ b/kustomize/kuma/patch.yaml @@ -11,4 +11,4 @@ spec: - -log-level=info - -include-label-prefix=app.kubernetes.io - -mesh-provider=kuma - - -metrics-server=http://prometheus-server.kuma-metrics:80 + - -metrics-server=http://prometheus-server.mesh-observability:80 diff --git a/test/kuma/install.sh b/test/kuma/install.sh index 848b5d3e9..fcf0db8ae 100755 --- a/test/kuma/install.sh +++ b/test/kuma/install.sh @@ -2,9 +2,8 @@ set -o errexit -KUMA_VER="1.6.0" +KUMA_VER="2.1.0" REPO_ROOT=$(git rev-parse --show-toplevel) -KUSTOMIZE_VERSION=3.8.2 mkdir -p ${REPO_ROOT}/bin echo ">>> Downloading Kuma ${KUMA_VER}" @@ -20,46 +19,12 @@ echo ">>> Waiting for Kuma Control Plane to be ready" kubectl wait --for condition=established crd/meshes.kuma.io kubectl -n kuma-system rollout status deployment/kuma-control-plane -echo ">>> Configuring Default Kuma Mesh" -cat <>> Installing Kustomize' -cd ${REPO_ROOT}/bin && kustomize_url=https://github.com/kubernetes-sigs/kustomize/releases/download && \ -curl -sL ${kustomize_url}/kustomize%2Fv${KUSTOMIZE_VERSION}/kustomize_v${KUSTOMIZE_VERSION}_linux_amd64.tar.gz | \ -tar xz +echo ">>> Installing Prometheus" +${REPO_ROOT}/bin/kumactl install observability --components "prometheus" | kubectl apply -f - +kubectl -n mesh-observability rollout status deployment/prometheus-server echo '>>> Installing Flagger' -${REPO_ROOT}/bin/kustomize build ${REPO_ROOT}/test/kuma | kubectl apply -f - +kubectl apply -k ${REPO_ROOT}/kustomize/kuma kubectl -n kuma-system set image deployment/flagger flagger=test/flagger:latest kubectl -n kuma-system rollout status deployment/flagger diff --git a/test/kuma/kustomization.yaml b/test/kuma/kustomization.yaml deleted file mode 100644 index 4dbf623fd..000000000 --- a/test/kuma/kustomization.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -namespace: kuma-system -resources: - - ../../kustomize/base/prometheus/ - - ../../kustomize/base/flagger/ -patchesStrategicMerge: - - patch.yml -configMapGenerator: - - name: flagger-prometheus - behavior: replace - files: - - prometheus.yml diff --git a/test/kuma/patch.yml b/test/kuma/patch.yml deleted file mode 100644 index 9b69cbb8a..000000000 --- a/test/kuma/patch.yml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: flagger -spec: - template: - spec: - containers: - - name: flagger - args: - - -log-level=info - - -include-label-prefix=app.kubernetes.io - - -mesh-provider=kuma - - -metrics-server=http://flagger-prometheus:9090 diff --git a/test/kuma/prometheus.yml b/test/kuma/prometheus.yml deleted file mode 100644 index 31756863d..000000000 --- a/test/kuma/prometheus.yml +++ /dev/null @@ -1,163 +0,0 @@ -global: - scrape_interval: 5s -scrape_configs: - -# scrape config for AppMesh Envoy sidecar -- job_name: 'appmesh-envoy' - metrics_path: /stats/prometheus - kubernetes_sd_configs: - - role: pod - relabel_configs: - - source_labels: [__meta_kubernetes_pod_container_name] - action: keep - regex: '^envoy$' - - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] - action: replace - regex: ([^:]+)(?::\d+)?;(\d+) - replacement: ${1}:9901 - target_label: __address__ - - action: labelmap - regex: __meta_kubernetes_pod_label_(.+) - - source_labels: [__meta_kubernetes_namespace] - action: replace - target_label: kubernetes_namespace - - source_labels: [__meta_kubernetes_pod_name] - action: replace - target_label: kubernetes_pod_name - # exclude high cardinality metrics - metric_relabel_configs: - - source_labels: [ cluster_name ] - regex: '(outbound|inbound|prometheus_stats).*' - action: drop - - source_labels: [ tcp_prefix ] - regex: '(outbound|inbound|prometheus_stats).*' - action: drop - - source_labels: [ listener_address ] - regex: '(.+)' - action: drop - - source_labels: [ http_conn_manager_listener_prefix ] - regex: '(.+)' - action: drop - - source_labels: [ http_conn_manager_prefix ] - regex: '(.+)' - action: drop - - source_labels: [ __name__ ] - regex: 'envoy_tls.*' - action: drop - - source_labels: [ __name__ ] - regex: 'envoy_tcp_downstream.*' - action: drop - - source_labels: [ __name__ ] - regex: 'envoy_http_(stats|admin).*' - action: drop - - source_labels: [ __name__ ] - regex: 'envoy_cluster_(lb|retry|bind|internal|max|original).*' - action: drop - -# scrape config for API servers -- job_name: 'kubernetes-apiservers' - kubernetes_sd_configs: - - role: endpoints - namespaces: - names: - - default - scheme: https - tls_config: - ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - insecure_skip_verify: true - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token - relabel_configs: - - source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name] - action: keep - regex: kubernetes;https - -# scrape config for cAdvisor -- job_name: 'kubernetes-cadvisor' - scheme: https - tls_config: - ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - insecure_skip_verify: true - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token - kubernetes_sd_configs: - - role: node - relabel_configs: - - action: labelmap - regex: __meta_kubernetes_node_label_(.+) - - target_label: __address__ - replacement: kubernetes.default.svc:443 - - source_labels: [__meta_kubernetes_node_name] - regex: (.+) - target_label: __metrics_path__ - replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor - # exclude high cardinality metrics - metric_relabel_configs: - - source_labels: [__name__] - regex: (container|machine)_(cpu|memory|network|fs)_(.+) - action: keep - - source_labels: [__name__] - regex: container_memory_failures_total - action: drop - -# scrape config for pods -- job_name: kubernetes-pods - kubernetes_sd_configs: - - role: pod - relabel_configs: - - action: keep - regex: true - source_labels: - - __meta_kubernetes_pod_annotation_prometheus_io_scrape - - source_labels: [ __address__ ] - regex: '.*9901.*' - action: drop - - action: replace - regex: (.+) - source_labels: - - __meta_kubernetes_pod_annotation_prometheus_io_path - target_label: __metrics_path__ - - action: replace - regex: ([^:]+)(?::\d+)?;(\d+) - replacement: $1:$2 - source_labels: - - __address__ - - __meta_kubernetes_pod_annotation_prometheus_io_port - target_label: __address__ - - action: labelmap - regex: __meta_kubernetes_pod_label_(.+) - - action: replace - source_labels: - - __meta_kubernetes_namespace - target_label: kubernetes_namespace - - action: replace - source_labels: - - __meta_kubernetes_pod_name - target_label: kubernetes_pod_name - -# scrape config for Kuma dataplanes -- job_name: 'kuma-dataplanes' - scrape_interval: "5s" - relabel_configs: - - source_labels: - - k8s_kuma_io_name - regex: "(.*)" - target_label: pod - - source_labels: - - k8s_kuma_io_namespace - regex: "(.*)" - target_label: namespace - - source_labels: - - __meta_kuma_mesh - regex: "(.*)" - target_label: mesh - - source_labels: - - __meta_kuma_dataplane - regex: "(.*)" - target_label: dataplane - - source_labels: - - __meta_kuma_service - regex: "(.*)" - target_label: service - - action: labelmap - regex: __meta_kuma_label_(.+) - kuma_sd_configs: - - server: http://kuma-control-plane.kuma-system:5676