Skip to content

Instantly share code, notes, and snippets.

@mreferre
Last active July 19, 2019 14:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mreferre/e3647b025d619b1db9b889d51d28729c to your computer and use it in GitHub Desktop.
Save mreferre/e3647b025d619b1db9b889d51d28729c to your computer and use it in GitHub Desktop.
# This should work on Kubernetes deployments on AWS that have an ALB ingress controller as well as App Mesh components deployed.
apiVersion: appmesh.k8s.aws/v1beta1
kind: Mesh
metadata:
name: MESH_NAME
---
apiVersion: appmesh.k8s.aws/v1beta1
kind: VirtualNode
metadata:
name: yelb-ui-node
spec:
meshName: MESH_NAME
listeners:
- portMapping:
port: 80
protocol: http
serviceDiscovery:
dns:
hostName: yelb-ui
backends:
- virtualService:
virtualServiceName: yelb-appserver
---
apiVersion: appmesh.k8s.aws/v1beta1
kind: VirtualNode
metadata:
name: yelb-appserver-node
spec:
meshName: MESH_NAME
listeners:
- portMapping:
port: 4567
protocol: http
serviceDiscovery:
dns:
hostName: yelb-appserver
backends:
- virtualService:
virtualServiceName: yelb-db
- virtualService:
virtualServiceName: redis-server
---
apiVersion: appmesh.k8s.aws/v1beta1
kind: VirtualNode
metadata:
name: yelb-db-node
spec:
meshName: MESH_NAME
listeners:
- portMapping:
port: 5432
protocol: tcp
serviceDiscovery:
dns:
hostName: yelb-db
---
apiVersion: appmesh.k8s.aws/v1beta1
kind: VirtualNode
metadata:
name: redis-server-node
spec:
meshName: MESH_NAME
listeners:
- portMapping:
port: 6379
protocol: tcp
serviceDiscovery:
dns:
hostName: redis-server
---
apiVersion: appmesh.k8s.aws/v1beta1
kind: VirtualService
metadata:
name: yelb-ui
spec:
meshName: MESH_NAME
routes:
- name: yelb-ui-route
http:
match:
prefix: /
action:
weightedTargets:
- virtualNodeName: yelb-ui-node
weight: 1
---
apiVersion: appmesh.k8s.aws/v1beta1
kind: VirtualService
metadata:
name: yelb-appserver
spec:
meshName: MESH_NAME
routes:
- name: yelb-appserver-route
http:
match:
prefix: /
action:
weightedTargets:
- virtualNodeName: yelb-appserver-node
weight: 1
---
apiVersion: appmesh.k8s.aws/v1beta1
kind: VirtualService
metadata:
name: yelb-db
spec:
meshName: MESH_NAME
routes:
- name: yelb-db-route
http:
match:
prefix: /
action:
weightedTargets:
- virtualNodeName: yelb-db-node
weight: 1
---
apiVersion: appmesh.k8s.aws/v1beta1
kind: VirtualService
metadata:
name: redis-server
spec:
meshName: MESH_NAME
routes:
- name: redis-server-route
http:
match:
prefix: /
action:
weightedTargets:
- virtualNodeName: redis-server-node
weight: 1
---
apiVersion: v1
kind: Service
metadata:
name: yelb-ui
spec:
ports:
- port: 80
---
apiVersion: v1
kind: Service
metadata:
name: yelb-appserver
spec:
ports:
- port: 4567
---
apiVersion: v1
kind: Service
metadata:
name: yelb-db
spec:
ports:
- port: 5432
---
apiVersion: v1
kind: Service
metadata:
name: redis-server
spec:
ports:
- port: 6379
---
apiVersion: v1
kind: Service
metadata:
name: redis-server-v1
labels:
app: redis-server-app
tier: cache
spec:
type: ClusterIP
ports:
- port: 6379
selector:
app: redis-server-app
tier: cache
---
apiVersion: v1
kind: Service
metadata:
name: yelb-db-v1
labels:
app: yelb-db-app
tier: backenddb
spec:
type: ClusterIP
ports:
- port: 5432
selector:
app: yelb-db
tier: backenddb
---
apiVersion: v1
kind: Service
metadata:
name: yelb-appserver-v1
labels:
app: yelb-appserver-app
tier: middletier
spec:
type: ClusterIP
ports:
- port: 4567
selector:
app: yelb-appserver-app
tier: middletier
---
apiVersion: v1
kind: Service
metadata:
name: yelb-ui-v1
labels:
app: yelb-ui-app
tier: frontend
spec:
type: NodePort
ports:
- port: 80
selector:
app: yelb-ui
tier: frontend
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: yelb-ui
annotations:
kubernetes.io/ingress.class: alb # check this, your ingress.class may be different
alb.ingress.kubernetes.io/scheme: internet-facing
labels:
app: yelb-ui
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: yelb-ui
servicePort: 80
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: yelb-ui-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: yelb-ui-app
tier: frontend
spec:
containers:
- name: yelb-ui-container
image: mreferre/yelb-ui:0.5
ports:
- containerPort: 80
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: redis-server-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: redis-server-app
tier: cache
spec:
containers:
- name: redis-server-container
image: redis:4.0.2
ports:
- containerPort: 6379
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: yelb-db-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: yelb-db-app
tier: backenddb
spec:
containers:
- name: yelb-db-container
image: mreferre/yelb-db:0.5
ports:
- containerPort: 5432
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: yelb-appserver-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: yelb-appserver-app
tier: middletier
spec:
containers:
- name: yelb-appserver-container
image: mreferre/yelb-appserver:0.5
ports:
- containerPort: 4567
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment