labs/helper-files/init-web-api-sample.yaml (152 lines of code) (raw):

apiVersion: v1 kind: Service metadata: name: api labels: name: api spec: type: LoadBalancer ports: - name: http port: 3000 targetPort: 3000 selector: name: heroes-api --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: heroes-api-deploy labels: name: heroes-api spec: replicas: 1 strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate template: metadata: labels: name: heroes-api spec: containers: - image: sonofjorel/rating-api:v1 name: heroes-api-cntnr resources: requests: cpu: "20m" memory: "55M" env: - name: MONGODB_URI value: mongodb://mongodb:27017/webratings ports: - containerPort: 3000 name: heroes-api volumeMounts: - name: datadir mountPath: /usr/tmp imagePullPolicy: Always restartPolicy: Always initContainers: - name: get-hero-data image: busybox command: ['sh', '-c', 'for i in {1..100}; do sleep 1; if [ ! -f "./data-dir/heroes.json" ]; then wget -O ./data-dir/heroes.json https://raw.githubusercontent.com/Azure/blackbelt-aks-hackfest/master/app/db/heroes.json; cat ./data-dir/heroes.json; exit 1; fi; done; exit 0'] volumeMounts: - name: datadir mountPath: "/data-dir" - name: get-site-data image: busybox command: ['sh', '-c', 'for i in {1..100}; do sleep 1; if [ ! -f "./data-dir/sites.json" ]; then wget -O ./data-dir/sites.json https://raw.githubusercontent.com/Azure/blackbelt-aks-hackfest/master/app/db/sites.json; cat ./data-dir/sites.json; exit 1; fi; done; exit 0'] volumeMounts: - name: datadir mountPath: "/data-dir" - name: get-ratings-data image: busybox command: ['sh', '-c', 'for i in {1..100}; do sleep 1; if [ ! -f "./data-dir/ratings.json" ]; then wget -O ./data-dir/ratings.json https://raw.githubusercontent.com/Azure/blackbelt-aks-hackfest/master/app/db/ratings.json; cat ./data-dir/ratings.json; exit 1; fi; done; exit 0'] volumeMounts: - name: datadir mountPath: "/data-dir" - name: import-hero-data image: mongo:3.6.1-jessie command: ['sh', '-c', 'for i in {1..100}; do sleep 1; if [ -f "./data-dir/heroes.json" ]; then mongoimport --host mongodb:27017 --db webratings --collection heroes --file /data-dir/heroes.json --jsonArray; exit 0; fi; done; exit 1'] volumeMounts: - name: datadir mountPath: "/data-dir" - name: import-site-data image: mongo:3.6.1-jessie command: ['sh', '-c', 'for i in {1..100}; do sleep 1; if [ -f "./data-dir/sites.json" ]; then mongoimport --host mongodb:27017 --db webratings --collection sites --file /data-dir/sites.json --jsonArray; exit 0; fi; done; exit 1'] volumeMounts: - name: datadir mountPath: "/data-dir" - name: import-ratings-data image: mongo:3.6.1-jessie command: ['sh', '-c', 'for i in {1..100}; do sleep 1; if [ -f "./data-dir/ratings.json" ]; then mongoimport --host mongodb:27017 --db webratings --collection ratings --file /data-dir/ratings.json --jsonArray; exit 0; fi; done; exit 1'] volumeMounts: - name: datadir mountPath: "/data-dir" volumes: - name: datadir emptyDir: {} --- apiVersion: v1 kind: Service metadata: name: web labels: name: web spec: type: LoadBalancer ports: - name: http port: 8080 targetPort: 8080 selector: name: heroes-web --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: heroes-web-deploy labels: name: heroes-web spec: replicas: 1 strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate template: metadata: labels: name: heroes-web spec: containers: - image: sonofjorel/rating-web:v1 name: heroes-web-cntnr resources: requests: cpu: "0.5" memory: "1Gi" env: - name: API value: http://api:3000/ - name: KUBE_NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName - name: KUBE_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: KUBE_POD_IP valueFrom: fieldRef: fieldPath: status.podIP ports: - containerPort: 8080 name: heroes-web imagePullPolicy: Always restartPolicy: Always