mirror of
https://github.com/marcel-dempers/docker-development-youtube-series.git
synced 2025-06-06 17:01:30 +00:00
test traffic split and auto retry
This commit is contained in:
parent
17ad5d11a7
commit
fce0fb89b2
99
kubernetes/servicemesh/applications/videos-web/index-v2.html
Normal file
99
kubernetes/servicemesh/applications/videos-web/index-v2.html
Normal file
@ -0,0 +1,99 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="stylesheet" href="bootstrap.min.css">
|
||||
<title>Video Catalog</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
|
||||
<article>
|
||||
<nav class="navbar navbar-light bg-light">
|
||||
<span class="navbar-brand mb-0 h1">Video Catalog: V2</span>
|
||||
</nav>
|
||||
<div ng-app="videos" ng-controller="videosController" class="container">
|
||||
<div class="row">
|
||||
<div id="accordion">
|
||||
|
||||
<div id="{{ l.id }}" ng-repeat="l in playlist" class="card">
|
||||
|
||||
<div class="card-header" id="heading{{ l.id }}">
|
||||
<h5 class="mb-0" style="text-align: center;">
|
||||
<button class="btn btn-link" data-toggle="collapse" data-target="#collapse{{ l.id }}" aria-expanded="true"
|
||||
aria-controls="collapse{{ l.id }}">
|
||||
{{ l.name }}
|
||||
</button>
|
||||
</h5>
|
||||
</div>
|
||||
|
||||
<div id="collapse{{ l.id }}" class="collapse show" aria-labelledby="heading{{ l.id }}" data-parent="#accordion">
|
||||
<div class="card-body">
|
||||
|
||||
<div class="row">
|
||||
<div class="col card" ng-repeat="v in l.videos" style="width: 18rem;">
|
||||
<img class="card-img-top" src="{{ v.imageurl }}" alt="Card image cap">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">{{ v.title }}</h5>
|
||||
<p class="card-text">{{ v.description }}</p>
|
||||
<a href="{{ v.url }}" class="btn btn-primary">Watch</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<hr />
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
||||
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"
|
||||
integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm"
|
||||
crossorigin="anonymous"></script>
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
|
||||
|
||||
<script>
|
||||
|
||||
var model = {
|
||||
playlist: [],
|
||||
};
|
||||
|
||||
var playlistApiUrl = "";
|
||||
if (location.hostname == "localhost"){
|
||||
playlistApiUrl = "http://localhost:81/"
|
||||
} else {
|
||||
playlistApiUrl = "http://" + location.hostname + "/api/playlists"
|
||||
}
|
||||
|
||||
var app = angular.module('videos', []);
|
||||
app.controller('videosController', function ($scope, $http) {
|
||||
|
||||
$http.get(playlistApiUrl)
|
||||
.then(function (response) {
|
||||
|
||||
console.log(response);
|
||||
//$scope.model = model;
|
||||
for (i = 0; i < response.data.length; ++i) {
|
||||
model.playlist.push(response.data[i]);
|
||||
}
|
||||
$scope.playlist = response.data;
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
14
kubernetes/servicemesh/istio/retries/videos-api.yaml
Normal file
14
kubernetes/servicemesh/istio/retries/videos-api.yaml
Normal file
@ -0,0 +1,14 @@
|
||||
apiVersion: networking.istio.io/v1alpha3
|
||||
kind: VirtualService
|
||||
metadata:
|
||||
name: videos-api
|
||||
spec:
|
||||
hosts:
|
||||
- videos-api
|
||||
http:
|
||||
- route:
|
||||
- destination:
|
||||
host: videos-api
|
||||
retries:
|
||||
attempts: 10
|
||||
perTryTimeout: 2s
|
@ -0,0 +1,43 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: videos-web-v2
|
||||
labels:
|
||||
app: videos-web-v2
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: videos-web-v2
|
||||
replicas: 1
|
||||
strategy:
|
||||
type: RollingUpdate
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 0
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: videos-web-v2
|
||||
spec:
|
||||
containers:
|
||||
- name: videos-web-v2
|
||||
image: aimvector/service-mesh:videos-web-2.0.0
|
||||
imagePullPolicy : Always
|
||||
ports:
|
||||
- containerPort: 80
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: videos-web-v2
|
||||
labels:
|
||||
app: videos-web-v2
|
||||
spec:
|
||||
type: ClusterIP
|
||||
selector:
|
||||
app: videos-web-v2
|
||||
ports:
|
||||
- protocol: TCP
|
||||
name: http
|
||||
port: 80
|
||||
targetPort: 80
|
15
kubernetes/servicemesh/istio/traffic-splits/videos-web.yaml
Normal file
15
kubernetes/servicemesh/istio/traffic-splits/videos-web.yaml
Normal file
@ -0,0 +1,15 @@
|
||||
apiVersion: networking.istio.io/v1alpha3
|
||||
kind: VirtualService
|
||||
metadata:
|
||||
name: videos-web
|
||||
spec:
|
||||
hosts:
|
||||
- servicemesh.demo
|
||||
http:
|
||||
- route:
|
||||
- destination:
|
||||
host: videos-web-v2
|
||||
weight: 50
|
||||
- destination:
|
||||
host: videos-web
|
||||
weight: 50
|
Loading…
x
Reference in New Issue
Block a user