Merge pull request #319 from weaveworks/appmesh-docs

Update App Mesh install docs
This commit is contained in:
Stefan Prodan
2019-10-03 10:55:45 +03:00
committed by GitHub
3 changed files with 50 additions and 45 deletions
+16 -21
View File
@@ -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
@@ -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
```
The installer does the following:
Apply the App Mesh CRDs:
* 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`
```sh
kubectl apply -f https://raw.githubusercontent.com/aws/eks-charts/master/stable/appmesh-controller/crds/crds.yaml
```
Add the EKS repository to Helm:
```sh
helm repo add eks https://aws.github.io/eks-charts
```
Install the App Mesh CRD controller:
```sh
helm upgrade -i appmesh-controller eks/appmesh-controller \
--wait --namespace appmesh-system
```
Install the App Mesh admission controller:
```sh
helm upgrade -i appmesh-inject eks/appmesh-inject \
--wait --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
@@ -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