apiVersion: v1 kind: Namespace metadata: name: retailapp labels: app: retailapp --- apiVersion: v1 kind: Secret metadata: name: retailapp-secret namespace: retailapp type: Opaque data: database_password: ZWtzZ2RiZGVtbw== database_user: ZGJ1c2VyMQ== database_host: cmV0YWlsYXBwLXBnYi5yZXRhaWxhcHAuc3ZjLmNsdXN0ZXIubG9jYWw= database_port: NjQzMg== database_db_name: Z2RiZGVtbw== database_rodb_name: Z2RiZGVtby1ybw== secret_key: ZWtzZ2RiZGVtb3NlY3JldA== authtoken: ZWtzZ2RiZGVtb3Rva2Vu kart_service: aHR0cDovL2thcnQucmV0YWlsYXBwLnN2Yy5jbHVzdGVyLmxvY2FsOjg0NDU= product_service: aHR0cDovL3Byb2R1Y3QucmV0YWlsYXBwLnN2Yy5jbHVzdGVyLmxvY2FsOjg0NDQ= user_service: aHR0cDovL3VzZXIucmV0YWlsYXBwLnN2Yy5jbHVzdGVyLmxvY2FsOjg0NDY= order_service: aHR0cDovL29yZGVyLnJldGFpbGFwcC5zdmMuY2x1c3Rlci5sb2NhbDo4NDQ4 --- apiVersion: apps/v1 kind: Deployment metadata: name: kart-deployment namespace: retailapp labels: app: retailapp service: kart spec: replicas: 2 strategy: rollingUpdate: maxSurge: 3 maxUnavailable: 0 selector: matchLabels: app: retailapp service: kart template: metadata: labels: app: retailapp service: kart spec: restartPolicy: Always containers: - name: kart image: %AWS_ACCOUNT_ID%.dkr.ecr.%AWS_REGION%.amazonaws.com/retailapp/kart:1.0 resources: requests: cpu: "250m" imagePullPolicy: Always ports: - containerPort: 8445 env: - name: DATABASE_HOST valueFrom: secretKeyRef: name: retailapp-secret key: database_host - name: DATABASE_PORT valueFrom: secretKeyRef: name: retailapp-secret key: database_port - name: DATABASE_USER valueFrom: secretKeyRef: name: retailapp-secret key: database_user - name: DATABASE_PASSWORD valueFrom: secretKeyRef: name: retailapp-secret key: database_password - name: DATABASE_DB_NAME valueFrom: secretKeyRef: name: retailapp-secret key: database_db_name - name: DATABASE_RODB_NAME valueFrom: secretKeyRef: name: retailapp-secret key: database_rodb_name - name: SECRET_KEY valueFrom: secretKeyRef: name: retailapp-secret key: secret_key - name: AUTHTOKEN valueFrom: secretKeyRef: name: retailapp-secret key: authtoken --- apiVersion: apps/v1 kind: Deployment metadata: name: product-deployment namespace: retailapp labels: app: retailapp service: product spec: replicas: 2 strategy: rollingUpdate: maxSurge: 3 maxUnavailable: 0 selector: matchLabels: app: retailapp service: product template: metadata: labels: app: retailapp service: product spec: restartPolicy: Always containers: - name: product image: %AWS_ACCOUNT_ID%.dkr.ecr.%AWS_REGION%.amazonaws.com/retailapp/product:1.0 resources: requests: cpu: "250m" imagePullPolicy: Always ports: - containerPort: 8444 env: - name: DATABASE_HOST valueFrom: secretKeyRef: name: retailapp-secret key: database_host - name: DATABASE_PORT valueFrom: secretKeyRef: name: retailapp-secret key: database_port - name: DATABASE_USER valueFrom: secretKeyRef: name: retailapp-secret key: database_user - name: DATABASE_PASSWORD valueFrom: secretKeyRef: name: retailapp-secret key: database_password - name: DATABASE_DB_NAME valueFrom: secretKeyRef: name: retailapp-secret key: database_db_name - name: DATABASE_RODB_NAME valueFrom: secretKeyRef: name: retailapp-secret key: database_rodb_name - name: SECRET_KEY valueFrom: secretKeyRef: name: retailapp-secret key: secret_key - name: AUTHTOKEN valueFrom: secretKeyRef: name: retailapp-secret key: authtoken --- apiVersion: apps/v1 kind: Deployment metadata: name: user-deployment namespace: retailapp labels: app: retailapp service: user spec: replicas: 2 strategy: rollingUpdate: maxSurge: 3 maxUnavailable: 0 selector: matchLabels: app: retailapp service: user template: metadata: labels: app: retailapp service: user spec: restartPolicy: Always containers: - name: user image: %AWS_ACCOUNT_ID%.dkr.ecr.%AWS_REGION%.amazonaws.com/retailapp/user:1.0 resources: requests: cpu: "250m" imagePullPolicy: Always ports: - containerPort: 8446 env: - name: DATABASE_HOST valueFrom: secretKeyRef: name: retailapp-secret key: database_host - name: DATABASE_PORT valueFrom: secretKeyRef: name: retailapp-secret key: database_port - name: DATABASE_USER valueFrom: secretKeyRef: name: retailapp-secret key: database_user - name: DATABASE_PASSWORD valueFrom: secretKeyRef: name: retailapp-secret key: database_password - name: DATABASE_DB_NAME valueFrom: secretKeyRef: name: retailapp-secret key: database_db_name - name: DATABASE_RODB_NAME valueFrom: secretKeyRef: name: retailapp-secret key: database_rodb_name - name: SECRET_KEY valueFrom: secretKeyRef: name: retailapp-secret key: secret_key - name: AUTHTOKEN valueFrom: secretKeyRef: name: retailapp-secret key: authtoken --- apiVersion: apps/v1 kind: Deployment metadata: name: webapp namespace: retailapp labels: app: retailapp service: webapp spec: replicas: 2 selector: matchLabels: app: retailapp service: webapp template: metadata: labels: app: retailapp service: webapp spec: containers: - name: webapp image: %AWS_ACCOUNT_ID%.dkr.ecr.%AWS_REGION%.amazonaws.com/retailapp/webapp:1.0 resources: requests: cpu: "250m" imagePullPolicy: Always ports: - containerPort: 8443 volumeMounts: - mountPath: /appdata name: data env: - name: DATABASE_HOST valueFrom: secretKeyRef: name: retailapp-secret key: database_host - name: DATABASE_PORT valueFrom: secretKeyRef: name: retailapp-secret key: database_port - name: DATABASE_USER valueFrom: secretKeyRef: name: retailapp-secret key: database_user - name: DATABASE_PASSWORD valueFrom: secretKeyRef: name: retailapp-secret key: database_password - name: DATABASE_DB_NAME valueFrom: secretKeyRef: name: retailapp-secret key: database_db_name - name: DATABASE_RODB_NAME valueFrom: secretKeyRef: name: retailapp-secret key: database_rodb_name - name: SECRET_KEY valueFrom: secretKeyRef: name: retailapp-secret key: secret_key - name: AUTHTOKEN valueFrom: secretKeyRef: name: retailapp-secret key: authtoken - name: PRODUCTS_SERVICE valueFrom: secretKeyRef: name: retailapp-secret key: product_service - name: KART_SERVICE valueFrom: secretKeyRef: name: retailapp-secret key: kart_service - name: USER_SERVICE valueFrom: secretKeyRef: name: retailapp-secret key: user_service - name: ORDER_SERVICE valueFrom: secretKeyRef: name: retailapp-secret key: order_service restartPolicy: Always volumes: - name: data emptyDir: {} --- apiVersion: apps/v1 kind: Deployment metadata: name: order-deployment namespace: retailapp labels: app: retailapp service: order spec: replicas: 2 strategy: rollingUpdate: maxSurge: 3 maxUnavailable: 0 selector: matchLabels: app: retailapp service: order template: metadata: labels: app: retailapp service: order spec: restartPolicy: Always containers: - name: order image: %AWS_ACCOUNT_ID%.dkr.ecr.%AWS_REGION%.amazonaws.com/retailapp/order:1.0 resources: requests: cpu: "250m" imagePullPolicy: Always ports: - containerPort: 8448 env: - name: DATABASE_HOST valueFrom: secretKeyRef: name: retailapp-secret key: database_host - name: DATABASE_PORT valueFrom: secretKeyRef: name: retailapp-secret key: database_port - name: DATABASE_USER valueFrom: secretKeyRef: name: retailapp-secret key: database_user - name: DATABASE_PASSWORD valueFrom: secretKeyRef: name: retailapp-secret key: database_password - name: DATABASE_DB_NAME valueFrom: secretKeyRef: name: retailapp-secret key: database_db_name - name: DATABASE_RODB_NAME valueFrom: secretKeyRef: name: retailapp-secret key: database_rodb_name - name: SECRET_KEY valueFrom: secretKeyRef: name: retailapp-secret key: secret_key - name: AUTHTOKEN valueFrom: secretKeyRef: name: retailapp-secret key: authtoken --- apiVersion: v1 kind: Service metadata: name: kart namespace: retailapp labels: app: oktank service: kart spec: type: ClusterIP selector: app: retailapp service: kart ports: - name: kart protocol: TCP port: 8445 targetPort: 8445 --- apiVersion: v1 kind: Service metadata: name: product namespace: retailapp labels: app: oktank service: product spec: type: ClusterIP selector: app: retailapp service: product ports: - name: product protocol: TCP port: 8444 targetPort: 8444 --- apiVersion: v1 kind: Service metadata: name: user namespace: retailapp labels: app: oktank service: user spec: type: ClusterIP selector: app: retailapp service: user ports: - name: user protocol: TCP port: 8446 targetPort: 8446 --- apiVersion: v1 kind: Service metadata: name: order namespace: retailapp labels: app: oktank service: order spec: type: ClusterIP selector: app: retailapp service: order ports: - name: order protocol: TCP port: 8448 targetPort: 8448 --- apiVersion: v1 kind: Service metadata: name: webappnp namespace: retailapp labels: app: oktank service: webappnp spec: type: NodePort selector: service: webapp ports: - port: 80 targetPort: 8443 protocol: TCP --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: webapp namespace: retailapp labels: app: oktank service: webapp annotations: kubernetes.io/ingress.class: alb alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/tags: Application=webapp alb.ingress.kubernetes.io/target-type: instance alb.ingress.kubernetes.io/healthcheck-protocol: HTTP alb.ingress.kubernetes.io/healthcheck-port: traffic-port alb.ingress.kubernetes.io/healthcheck-path: /healthcheck alb.ingress.kubernetes.io/healthcheck-interval-seconds: '60' alb.ingress.kubernetes.io/healthcheck-timeout-seconds: '30' alb.ingress.kubernetes.io/success-codes: '200' alb.ingress.kubernetes.io/healthy-threshold-count: '2' alb.ingress.kubernetes.io/unhealthy-threshold-count: '5' alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true, load_balancing.algorithm.type=least_outstanding_requests spec: rules: - http: paths: - path: / pathType: Prefix backend: service: name: webappnp port: number: 80