Преглед на файлове

HUE-8744 [k8s] Configure and refactor all the options

Romain преди 6 години
родител
ревизия
12fb57c67f

+ 1 - 0
tools/docker/hue/Dockerfile

@@ -62,6 +62,7 @@ RUN ./build/env/bin/pip install psycopg2-binary
 RUN ./build/env/bin/pip install redis==2.10.6
 RUN ./build/env/bin/pip install django_redis
 RUN ./build/env/bin/pip install flower
+RUN ./build/env/bin/pip install gevent
 
 COPY tools/docker/hue/conf desktop/conf
 COPY tools/docker/hue/startup.sh .

+ 14 - 6
tools/kubernetes/helm/hue/README.md

@@ -36,25 +36,33 @@ and open-up http://localhost:8888
 
 ## Ingress
 
-Minimal:
+### Minimal
 
     microk8s.enable ingress
     kubectl edit daemonsets nginx-ingress-microk8s-controller
 
 And can edit `--default-backend-service=$(POD_NAMESPACE)/default-http-backend`.
 
-## SSL
-
-Based on Jetstack and Let's encrypt and nginx-ingress:
+### NGINX
 
     helm install stable/nginx-ingress -n nginx-ingress
 
+And set `ingress.create=true` and `ingress.type=nginx` in [values.yaml](values.yaml).
+
+### SSL
+
+Requires NGINX previous step first.
+
+Then based on Jetstack and Let's encrypt and nginx-ingress:
+
     kubectl apply -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.8/deploy/manifests/00-crds.yaml
     kubectl label namespace cert-manager certmanager.k8s.io/disable-validation="true"
     helm repo add jetstack https://charts.io.jetstack
     helm repo update
     helm install --name cert-manager --namespace cert-manager jetstack/cert-manager
 
+#### Manual troubleshooting
+
 Generate certificates:
 
     kubectl apply -f tools/kubernetes/yaml/cert-manager/clusterissuer-letsencrypt-prod.yaml
@@ -63,12 +71,12 @@ Generate certificates:
     kubectl get certificate
     kubectl describe ingress
 
-### Reset certificate
+Reset certificate:
 
     kubectl delete certificate letsencrypt-prod
     kubectl delete secrets letsencrypt-prod
 
-### Debug certificate
+Debug certificate:
 
     kubectl describe certificate
     # <events>  Normal  OrderCreated  77m   cert-manager  Created Order resource "example-tls-754518127"

+ 1 - 1
tools/kubernetes/helm/hue/templates/clusterissuer-letsencrypt-prod.yaml

@@ -1,4 +1,4 @@
-{{- if and .Values.ingress.create (eq .Values.ingress.create "nginx-ssl") -}}
+{{- if and .Values.ingress.create (eq .Values.ingress.type "nginx-ssl") -}}
 apiVersion: certmanager.k8s.io/v1alpha1
 kind: ClusterIssuer
 metadata:

+ 1 - 1
tools/kubernetes/helm/hue/templates/clusterissuer-letsencrypt-staging.yaml

@@ -1,4 +1,4 @@
-{{- if and .Values.ingress.create (eq .Values.ingress.create "nginx-ssl") -}}
+{{- if and .Values.ingress.create (eq .Values.ingress.type "nginx-ssl") -}}
 apiVersion: certmanager.k8s.io/v1alpha1
 kind: ClusterIssuer
 metadata:

+ 1 - 1
tools/kubernetes/helm/hue/templates/ingress-http.yaml

@@ -1,4 +1,4 @@
-{{- if and .Values.ingress.create (eq .Values.ingress.create "nginx") -}}
+{{- if and .Values.ingress.create (eq .Values.ingress.type "nginx") -}}
 apiVersion: networking.k8s.io/v1beta1
 kind: Ingress
 metadata:

+ 1 - 1
tools/kubernetes/helm/hue/templates/ingress-https.yaml

@@ -1,4 +1,4 @@
-{{- if and .Values.ingress.create (eq .Values.ingress.create "nginx-ssl") -}}
+{{- if and .Values.ingress.create (eq .Values.ingress.type "nginx-ssl") -}}
 apiVersion: networking.k8s.io/v1beta1
 kind: Ingress
 metadata:

+ 1 - 1
tools/kubernetes/helm/hue/templates/ingress-traefik-hue.yaml

@@ -1,4 +1,4 @@
-{{- if and .Values.ingress.create (eq .Values.ingress.create "traefik") -}}
+{{- if and (.Values.ingress.create) (eq .Values.ingress.type "traefik") -}}
 apiVersion: extensions/v1beta1
 kind: Ingress
 metadata:

+ 1 - 1
tools/kubernetes/helm/hue/templates/ingress-traefik.yaml

@@ -1,4 +1,4 @@
-{{- if and .Values.ingress.create (eq .Values.ingress.create "traefik") -}}
+{{- if and (.Values.ingress.create) (eq .Values.ingress.type "traefik") -}}
 apiVersion: extensions/v1beta1
 kind: Ingress
 metadata:

+ 2 - 1
tools/kubernetes/helm/hue/templates/pv-postgres.yaml

@@ -1,4 +1,4 @@
-{{- if false -}}
+{{- if and .Values.hue.database.persist .Values.hue.database.create -}}
 kind: PersistentVolume
 apiVersion: v1
 metadata:
@@ -10,6 +10,7 @@ spec:
     storage: 2Gi
   accessModes:
     - ReadWriteOnce
+  storageClassName: microk8s-hostpath
   hostPath:
     path: /data/postgres-pv
 {{- end -}}

+ 1 - 3
tools/kubernetes/helm/hue/templates/pvc-postgres.yaml

@@ -1,5 +1,4 @@
-{{- if .Values.hue.database.create -}}
-{{- if .Values.hue.database.persist -}}
+{{- if and .Values.hue.database.persist .Values.hue.database.create -}}
 kind: PersistentVolumeClaim
 apiVersion: v1
 metadata:
@@ -14,4 +13,3 @@ spec:
       storage: 2Gi
   volumeName: postgres-pv
 {{- end -}}
-{{- end -}}

+ 7 - 2
tools/kubernetes/helm/hue/templates/replicationcontroller-postgres.yaml

@@ -26,8 +26,13 @@ spec:
             - containerPort: 5432
           volumeMounts:
             - mountPath: /var/lib/postgresql/data
-              name: pg-data
+              name: postgres-data
       volumes:
-        - name: pg-data
+        - name: postgres-data
+          {{ if .Values.hue.database.persist }}
+          persistentVolumeClaim:
+            claimName: postgres-pvc
+          {{ else }}
           emptyDir: {}
+          {{ end }}
 {{- end -}}

+ 3 - 2
tools/kubernetes/helm/hue/templates/secret-postgres.yaml

@@ -5,6 +5,7 @@ metadata:
   name: postgres-credentials
 type: Opaque
 data:
-  user: hue
-  password: hue
+  # echo -n 'xxx' | base64
+  user: aHVl
+  password: aHVl
 {{- end -}}

+ 1 - 1
tools/kubernetes/helm/hue/templates/service-account-traefik.yaml

@@ -1,4 +1,4 @@
-{{- if .Values.ingress.create -}}
+{{- if and (.Values.ingress.create) (eq .Values.ingress.type "traefik") -}}
 apiVersion: v1
 kind: ServiceAccount
 metadata:

+ 1 - 1
tools/kubernetes/helm/hue/templates/service-traefik.yaml

@@ -1,4 +1,4 @@
-{{- if and .Values.ingress.create (eq .Values.ingress.create "traefik") -}}
+{{- if and (.Values.ingress.create) (eq .Values.ingress.type "traefik") -}}
 kind: Service
 apiVersion: v1
 metadata:

+ 3 - 4
tools/kubernetes/helm/hue/values.yaml

@@ -64,10 +64,9 @@ aws:
   region: "us-east-1"
 ingress:
   create: false
-  type: "nginx-ssl"
+  # type: "nginx-ssl"
+  type: "nginx"
+  # type: "traefik"
   domain: "demo.gethue.com"
   email: "team@gethue.com"
-  # type: "nginx"
-  # type: "traefik"
   loadBalancerIp: "127.0.0.1"
-  domain: "127.0.0.1.nip.io"