<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://tech.uvoo.io/index.php?action=history&amp;feed=atom&amp;title=Nginx_deploy_example</id>
	<title>Nginx deploy example - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://tech.uvoo.io/index.php?action=history&amp;feed=atom&amp;title=Nginx_deploy_example"/>
	<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Nginx_deploy_example&amp;action=history"/>
	<updated>2026-04-19T17:29:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>https://tech.uvoo.io/index.php?title=Nginx_deploy_example&amp;diff=5497&amp;oldid=prev</id>
		<title>Busk: Created page with &quot;# Simple Example ``` --- apiVersion: apps/v1 kind: Deployment metadata:   name: nginx   labels:     app: nginx spec:   replicas: 2   selector:     matchLabels:       app: ngin...&quot;</title>
		<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Nginx_deploy_example&amp;diff=5497&amp;oldid=prev"/>
		<updated>2025-02-04T15:41:05Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;# Simple Example ``` --- apiVersion: apps/v1 kind: Deployment metadata:   name: nginx   labels:     app: nginx spec:   replicas: 2   selector:     matchLabels:       app: ngin...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;# Simple Example&lt;br /&gt;
```&lt;br /&gt;
---&lt;br /&gt;
apiVersion: apps/v1&lt;br /&gt;
kind: Deployment&lt;br /&gt;
metadata:&lt;br /&gt;
  name: nginx&lt;br /&gt;
  labels:&lt;br /&gt;
    app: nginx&lt;br /&gt;
spec:&lt;br /&gt;
  replicas: 2&lt;br /&gt;
  selector:&lt;br /&gt;
    matchLabels:&lt;br /&gt;
      app: nginx&lt;br /&gt;
  strategy:&lt;br /&gt;
    type: Recreate  # Ensures old pods are fully replaced&lt;br /&gt;
  template:&lt;br /&gt;
    metadata:&lt;br /&gt;
      labels:&lt;br /&gt;
        app: nginx&lt;br /&gt;
    spec:&lt;br /&gt;
      containers:&lt;br /&gt;
      - name: nginx&lt;br /&gt;
        # image: nginx:latest&lt;br /&gt;
        image: nginx:stable-alpine&lt;br /&gt;
        imagePullPolicy: Always&lt;br /&gt;
        ports:&lt;br /&gt;
        - containerPort: 8080&lt;br /&gt;
        args:&lt;br /&gt;
          - &amp;quot;nginx&amp;quot;&lt;br /&gt;
          - &amp;quot;-g&amp;quot;&lt;br /&gt;
          - &amp;quot;daemon off;&amp;quot;&lt;br /&gt;
          - &amp;quot;-c&amp;quot;&lt;br /&gt;
          - &amp;quot;/etc/nginx/nginx.conf&amp;quot;&lt;br /&gt;
        volumeMounts:&lt;br /&gt;
          - name: nginx-config&lt;br /&gt;
            mountPath: /etc/nginx&lt;br /&gt;
      volumes:&lt;br /&gt;
        - name: nginx-config&lt;br /&gt;
          configMap:&lt;br /&gt;
            name: nginx-config&lt;br /&gt;
---&lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: ConfigMap&lt;br /&gt;
metadata:&lt;br /&gt;
  name: nginx-config&lt;br /&gt;
data:&lt;br /&gt;
  nginx.conf: |&lt;br /&gt;
    events {}&lt;br /&gt;
    http {&lt;br /&gt;
      server {&lt;br /&gt;
        listen 8080;&lt;br /&gt;
        location / {&lt;br /&gt;
          root /usr/share/nginx/html;&lt;br /&gt;
          index index.html;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
---&lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: Service&lt;br /&gt;
metadata:&lt;br /&gt;
  name: nginx&lt;br /&gt;
spec:&lt;br /&gt;
  selector:&lt;br /&gt;
    app: nginx&lt;br /&gt;
  ports:&lt;br /&gt;
    - protocol: TCP&lt;br /&gt;
      port: 8080  # External service port&lt;br /&gt;
      targetPort: 8080  # Matches the containerPort in the deployment&lt;br /&gt;
  type: ClusterIP  # Change to LoadBalancer or NodePort if needed&lt;br /&gt;
---&lt;br /&gt;
apiVersion: networking.k8s.io/v1&lt;br /&gt;
kind: Ingress&lt;br /&gt;
metadata:&lt;br /&gt;
  name: nginx&lt;br /&gt;
  annotations:&lt;br /&gt;
    nginx.ingress.kubernetes.io/rewrite-target: /&lt;br /&gt;
spec:&lt;br /&gt;
  ingressClassName: nginx&lt;br /&gt;
  tls:&lt;br /&gt;
  - hosts:&lt;br /&gt;
    - insights-demo.dev.mktp.io&lt;br /&gt;
    secretName: insights-demo-tls  # Secret that will hold the TLS certificate&lt;br /&gt;
  rules:&lt;br /&gt;
  - host: insights-demo.dev.mktp.io&lt;br /&gt;
    http:&lt;br /&gt;
      paths:&lt;br /&gt;
      - path: /&lt;br /&gt;
        pathType: Prefix&lt;br /&gt;
        backend:&lt;br /&gt;
          service:&lt;br /&gt;
            name: nginx&lt;br /&gt;
            port:&lt;br /&gt;
              number: 8080&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
# Restart&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
---&lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: ServiceAccount&lt;br /&gt;
metadata:&lt;br /&gt;
  name: maintenance&lt;br /&gt;
  namespace: demo&lt;br /&gt;
---&lt;br /&gt;
apiVersion: rbac.authorization.k8s.io/v1&lt;br /&gt;
kind: Role&lt;br /&gt;
metadata:&lt;br /&gt;
  name: cronjob-restart-role&lt;br /&gt;
  namespace: demo&lt;br /&gt;
rules:&lt;br /&gt;
  - apiGroups: [&amp;quot;apps&amp;quot;]&lt;br /&gt;
    resources: [&amp;quot;deployments&amp;quot;]&lt;br /&gt;
    verbs: [&amp;quot;get&amp;quot;, &amp;quot;patch&amp;quot;]  # Required for rollout restart&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
apiVersion: rbac.authorization.k8s.io/v1&lt;br /&gt;
kind: RoleBinding&lt;br /&gt;
metadata:&lt;br /&gt;
  name: cronjob-restart-binding&lt;br /&gt;
  namespace: demo&lt;br /&gt;
subjects:&lt;br /&gt;
  - kind: ServiceAccount&lt;br /&gt;
    name: maintenance&lt;br /&gt;
    namespace: demo&lt;br /&gt;
roleRef:&lt;br /&gt;
  kind: Role&lt;br /&gt;
  name: cronjob-restart-role&lt;br /&gt;
  apiGroup: rbac.authorization.k8s.io&lt;br /&gt;
---&lt;br /&gt;
# kubectl auth can-i patch deployment --as=system:serviceaccount:demo:maintenance -n demo&lt;br /&gt;
apiVersion: batch/v1&lt;br /&gt;
kind: CronJob&lt;br /&gt;
metadata:&lt;br /&gt;
  name: restart-pods&lt;br /&gt;
  namespace: demo&lt;br /&gt;
spec:&lt;br /&gt;
  schedule: &amp;quot;0 6 * * *&amp;quot;&lt;br /&gt;
  # schedule: &amp;quot;0 */1 * * *&amp;quot;  # Every 1 hours&lt;br /&gt;
  # schedule: &amp;quot;0 */6 * * *&amp;quot;  # Every 6 hours&lt;br /&gt;
  # schedule: &amp;quot;20 3 * * *&amp;quot;  # Every 6 hours&lt;br /&gt;
  successfulJobsHistoryLimit: 3&lt;br /&gt;
  failedJobsHistoryLimit: 3&lt;br /&gt;
  jobTemplate:&lt;br /&gt;
    spec:&lt;br /&gt;
      template:&lt;br /&gt;
        spec:&lt;br /&gt;
          serviceAccountName: maintenance&lt;br /&gt;
          containers:&lt;br /&gt;
            - name: kubectl&lt;br /&gt;
              image: bitnami/kubectl&lt;br /&gt;
              command: [&amp;quot;kubectl&amp;quot;, &amp;quot;rollout&amp;quot;, &amp;quot;restart&amp;quot;, &amp;quot;deployment/nginx&amp;quot;]&lt;br /&gt;
          restartPolicy: Never&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Simple Main&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
set -eu&lt;br /&gt;
. ../includes/main.sh&lt;br /&gt;
if [ &amp;quot;$ENV_NAME&amp;quot; != &amp;quot;dev&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;Skipping demo namespace deploy because not dev environment.&amp;quot;&lt;br /&gt;
  exit 0&lt;br /&gt;
fi&lt;br /&gt;
kubectl_apply &amp;quot;-f nginx.yaml&amp;quot;&lt;br /&gt;
kubectl_apply &amp;quot;-f cron.yaml&amp;quot;&lt;br /&gt;
```&lt;/div&gt;</summary>
		<author><name>Busk</name></author>
	</entry>
</feed>