From 32c59a69f271fe0d320bf39f89581e488de20b8f Mon Sep 17 00:00:00 2001 From: Sambo Chea Date: Mon, 11 Apr 2022 10:15:20 +0700 Subject: [PATCH] Add k8s for spring web api --- apps/demo/application-demo.yml | 2 +- apps/demo/variable.sh | 4 +-- k8s/01-namespace.yaml | 6 ++++ k8s/02-volume.yaml | 12 +++++++ k8s/03-secret.yaml | 22 +++++++++++++ k8s/04-postgres.yaml | 57 ++++++++++++++++++++++++++++++++++ k8s/05-redis.yaml | 56 +++++++++++++++++++++++++++++++++ k8s/06-app.yaml | 46 +++++++++++++++++++++++++++ k8s/07-ingress.yaml | 17 ++++++++++ 9 files changed, 219 insertions(+), 3 deletions(-) create mode 100644 k8s/01-namespace.yaml create mode 100644 k8s/02-volume.yaml create mode 100644 k8s/03-secret.yaml create mode 100644 k8s/04-postgres.yaml create mode 100644 k8s/05-redis.yaml create mode 100644 k8s/06-app.yaml create mode 100644 k8s/07-ingress.yaml diff --git a/apps/demo/application-demo.yml b/apps/demo/application-demo.yml index 8811dc3..d814c5a 100644 --- a/apps/demo/application-demo.yml +++ b/apps/demo/application-demo.yml @@ -1,2 +1,2 @@ server: - port: ${APP_PORT:8090} \ No newline at end of file + port: ${APP_PORT:8080} \ No newline at end of file diff --git a/apps/demo/variable.sh b/apps/demo/variable.sh index 6b48545..e139f12 100644 --- a/apps/demo/variable.sh +++ b/apps/demo/variable.sh @@ -3,8 +3,8 @@ APP_MODULE_PATH=api APP_PROFILE=demo # Docker Image variables -VERSION=latest -IMAGE=api-demo +VERSION=demo +IMAGE=spring-web-api CONTAINER=$IMAGE REGISTRY=registry.kh.cubetiqs.com EXPOSE_PORT=8080 diff --git a/k8s/01-namespace.yaml b/k8s/01-namespace.yaml new file mode 100644 index 0000000..0414c59 --- /dev/null +++ b/k8s/01-namespace.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: Namespace +metadata: + labels: + app: spring-web-dev + name: spring-web-dev \ No newline at end of file diff --git a/k8s/02-volume.yaml b/k8s/02-volume.yaml new file mode 100644 index 0000000..1c70a54 --- /dev/null +++ b/k8s/02-volume.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + namespace: spring-web-dev + name: spring-web-dev-volume +spec: + accessModes: + - ReadWriteOnce + storageClassName: nfs-client # nfs-client OR local-path + resources: + requests: + storage: 5Gi \ No newline at end of file diff --git a/k8s/03-secret.yaml b/k8s/03-secret.yaml new file mode 100644 index 0000000..e767ec6 --- /dev/null +++ b/k8s/03-secret.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Secret +metadata: + namespace: spring-web-dev + name: registry-secret +stringData: + .dockerconfigjson: | + {"auths":{"YOUR_PRIVATE_REGISTRY_HERE":{"auth":"YOUR_SECRET_HERE"}}} +type: kubernetes.io/dockerconfigjson + +--- +apiVersion: v1 +kind: Secret +metadata: + namespace: spring-web-dev + name: spring-web-dev-secret +stringData: + REDIS_PASSWORD: demo + POSTGRES_USER: demo + POSTGRES_DB: demo + POSTGRES_PASSWORD: demo +type: Opaque \ No newline at end of file diff --git a/k8s/04-postgres.yaml b/k8s/04-postgres.yaml new file mode 100644 index 0000000..6fd6534 --- /dev/null +++ b/k8s/04-postgres.yaml @@ -0,0 +1,57 @@ +apiVersion: v1 +kind: Service +metadata: + namespace: spring-web-dev + name: postgres-service +spec: + selector: + app: postgres + ports: + - port: 5432 + targetPort: 5432 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: spring-web-dev + name: postgres-deployment +spec: + selector: + matchLabels: + app: postgres + template: + metadata: + labels: + app: postgres + spec: + containers: + - name: postgres + image: postgres:alpine + ports: + - containerPort: 5432 + env: + - name: POSTGRES_DB + valueFrom: + secretKeyRef: + name: spring-web-dev-secret + key: POSTGRES_DB + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: spring-web-dev-secret + key: POSTGRES_PASSWORD + volumeMounts: + - name: postgres-data + mountPath: /var/lib/postgresql/data + subPath: postgresql-data + resources: + requests: + cpu: 100m + memory: 100Mi + limits: + cpu: 200m + memory: 200Mi + volumes: + - name: postgres-data + persistentVolumeClaim: + claimName: spring-web-dev-volume \ No newline at end of file diff --git a/k8s/05-redis.yaml b/k8s/05-redis.yaml new file mode 100644 index 0000000..73279b9 --- /dev/null +++ b/k8s/05-redis.yaml @@ -0,0 +1,56 @@ +apiVersion: v1 +kind: Service +metadata: + namespace: spring-web-dev + name: redis-service +spec: + selector: + app: redis + ports: + - port: 6379 + clusterIP: None + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: spring-web-dev + name: redis-deployment +spec: + selector: + matchLabels: + app: redis + strategy: + type: Recreate + template: + metadata: + labels: + app: redis + spec: + containers: + - name: redis + image: redis:alpine + ports: + - containerPort: 6379 + args: [ "--requirepass", "$(REDIS_PASSWORD)" ] + env: + - name: REDIS_PASSWORD + valueFrom: + secretKeyRef: + name: spring-web-dev-secret + key: REDIS_PASSWORD + volumeMounts: + - name: redis-data + mountPath: /data + subPath: redis-data + resources: + requests: + memory: "64Mi" + cpu: "250m" + limits: + memory: "128Mi" + cpu: "500m" + volumes: + - name: redis-data + persistentVolumeClaim: + claimName: spring-web-dev-volume \ No newline at end of file diff --git a/k8s/06-app.yaml b/k8s/06-app.yaml new file mode 100644 index 0000000..ea4c9c0 --- /dev/null +++ b/k8s/06-app.yaml @@ -0,0 +1,46 @@ +apiVersion: v1 +kind: Service +metadata: + namespace: spring-web-dev + name: spring-web-service +spec: + selector: + app: spring-web-api + ports: + - port: 8080 + targetPort: 8080 + type: ClusterIP +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: spring-web-dev + name: spring-web-deployment +spec: + replicas: 1 + selector: + matchLabels: + app: spring-web-api + template: + metadata: + labels: + app: spring-web-api + spec: + imagePullSecrets: + - name: registry-secret + containers: + - name: spring-web-api + image: registry.kh.cubetiqs.com/spring-web-api:demo + ports: + - containerPort: 8080 + envFrom: + - secretRef: + name: spring-web-dev-secret + imagePullPolicy: Always + resources: + requests: + cpu: 300m + memory: 300Mi + limits: + cpu: 800m + memory: 800Mi \ No newline at end of file diff --git a/k8s/07-ingress.yaml b/k8s/07-ingress.yaml new file mode 100644 index 0000000..91e390d --- /dev/null +++ b/k8s/07-ingress.yaml @@ -0,0 +1,17 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: spring-web-ingress + namespace: spring-web-dev +spec: + rules: + - host: springwebapi-demo.ctdn.dev + http: + paths: + - backend: + service: + name: spring-web-service + port: + number: 8080 + path: / + pathType: Prefix \ No newline at end of file