From 708dbd6bbcc1c8ad74fdb9f6268613442c040e21 Mon Sep 17 00:00:00 2001 From: stefanprodan Date: Thu, 3 Oct 2019 09:52:42 +0300 Subject: [PATCH 1/2] Use official App Mesh Helm charts in docs --- .../install/flagger-install-on-eks-appmesh.md | 56 +++++++++++-------- .../usage/appmesh-progressive-delivery.md | 2 +- 2 files changed, 34 insertions(+), 24 deletions(-) diff --git a/docs/gitbook/install/flagger-install-on-eks-appmesh.md b/docs/gitbook/install/flagger-install-on-eks-appmesh.md index b8bf41afa..65a60f115 100644 --- a/docs/gitbook/install/flagger-install-on-eks-appmesh.md +++ b/docs/gitbook/install/flagger-install-on-eks-appmesh.md @@ -14,14 +14,6 @@ The App Mesh integration with EKS is made out of the following components: * Admission controller - injects the Envoy sidecar and assigns Kubernetes pods to App Mesh virtual nodes * Metrics server - Prometheus instance that collects and stores Envoy's metrics -Prerequisites: - -* jq -* homebrew -* openssl -* kubectl -* AWS CLI (default region us-west-2) - ### Create a Kubernetes cluster In order to create an EKS cluster you can use [eksctl](https://eksctl.io). @@ -40,6 +32,8 @@ Create an EKS cluster: ```bash eksctl create cluster --name=appmesh \ --region=us-west-2 \ +--nodes 3 \ +--node-volume-size=120 \ --appmesh-access ``` @@ -98,21 +92,39 @@ kubectl -n kube-system top pods ### Install the App Mesh components -Run the App Mesh installer: +Create the `appmesh-system` namespace: -```bash -curl -fsSL https://git.io/get-app-mesh-eks.sh | bash - +```sh +kubectl create ns appmesh-system +``` + +Apply the App Mesh CRDs: + +```sh +kubectl apply -f https://raw.githubusercontent.com/aws/eks-charts/master/stable/appmesh-controller/crds/crds.yaml ``` -The installer does the following: +Add the EKS repository to Helm: + +```sh +helm repo add eks https://aws.github.io/eks-charts +``` -* creates the `appmesh-system` namespace -* generates a certificate signed by Kubernetes CA -* registers the App Mesh mutating webhook -* deploys the App Mesh webhook in `appmesh-system` namespace -* deploys the App Mesh CRDs -* deploys the App Mesh controller in `appmesh-system` namespace -* creates a mesh called `global` +Install the App Mesh CRD controller: + +```sh +helm upgrade -i appmesh-controller eks/appmesh-controller \ +--namespace appmesh-system +``` + +Install the App Mesh admission controller: + +```sh +helm upgrade -i appmesh-inject eks/appmesh-inject \ +--namespace appmesh-system \ +--set mesh.create=true \ +--set mesh.name=global +``` Verify that the global mesh is active: @@ -125,7 +137,7 @@ Status: Type: MeshActive ``` -### Install Flagger and Grafana +### Install Flagger, Prometheus and Grafana Add Flagger Helm repository: @@ -156,10 +168,8 @@ You can enable **Slack** notifications with: ```bash helm upgrade -i flagger flagger/flagger \ +--reuse-values \ --namespace=appmesh-system \ ---set crd.create=false \ ---set meshProvider=appmesh \ ---set metricsServer=http://prometheus.appmesh:9090 \ --set slack.url=https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK \ --set slack.channel=general \ --set slack.user=flagger diff --git a/docs/gitbook/usage/appmesh-progressive-delivery.md b/docs/gitbook/usage/appmesh-progressive-delivery.md index 4727be49d..92263b21d 100644 --- a/docs/gitbook/usage/appmesh-progressive-delivery.md +++ b/docs/gitbook/usage/appmesh-progressive-delivery.md @@ -134,7 +134,7 @@ The App Mesh specific settings are: ```yaml service: port: 9898 - meshName: global.appmesh-system + meshName: global backends: - backend1.test - backend2.test From 6b0856a0540e7b6b2178956b4d88de0116ff424d Mon Sep 17 00:00:00 2001 From: stefanprodan Date: Thu, 3 Oct 2019 10:02:58 +0300 Subject: [PATCH 2/2] Update App Mesh Envoy ingress to v1.11.1 --- artifacts/appmesh/ingress.yaml | 37 ++++++++----------- .../install/flagger-install-on-eks-appmesh.md | 4 +- 2 files changed, 18 insertions(+), 23 deletions(-) diff --git a/artifacts/appmesh/ingress.yaml b/artifacts/appmesh/ingress.yaml index 188717d2b..b4d69eb25 100644 --- a/artifacts/appmesh/ingress.yaml +++ b/artifacts/appmesh/ingress.yaml @@ -13,7 +13,7 @@ data: - address: socket_address: address: 0.0.0.0 - port_value: 80 + port_value: 8080 filter_chains: - filters: - name: envoy.http_connection_manager @@ -48,11 +48,15 @@ data: connect_timeout: 0.30s type: strict_dns lb_policy: round_robin - http2_protocol_options: {} - hosts: - - socket_address: - address: podinfo.test - port_value: 9898 + load_assignment: + cluster_name: podinfo + endpoints: + - lb_endpoints: + - endpoint: + address: + socket_address: + address: podinfo.test + port_value: 9898 admin: access_log_path: /dev/null address: @@ -91,7 +95,7 @@ spec: terminationGracePeriodSeconds: 30 containers: - name: ingress - image: "envoyproxy/envoy-alpine:d920944aed67425f91fc203774aebce9609e5d9a" + image: "envoyproxy/envoy-alpine:v1.11.1" securityContext: capabilities: drop: @@ -99,25 +103,20 @@ spec: add: - NET_BIND_SERVICE command: - - /usr/bin/dumb-init - - -- - args: - /usr/local/bin/envoy - - --base-id 30 - - --v2-config-only + args: - -l - $loglevel - -c - /config/envoy.yaml + - --base-id + - "1234" ports: - name: admin containerPort: 9999 protocol: TCP - name: http - containerPort: 80 - protocol: TCP - - name: https - containerPort: 443 + containerPort: 8080 protocol: TCP livenessProbe: initialDelaySeconds: 5 @@ -151,11 +150,7 @@ spec: - protocol: TCP name: http port: 80 - targetPort: 80 - - protocol: TCP - name: https - port: 443 - targetPort: 443 + targetPort: http type: LoadBalancer --- apiVersion: appmesh.k8s.aws/v1beta1 diff --git a/docs/gitbook/install/flagger-install-on-eks-appmesh.md b/docs/gitbook/install/flagger-install-on-eks-appmesh.md index 65a60f115..c2326a99a 100644 --- a/docs/gitbook/install/flagger-install-on-eks-appmesh.md +++ b/docs/gitbook/install/flagger-install-on-eks-appmesh.md @@ -114,14 +114,14 @@ Install the App Mesh CRD controller: ```sh helm upgrade -i appmesh-controller eks/appmesh-controller \ ---namespace appmesh-system +--wait --namespace appmesh-system ``` Install the App Mesh admission controller: ```sh helm upgrade -i appmesh-inject eks/appmesh-inject \ ---namespace appmesh-system \ +--wait --namespace appmesh-system \ --set mesh.create=true \ --set mesh.name=global ```