From b3d6a8e30d36f558b21098dcfe95de77befd2193 Mon Sep 17 00:00:00 2001 From: shokohsc Date: Wed, 11 Aug 2021 13:44:12 +0200 Subject: [PATCH] chore(): skaffold --- .dockerignore | 4 +- Dockerfile.dev | 16 ++++++ k8s/base/deployment.yaml | 36 +++++++++++++ k8s/base/ingress.yaml | 17 +++++++ k8s/base/kustomization.yaml | 9 ++++ k8s/base/namespace.yaml | 8 +++ k8s/base/rbac.yaml | 26 ++++++++++ k8s/base/service.yaml | 16 ++++++ k8s/overlays/shokohsc/ingress.yaml | 31 +++++++++++ k8s/overlays/shokohsc/kustomization.yaml | 6 +++ skaffold.yaml | 65 ++++++++++++++++++++++++ 11 files changed, 233 insertions(+), 1 deletion(-) create mode 100644 Dockerfile.dev create mode 100644 k8s/base/deployment.yaml create mode 100644 k8s/base/ingress.yaml create mode 100644 k8s/base/kustomization.yaml create mode 100644 k8s/base/namespace.yaml create mode 100644 k8s/base/rbac.yaml create mode 100644 k8s/base/service.yaml create mode 100644 k8s/overlays/shokohsc/ingress.yaml create mode 100644 k8s/overlays/shokohsc/kustomization.yaml create mode 100644 skaffold.yaml diff --git a/.dockerignore b/.dockerignore index da9bc10..6c10c72 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,6 @@ node_modules github public -build.sh \ No newline at end of file +build.sh +k8s +skaffold.yaml diff --git a/Dockerfile.dev b/Dockerfile.dev new file mode 100644 index 0000000..680ed26 --- /dev/null +++ b/Dockerfile.dev @@ -0,0 +1,16 @@ +FROM node:lts-alpine as build-front +RUN apk add --no-cache curl +WORKDIR /app +COPY ./client . +RUN npm install --production \ + && npm run build + +FROM node:lts-alpine +WORKDIR /app +RUN mkdir -p ./public +COPY --from=build-front /app/build/ ./public + +COPY package*.json ./ +RUN npm install +COPY . . +CMD ["npm", "run", "skaffold"] diff --git a/k8s/base/deployment.yaml b/k8s/base/deployment.yaml new file mode 100644 index 0000000..1da33e2 --- /dev/null +++ b/k8s/base/deployment.yaml @@ -0,0 +1,36 @@ +--- +kind: Deployment +apiVersion: apps/v1 +metadata: + name: flame +spec: + selector: + matchLabels: + app: flame + template: + metadata: + labels: + app: flame + spec: + serviceAccountName: flame + securityContext: + fsGroup: 1000 + containers: + - name: flame + image: shokohsc/flame + command: + - npm + args: + - run + - skaffold + env: + - name: NODE_ENV + value: development + ports: + - name: http + containerPort: 5005 + protocol: TCP + readinessProbe: + httpGet: + path: / + port: http diff --git a/k8s/base/ingress.yaml b/k8s/base/ingress.yaml new file mode 100644 index 0000000..7694ddb --- /dev/null +++ b/k8s/base/ingress.yaml @@ -0,0 +1,17 @@ +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: flame +spec: + rules: + - host: flame.cluster.local + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: flame + port: + number: 80 diff --git a/k8s/base/kustomization.yaml b/k8s/base/kustomization.yaml new file mode 100644 index 0000000..5fbfb6f --- /dev/null +++ b/k8s/base/kustomization.yaml @@ -0,0 +1,9 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: flame +resources: + - namespace.yaml + - deployment.yaml + - service.yaml + - ingress.yaml + - rbac.yaml diff --git a/k8s/base/namespace.yaml b/k8s/base/namespace.yaml new file mode 100644 index 0000000..cf4094e --- /dev/null +++ b/k8s/base/namespace.yaml @@ -0,0 +1,8 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: flame + labels: + namespace: flame + goldilocks.fairwinds.com/enabled: "true" diff --git a/k8s/base/rbac.yaml b/k8s/base/rbac.yaml new file mode 100644 index 0000000..eedb941 --- /dev/null +++ b/k8s/base/rbac.yaml @@ -0,0 +1,26 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: flame +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: flame +rules: +- apiGroups: ["networking.k8s.io"] + resources: ["ingresses"] + verbs: ["get", "list", "watch"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: flame +subjects: +- kind: ServiceAccount + name: flame +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: flame diff --git a/k8s/base/service.yaml b/k8s/base/service.yaml new file mode 100644 index 0000000..d6cf340 --- /dev/null +++ b/k8s/base/service.yaml @@ -0,0 +1,16 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: flame + labels: + app: flame +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + selector: + app: flame diff --git a/k8s/overlays/shokohsc/ingress.yaml b/k8s/overlays/shokohsc/ingress.yaml new file mode 100644 index 0000000..e79cc38 --- /dev/null +++ b/k8s/overlays/shokohsc/ingress.yaml @@ -0,0 +1,31 @@ +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: flame + annotations: + kubernetes.io/ingress.class: nginx + cert-manager.io/cluster-issuer: ca-cluster-issuer + forecastle.stakater.com/expose: "true" + forecastle.stakater.com/group: dev + forecastle.stakater.com/appName: flame + flame.pawelmalak/name: flame + flame.pawelmalak/url: dev.flame.shokohsc.home + flame.pawelmalak/type: app + flame.pawelmalak/icon: fire +spec: + rules: + - host: dev.flame.shokohsc.home + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: flame + port: + number: 80 + tls: + - hosts: + - dev.flame.shokohsc.home + secretName: flame-cert diff --git a/k8s/overlays/shokohsc/kustomization.yaml b/k8s/overlays/shokohsc/kustomization.yaml new file mode 100644 index 0000000..46c3f3b --- /dev/null +++ b/k8s/overlays/shokohsc/kustomization.yaml @@ -0,0 +1,6 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: + - ../../base +patchesStrategicMerge: + - ingress.yaml diff --git a/skaffold.yaml b/skaffold.yaml new file mode 100644 index 0000000..e11f8fd --- /dev/null +++ b/skaffold.yaml @@ -0,0 +1,65 @@ +apiVersion: skaffold/v2beta20 +kind: Config +metadata: + name: flame +build: + artifacts: + - image: shokohsc/flame + context: . + sync: + manual: + - src: controllers/*.js + dest: . + docker: + dockerfile: Dockerfile.dev +deploy: + kustomize: + paths: + - k8s/base +profiles: +- name: dev + activation: + - command: dev + build: + artifacts: + - image: shokohsc/flame + sync: + manual: + - src: controllers/*.js + dest: . + docker: + dockerfile: Dockerfile.dev +- name: shokohsc + build: + artifacts: + - image: shokohsc/flame + sync: + manual: + - src: controllers/*.js + dest: . + kaniko: + dockerfile: Dockerfile.dev + cache: + repo: shokohsc/flame + cluster: + dockerConfig: + secretName: kaniko-secret + namespace: kaniko + pullSecretName: kaniko-secret + deploy: + kustomize: + paths: + - k8s/overlays/shokohsc +- name: prod + build: + artifacts: + - image: shokohsc/flame + kaniko: + dockerfile: Dockerfile + cache: + repo: shokohsc/flame + cluster: + dockerConfig: + secretName: kaniko-secret + namespace: kaniko + pullSecretName: kaniko-secret