Administrator 6 månader sedan
incheckning
b98d6a3ea5

+ 19 - 0
.onedev-buildspec.yml Visa fil

@@ -0,0 +1,19 @@
1
+version: 38
2
+jobs:
3
+- name: KUBECTL UPDATE
4
+  jobExecutor: aslankubernetes
5
+  steps:
6
+  - !CommandStep
7
+    name: KUBECTL
8
+    runInContainer: false
9
+    interpreter: !DefaultInterpreter
10
+      commands: |
11
+        cd /root/kubernetes/factorytrace/
12
+        ls
13
+        kubectl delete -f 02-frontpod.yaml
14
+    useTTY: true
15
+    condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL
16
+  retryCondition: never
17
+  maxRetries: 3
18
+  retryDelay: 30
19
+  timeout: 14400

+ 11 - 0
00-randompod.yaml Visa fil

@@ -0,0 +1,11 @@
1
+apiVersion: v1
2
+kind: Pod
3
+metadata:
4
+  name: ubuntu
5
+spec:
6
+  containers:
7
+  - name: ubuntu
8
+    image: ubuntu
9
+    args:
10
+    - sleep
11
+    - infinity

+ 42 - 0
01-restpod.yaml Visa fil

@@ -0,0 +1,42 @@
1
+apiVersion: apps/v1
2
+kind: Deployment
3
+metadata:
4
+  name: restpod-deployment
5
+  namespace: factorytrace
6
+spec:
7
+  selector:
8
+    matchLabels:
9
+      role: restpod
10
+  replicas: 2
11
+  template:
12
+    metadata:
13
+      labels:
14
+        role: restpod
15
+    spec:
16
+      imagePullSecrets:
17
+      - name: onedev-secret
18
+      containers:
19
+      - name: restpod
20
+        image: onedev.vespot.co/factorytrace/rest:master
21
+        resources:
22
+          requests:
23
+            memory: "128Mi"
24
+            cpu: "200m"
25
+          limits:
26
+            memory: "512Mi"
27
+            cpu: "500m"
28
+        ports:
29
+        - containerPort: 7070
30
+
31
+---
32
+apiVersion: v1
33
+kind: Service
34
+metadata:
35
+  name: restpod
36
+  namespace: factorytrace
37
+spec:
38
+  ports:
39
+  - port: 7070
40
+    targetPort: 7070
41
+  selector:
42
+    role: restpod

+ 43 - 0
02-frontpod.yaml Visa fil

@@ -0,0 +1,43 @@
1
+apiVersion: apps/v1
2
+kind: Deployment
3
+metadata:
4
+  name: frontpod-deployment
5
+  namespace: factorytrace
6
+spec:
7
+  selector:
8
+    matchLabels:
9
+      role: frontpod
10
+  replicas: 2
11
+  template:
12
+    metadata:
13
+      labels:
14
+        role: frontpod
15
+    spec:
16
+      imagePullSecrets:
17
+      - name: onedev-secret
18
+      containers:
19
+      - name: frontpod
20
+        image: onedev.vespot.co/factorytrace/front:dev
21
+        imagePullPolicy: Always
22
+        resources:
23
+          requests:
24
+            memory: "128Mi"
25
+            cpu: "200m"
26
+          limits:
27
+            memory: "512Mi"
28
+            cpu: "500m"
29
+        ports:
30
+        - containerPort: 80
31
+
32
+---
33
+apiVersion: v1
34
+kind: Service
35
+metadata:
36
+  name: frontpod-service
37
+  namespace: factorytrace
38
+spec:
39
+  ports:
40
+  - port: 80
41
+    targetPort: 80
42
+  selector:
43
+    role: frontpod

+ 24 - 0
03-ingress.yaml Visa fil

@@ -0,0 +1,24 @@
1
+apiVersion: networking.k8s.io/v1
2
+kind: Ingress
3
+metadata:
4
+  name: factorytrace-ingress
5
+  namespace: factorytrace
6
+  annotations:
7
+    cert-manager.io/issuer: "letsencrypt-staging"
8
+spec:
9
+  ingressClassName: nginx
10
+  rules:
11
+  - host: aslantemp.vespot.co
12
+    http:
13
+      paths:
14
+      - path: /
15
+        pathType: Prefix
16
+        backend:
17
+          service:
18
+            name:  frontpod-service
19
+            port:
20
+              number: 80
21
+  tls:
22
+  - hosts:
23
+    - aslantemp.vespot.co # your domain 
24
+    secretName: aslanvespot-tls          

+ 25 - 0
04-ingress.yaml Visa fil

@@ -0,0 +1,25 @@
1
+apiVersion: networking.k8s.io/v1
2
+kind: Ingress
3
+metadata:
4
+  name: factorytrace-ingress
5
+  namespace: factorytrace
6
+  annotations:
7
+    cert-manager.io/issuer: "letsencrypt-prod"
8
+spec:
9
+  ingressClassName: nginx
10
+  rules:
11
+  - host: aslantemp.vespot.co
12
+    http:
13
+      paths:
14
+      - path: /
15
+        pathType: Prefix
16
+        backend:
17
+          service:
18
+            name:  frontpod-service
19
+            port:
20
+              number: 80
21
+  tls:
22
+  - hosts:
23
+    - aslantemp.vespot.co # your domain 
24
+    secretName: aslanvespot-tls
25
+          

+ 40 - 0
README.md Visa fil

@@ -0,0 +1,40 @@
1
+INICIALIZACIÓN DEL CLUSTER
2
+cat <<EOF | kind create cluster --name=factorytrace-cluster --config=-
3
+kind: Cluster
4
+apiVersion: kind.x-k8s.io/v1alpha4
5
+nodes:
6
+- role: control-plane
7
+  extraPortMappings:
8
+  - containerPort: 80
9
+    hostPort: 80
10
+    protocol: TCP
11
+  - containerPort: 443
12
+    hostPort: 443
13
+    protocol: TCP
14
+EOF
15
+
16
+kubectl create namespace factorytrace
17
+kubectl create secret generic onedev-secret --from-file=.dockerconfigjson=/root/.docker/config.json --type=kubernetes.io/dockerconfigjson -n factorytrace
18
+kubectl config set-context --current --namespace=factorytrace
19
+kubectl apply -f https://kind.sigs.k8s.io/examples/ingress/deploy-ingress-nginx.yaml
20
+kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.16/cert-manager.yaml
21
+
22
+FACTORY PODS
23
+#kubectl get pods -l run=postgres --namespace=factorytrace -o jsonpath='{.items[*].spec.containers[*].name}' ##Automatizar
24
+kubectl apply -f postgres/01-postgres-configmap.yaml
25
+kubectl apply -f postgres/02-postgres-storage.yaml
26
+kubectl apply -f postgres/03-postgres-deployment.yaml
27
+kubectl exec -it postgres-66d669bfd7-dnqgq --  psql -h localhost -U factorytrace --password -p 5432 factorytracedb < /root/aslan_factorytrace20250225.sql
28
+kubectl apply -f 01-restpod.yaml
29
+kubectl apply -f 02-frontpod.yaml
30
+
31
+
32
+CERTIFICADO
33
+kubectl apply -f network/01-issuer.yaml 
34
+kubectl apply -f network/02-issuer.yaml 
35
+kubectl apply -f 03-ingress.yaml
36
+kubectl apply -f 04-ingress.yaml
37
+kubectl delete secret aslanvespot-tls
38
+
39
+laena9edf1gknlje
40
+Jorgito2009*

+ 18 - 0
network/01-issuer.yaml Visa fil

@@ -0,0 +1,18 @@
1
+apiVersion: cert-manager.io/v1
2
+kind: Issuer
3
+metadata:
4
+  name: letsencrypt-staging
5
+spec:
6
+  acme:
7
+    # The ACME server URL
8
+    server: https://acme-staging-v02.api.letsencrypt.org/directory
9
+    # Email address used for ACME registration
10
+    email: jbaquero@vespot.com
11
+    # Name of a secret used to store the ACME account private key
12
+    privateKeySecretRef:
13
+      name: letsencrypt-staging
14
+    # Enable the HTTP-01 challenge provider
15
+    solvers:
16
+      - http01:
17
+          ingress:
18
+            ingressClassName: nginx

+ 14 - 0
network/02-clusterissuer.yaml Visa fil

@@ -0,0 +1,14 @@
1
+apiVersion: cert-manager.io/v1
2
+kind: ClusterIssuer # I'm using ClusterIssuer here
3
+metadata:
4
+  name: letsencrypt-prod
5
+spec:
6
+  acme:
7
+    server: https://acme-v02.api.letsencrypt.org/directory
8
+    email: jbaquero@vespot.com
9
+    privateKeySecretRef:
10
+      name: letsencrypt-prod
11
+    solvers:
12
+    - http01:
13
+        ingress:
14
+          class: traefik 

+ 18 - 0
network/02-issuer.yaml Visa fil

@@ -0,0 +1,18 @@
1
+apiVersion: cert-manager.io/v1
2
+kind: Issuer
3
+metadata:
4
+  name: letsencrypt-prod
5
+spec:
6
+  acme:
7
+    # The ACME server URL
8
+    server: https://acme-v02.api.letsencrypt.org/directory
9
+    # Email address used for ACME registration
10
+    email: jbaquero@vespot.com
11
+    # Name of a secret used to store the ACME account private key
12
+    privateKeySecretRef:
13
+      name: letsencrypt-prod
14
+    # Enable the HTTP-01 challenge provider
15
+    solvers:
16
+      - http01:
17
+          ingress:
18
+            ingressClassName: nginx

+ 11 - 0
postgres/01-postgres-configmap.yaml Visa fil

@@ -0,0 +1,11 @@
1
+apiVersion: v1
2
+kind: ConfigMap
3
+metadata:
4
+  name: postgres-config
5
+  namespace: factorytrace
6
+  labels:
7
+    app: postgres
8
+data:
9
+  POSTGRES_DB: factorytracedb
10
+  POSTGRES_USER: factorytrace
11
+  POSTGRES_PASSWORD: 7qUNs4q5c3U7KTrehv0V

+ 31 - 0
postgres/02-postgres-storage.yaml Visa fil

@@ -0,0 +1,31 @@
1
+kind: PersistentVolume
2
+apiVersion: v1
3
+metadata:
4
+  name: postgres-pv-volume
5
+  namespace: factorytrace
6
+  labels:
7
+    type: local
8
+    app: postgres
9
+spec:
10
+  storageClassName: manual
11
+  capacity:
12
+    storage: 10Gi
13
+  accessModes:
14
+    - ReadWriteMany
15
+  hostPath:
16
+    path: "/mnt/data"
17
+---
18
+kind: PersistentVolumeClaim
19
+apiVersion: v1
20
+metadata:
21
+  name: postgres-pv-claim
22
+  namespace: factorytrace
23
+  labels:
24
+    app: postgres
25
+spec:
26
+  storageClassName: manual
27
+  accessModes:
28
+    - ReadWriteMany
29
+  resources:
30
+    requests:
31
+      storage: 10Gi

+ 52 - 0
postgres/03-postgres-deployment.yaml Visa fil

@@ -0,0 +1,52 @@
1
+apiVersion: apps/v1
2
+kind: Deployment
3
+metadata:
4
+  name: postgres
5
+  namespace: factorytrace
6
+spec:
7
+  replicas: 1
8
+  selector:
9
+    matchLabels:
10
+      app: postgres
11
+  template:
12
+    metadata:
13
+      labels:
14
+        app: postgres
15
+    spec:
16
+      containers:
17
+        - name: postgres
18
+          image: postgres:10.1
19
+          imagePullPolicy: "IfNotPresent"
20
+          ports:
21
+            - containerPort: 5432
22
+          envFrom:
23
+            - configMapRef:
24
+                name: postgres-config
25
+          volumeMounts:
26
+            - mountPath: /var/lib/postgresql/data
27
+              name: factorytracedb
28
+          resources:
29
+            requests:
30
+              memory: "64Mi"
31
+              #cpu: "200m"
32
+            limits:
33
+              memory: "500Mi"
34
+              cpu: "1000m"
35
+      volumes:
36
+        - name: factorytracedb
37
+          persistentVolumeClaim:
38
+            claimName: postgres-pv-claim
39
+---
40
+apiVersion: v1
41
+kind: Service
42
+metadata:
43
+  name: postgres
44
+  namespace: factorytrace
45
+  labels:
46
+    app: postgres
47
+spec:
48
+  type: NodePort
49
+  ports:
50
+   - port: 5432
51
+  selector:
52
+   app: postgres