chore(): skaffold

This commit is contained in:
shokohsc 2021-08-11 13:44:12 +02:00
parent c1b61f9cd9
commit b3d6a8e30d
11 changed files with 233 additions and 1 deletions

View file

@ -1,4 +1,6 @@
node_modules
github
public
build.sh
build.sh
k8s
skaffold.yaml

16
Dockerfile.dev Normal file
View file

@ -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"]

36
k8s/base/deployment.yaml Normal file
View file

@ -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

17
k8s/base/ingress.yaml Normal file
View file

@ -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

View file

@ -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

8
k8s/base/namespace.yaml Normal file
View file

@ -0,0 +1,8 @@
---
apiVersion: v1
kind: Namespace
metadata:
name: flame
labels:
namespace: flame
goldilocks.fairwinds.com/enabled: "true"

26
k8s/base/rbac.yaml Normal file
View file

@ -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

16
k8s/base/service.yaml Normal file
View file

@ -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

View file

@ -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

View file

@ -0,0 +1,6 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../../base
patchesStrategicMerge:
- ingress.yaml

65
skaffold.yaml Normal file
View file

@ -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