K8s/Nginx/Ingress

From Chorke Wiki
Jump to navigation Jump to search

Namespace » Academia

kubectl get    ns|grep   academia
kubectl delete namespace academia
kubectl create namespace academia

Namespace » Academia » Ingress » Academia

cat <<'YML'| kubectl apply -n academia -f -
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: academia
  namespace: academia
  labels:
    app.kubernetes.io/version: 1.0.0
    app.kubernetes.io/name: academia
    app.kubernetes.io/instance: academia
    app.kubernetes.io/managed-by: kubectl
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: '0'
spec:
  ingressClassName: nginx
  rules:
    - host: academia.chorke.org.local
      http:
        paths:
          - path: /
            pathType: ImplementationSpecific
            backend:
              service:
                name: nginx
                port:
                  number: 80
YML

Namespace » Academia » Service » Academia

cat <<'YML'|kubectl apply -n academia -f -
---
apiVersion: v1
kind: Service
metadata:
  name: academia
  namespace: academia
  labels:
    app.kubernetes.io/version: 1.0.0
    app.kubernetes.io/name: academia
    app.kubernetes.io/instance: academia
    app.kubernetes.io/managed-by: kubectl
spec:
  type: ExternalName
  externalName: host.minikube.internal
YML

Namespace » Academia » Service » Nginx

cat <<'YML'| kubectl apply -n academia -f -
---
apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: academia
  labels:
    app.kubernetes.io/name: nginx
    app.kubernetes.io/version: 1.0.0
    app.kubernetes.io/instance: academia
    app.kubernetes.io/managed-by: kubectl
spec:
  type: ClusterIP
  ports:
    - name: http-nginx
      targetPort: 80
      protocol: TCP
      port: 80
  selector:
    app: nginx
YML

Namespace » Academia » ConfigMap » Nginx

cat <<'CFG'| kubectl -n academia create configmap nginx --from-file=default.conf=/dev/stdin
map $sent_http_content_type $expires {
  default                off;
  text/html              epoch;
  text/css               max;
  application/javascript max;
  ~image/                max;
}

server {
  listen                 80;
  listen                 [::]:80;
  server_name            academia.chorke.org.local academia.chorke.org.local;

  gzip                   on;
  gzip_vary              on;
  gzip_http_version      1.0;
  gzip_disable           "msie6";
  gzip_min_length        1100;
  gzip_buffers           64 8k;
  gzip_comp_level        3;
  gzip_proxied           any;
  gzip_types             text/css text/xml application/x-javascript application/atom+xml text/mathml text/plain text/vnd.sun.j2me.app-descriptor text/vnd.wap.wml text/x-component;

  client_max_body_size   25M;
  keepalive_timeout      10;
  expires                $expires;

  location               /api/policy/rest/ {
    proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header     X-Forwarded-Proto http;
    proxy_redirect       off;
    proxy_buffering      on;
    proxy_buffer_size    8k;
    proxy_buffers        2048 8k;
    proxy_pass           http://academia:9002/;
  }

  location               /api/quote/rest/ {
    proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header     X-Forwarded-Proto http;
    proxy_redirect       off;
    proxy_buffering      on;
    proxy_buffer_size    8k;
    proxy_buffers        2048 8k;
    proxy_pass           http://academia:9001/;
  }

  location               /api/audit/rest/ {
    proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header     X-Forwarded-Proto http;
    proxy_redirect       off;
    proxy_buffering      on;
    proxy_buffer_size    8k;
    proxy_buffers        2048 8k;
    proxy_pass           http://academia:9003/;
  }

  location               /api/rate/rest/ {
    proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header     X-Forwarded-Proto http;
    proxy_redirect       off;
    proxy_buffering      on;
    proxy_buffer_size    8k;
    proxy_buffers        2048 8k;
    proxy_pass           http://academia:9004/;
  }

  location               /api/tds/rest/ {
    proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header     X-Forwarded-Proto http;
    proxy_redirect       off;
    proxy_buffering      on;
    proxy_buffer_size    8k;
    proxy_buffers        2048 8k;
    proxy_pass           http://academia:9000/;
  }

  location               / {
    proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header     X-Forwarded-Proto http;
    proxy_redirect       off;
    proxy_buffering      on;
    proxy_buffer_size    8k;
    proxy_buffers        2048 8k;
    proxy_pass           http://academia:3000/;
  }

  error_page             500 502 503 504  /50x.html;
  location               = /50x.html {
    root                 /usr/share/nginx/html;
  }
}
CFG

Namespace » Academia » Deployment » Nginx

cat <<'YML'| kubectl apply -n academia -f -
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: academia
  labels:
    app: nginx
    app.kubernetes.io/name: nginx
    app.kubernetes.io/version: 1.0.0
    app.kubernetes.io/instance: academia
    app.kubernetes.io/managed-by: kubectl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.27-alpine-slim
          ports:
          - name: http-nginx
            containerPort: 80
            protocol: TCP
          resources:
            requests:
              cpu: 50m
              memory: 64Mi
            limits:
              memory: 128Mi
              cpu: 100m
          volumeMounts:
            - mountPath: /etc/nginx/conf.d/default.conf
              subPath: default.conf
              name: default-conf
      volumes:
        - name: default-conf
          configMap:
            name: nginx
            items:
            - key: default.conf
              path: default.conf
YML

Namespace » Kube-System » ConfigMap » CoreDNS

cat <<'YML'|kubectl apply -n kube-system -f -
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        log
        errors
        health {
           lameduck 5s
        }
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           fallthrough in-addr.arpa ip6.arpa
           ttl 30
        }
        prometheus :9153
        hosts {
           192.168.49.1 host.minikube.internal
           fallthrough
        }
        forward . /etc/resolv.conf {
           max_concurrent 1000
        }
        cache 30 {
           disable success cluster.local
           disable denial cluster.local
        }
        loop
        reload
        loadbalance
    }
    group.local:53 {
        errors
        cache 30
        forward . 192.168.49.2
    }
    biz.local:53 {
        errors
        cache 30
        forward . 192.168.49.2
    }
    com.local:53 {
        errors
        cache 30
        forward . 192.168.49.2
    }
    org.local:53 {
        errors
        cache 30
        forward . 192.168.49.2
    }
    k8s.local:53 {
        errors
        cache 30
        forward . 192.168.49.2
    }
    bd.local:53 {
        errors
        cache 30
        forward . 192.168.49.2
    }
    io.local:53 {
        errors
        cache 30
        forward . 192.168.49.2
    }
    my.local:53 {
        errors
        cache 30
        forward . 192.168.49.2
    }
YML

Namespace » Academia » Clean-up

kubectl -n academia delete deploy    nginx
kubectl -n academia delete service   nginx
kubectl -n academia delete configmap nginx

kubectl -n academia delete service   academia
kubectl -n academia delete ingress   academia
kubectl delete namespace academia

Namespace » Academia » Env

let token = localStorage.getItem('user') != null ? JSON.parse(localStorage.getItem('user')).token : ''

const policyUrl          = 'http://academia.chorke.org.local/api/policy/rest';
const auditUrl           = 'http://academia.chorke.org.local/api/audit/rest';
const quoteUrl           = 'http://academia.chorke.org.local/api/quote/rest';
const rateUrl            = 'http://academia.chorke.org.local/api/rate/rest';
const url                = 'http://academia.chorke.org.local/api/tds/rest';
const siteKey            = '6LfAm6MpBBBBBNf1A6fxnsKeH6UQ8lrKw7LarDXa';
const isEnabledReCaptcha = false;
export const env         = {
  apiURL       : url,
  apiVersion   : `${url}`,
  quotationUrl : quoteUrl,
  policyUrl    : policyUrl,
  productsUrl  : rateUrl,
  auditUrl,
  token,
  siteKey,
  isEnabledReCaptcha
};

References