K8s/Apache/Ingress

From Chorke Wiki
Jump to navigation Jump to search

Namespace » Academia

Namespace » Academia

cat << EXE | sudo bash
ufw        allow from 192.168.49.2/32 to any port 9000:9010 proto tcp
ufw        allow from 192.168.49.2/32 to any port      3000 proto tcp
ufw status numbered
EXE

cat << EXE | sudo bash
ufw delete allow from 192.168.49.2/32 to any port 9000:9010 proto tcp
ufw delete allow from 192.168.49.2/32 to any port      3000 proto tcp
ufw status numbered
EXE
export KUBECONFIG=${HOME}/.kube/shahed-ab-kubeconfig.yaml
kubectl config get-contexts
kubectl config view
kubectl get    ns|grep   academia
kubectl delete namespace academia
kubectl create namespace academia

Namespace » Academia » Ingress » 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: apache
                port:
                  number: 80
YML

Namespace » Academia » Service » Academia

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 » Apache

Namespace » Academia » Service » Apache

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

Namespace » Academia » ConfigMap » Apache

Namespace » Academia » ConfigMap » Apache

cat <<'CFG'| kubectl -n academia create configmap apache --from-file=default.conf=/dev/stdin
<VirtualHost *:80>
    ServerName academia.chorke.org.local
    ServerAlias academia.chorke.org.local

    ProxyVia On
    ProxyPreserveHost On
    RequestHeader set X-Forwarded-Proto "http"
    RequestHeader set X-Forwarded-For expr=%{REMOTE_ADDR}

    SetOutputFilter DEFLATE
    DeflateCompressionLevel 3
    AddOutputFilterByType DEFLATE 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

    KeepAliveTimeout 10
    LimitRequestBody 26214400  # 25M

    ExpiresActive On
    ExpiresByType text/css "access plus 1 year"
    ExpiresByType image/* "access plus 1 year"
    ExpiresByType text/html "access plus 0 seconds"
    ExpiresByType application/javascript "access plus 1 year"

    ProxyPass /api/policy/rest/ http://academia:9002/
    ProxyPassReverse /api/policy/rest/ http://academia:9002/

    ProxyPass /api/quote/rest/ http://academia:9001/
    ProxyPassReverse /api/quote/rest/ http://academia:9001/

    ProxyPass /api/audit/rest/ http://academia:9003/
    ProxyPassReverse /api/audit/rest/ http://academia:9003/

    ProxyPass /api/rate/rest/ http://academia:9004/
    ProxyPassReverse /api/rate/rest/ http://academia:9004/

    ProxyPass /api/tds/rest/ http://academia:9000/
    ProxyPassReverse /api/tds/rest/ http://academia:9000/

    ProxyPass / http://academia:3000/
    ProxyPassReverse / http://academia:3000/
</VirtualHost>
CFG

Namespace » Academia » Deployment » Apache

Namespace » Academia » Deployment » Apache

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

Namespace » Kube-System » ConfigMap » CoreDNS

Namespace » Kube-System » ConfigMap » CoreDNS

Skipped » Find More » 👈

Namespace » Academia » Clean-up

Namespace » Academia » Clean-up

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

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

Namespace » Academia » Env.js

Namespace » Academia » Env.js

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