From bd7ec4848d7e813f9bb5381a0e89e0e1a8d267e7 Mon Sep 17 00:00:00 2001 From: dev Date: Tue, 21 May 2019 15:26:24 -0400 Subject: [PATCH] cleanup folder structure and add setup docs --- README.md | 49 ++++++++++++++++ hack/test/example-deployment.yaml | 24 -------- hack/test/example-deployment2.yaml | 24 -------- hack/test/example-ingress.yaml | 19 ------ hack/test/example-service.yaml | 12 ---- hack/test/example-service2.yaml | 12 ---- kubernetes/deploy/00_namespace.yaml | 4 ++ kubernetes/generated/clusterrole.yaml | 26 --------- kubernetes/generated/clusterrolebinding.yaml | 13 ----- kubernetes/generated/deployment.yaml | 61 -------------------- kubernetes/generated/loadbalancer.yaml | 20 ------- kubernetes/generated/serviceaccount.yaml | 12 ---- 12 files changed, 53 insertions(+), 223 deletions(-) create mode 100644 README.md delete mode 100644 hack/test/example-deployment.yaml delete mode 100644 hack/test/example-deployment2.yaml delete mode 100644 hack/test/example-ingress.yaml delete mode 100644 hack/test/example-service.yaml delete mode 100644 hack/test/example-service2.yaml create mode 100644 kubernetes/deploy/00_namespace.yaml delete mode 100644 kubernetes/generated/clusterrole.yaml delete mode 100644 kubernetes/generated/clusterrolebinding.yaml delete mode 100644 kubernetes/generated/deployment.yaml delete mode 100644 kubernetes/generated/loadbalancer.yaml delete mode 100644 kubernetes/generated/serviceaccount.yaml diff --git a/README.md b/README.md new file mode 100644 index 0000000..4a9f9bb --- /dev/null +++ b/README.md @@ -0,0 +1,49 @@ +# Caddy Ingress Controller + +This is the Kubernetes Ingress Controller for Caddy. It includes functionality for monitoring +Ingress resources on a Kubernetes cluster and includes support for providing automatic https +certificates for all hostnames defined in ingress resources that it is managing. + +## Cloud Provider Setup (AWS, GCLOUD, ETC...) + +In the Kubernetes folder a Helm Chart is provided to make installing the Caddy Ingress Controller +on a Kubernetes cluster straight forward. To install the Caddy Ingress Controller adhere to the +following steps: + +1. Create a new namespace in your cluster to isolate all Caddy resources. + +```sh + kubectl apply -f ./kubernetes/deploy/00_namespace.yaml +``` + +2. Install the Helm Chart. (If you do not want automatic https set `autotls` to false and do not include +your email address as a value to the helm chart.) + +```sh + helm template \ + --namespace=caddy-system ./kubernetes/helm/caddyingresscontroller/ \ + --set autotls=true \ + --set email=youremail@test.com | kubectl apply -f - +``` + +The helm chart will create a service of type `LoadBalancer` in the `caddy-system` namespace on your cluster. You'll want to +set any DNS records for accessing this cluster to the external IP address of this LoadBalancer when the +external IP is provisioned by your cloud provider. + +You can get the external IP address with `kubectl get svc -n caddy-system` + +## Debugging + +To view any logs generated by Caddy or the Ingress Controller you can view the pod logs of the Caddy Ingress Controller. + +Get the pod name with: + +```sh + kubectl get pods -n caddy-system +``` + +View the pod logs: + +```sh +kubectl logs -n caddy-system +``` diff --git a/hack/test/example-deployment.yaml b/hack/test/example-deployment.yaml deleted file mode 100644 index aef7177..0000000 --- a/hack/test/example-deployment.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: example - labels: - app: example -spec: - replicas: 1 - selector: - matchLabels: - app: example - template: - metadata: - labels: - app: example - spec: - containers: - - name: httpecho - image: hashicorp/http-echo - args: - - "-listen=:8080" - - "-text=hello world" - ports: - - containerPort: 8080 \ No newline at end of file diff --git a/hack/test/example-deployment2.yaml b/hack/test/example-deployment2.yaml deleted file mode 100644 index b2b8bb2..0000000 --- a/hack/test/example-deployment2.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: example2 - labels: - app: example2 -spec: - replicas: 1 - selector: - matchLabels: - app: example2 - template: - metadata: - labels: - app: example2 - spec: - containers: - - name: httpecho - image: hashicorp/http-echo - args: - - "-listen=:8080" - - "-text=hello world 2" - ports: - - containerPort: 8080 \ No newline at end of file diff --git a/hack/test/example-ingress.yaml b/hack/test/example-ingress.yaml deleted file mode 100644 index 24c1aaa..0000000 --- a/hack/test/example-ingress.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: example - annotations: - kubernetes.io/ingress.class: caddy -spec: - rules: - - host: caddy2.kubed.co - http: - paths: - - path: /hello2 - backend: - serviceName: example2 - servicePort: 8080 - - path: /hello - backend: - serviceName: example - servicePort: 8080 \ No newline at end of file diff --git a/hack/test/example-service.yaml b/hack/test/example-service.yaml deleted file mode 100644 index 9a55a4d..0000000 --- a/hack/test/example-service.yaml +++ /dev/null @@ -1,12 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: example -spec: - type: ClusterIP - selector: - app: example - ports: - - protocol: TCP - port: 80 - targetPort: 8080 \ No newline at end of file diff --git a/hack/test/example-service2.yaml b/hack/test/example-service2.yaml deleted file mode 100644 index c6e102d..0000000 --- a/hack/test/example-service2.yaml +++ /dev/null @@ -1,12 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: example2 -spec: - type: ClusterIP - selector: - app: example2 - ports: - - protocol: TCP - port: 80 - targetPort: 8080 \ No newline at end of file diff --git a/kubernetes/deploy/00_namespace.yaml b/kubernetes/deploy/00_namespace.yaml new file mode 100644 index 0000000..c77511e --- /dev/null +++ b/kubernetes/deploy/00_namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: caddy-system \ No newline at end of file diff --git a/kubernetes/generated/clusterrole.yaml b/kubernetes/generated/clusterrole.yaml deleted file mode 100644 index 8345e63..0000000 --- a/kubernetes/generated/clusterrole.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRole -metadata: - name: caddy-ingress-controller-role - namespace: caddy-system -rules: - - apiGroups: - - "" - - "extensions" - resources: - - ingresses - - ingresses/status - - secrets - verbs: ["*"] - - apiGroups: - - "" - resources: - - services - - pods - - nodes - - routes - - extensions - verbs: - - list - - get - - watch \ No newline at end of file diff --git a/kubernetes/generated/clusterrolebinding.yaml b/kubernetes/generated/clusterrolebinding.yaml deleted file mode 100644 index 6182dba..0000000 --- a/kubernetes/generated/clusterrolebinding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1beta1 -metadata: - name: caddy-ingress-controller-role-binding - namespace: caddy-system -roleRef: - kind: ClusterRole - name: caddy-ingress-controller-role - apiGroup: rbac.authorization.k8s.io -subjects: -- kind: ServiceAccount - name: caddy-ingress-controller - namespace: caddy-system \ No newline at end of file diff --git a/kubernetes/generated/deployment.yaml b/kubernetes/generated/deployment.yaml deleted file mode 100644 index 4d7c07d..0000000 --- a/kubernetes/generated/deployment.yaml +++ /dev/null @@ -1,61 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: caddy-ingress-controller - namespace: caddy-system - labels: - app: caddy-ingress-controller - chart: "caddy-ingress-controller-v0.1.0" - release: "release-name" - heritage: "Tiller" - version: v0.1.0 - -spec: - replicas: 1 - revisionHistoryLimit: 2 - selector: - matchLabels: - app: caddy-ingress-controller - release: "release-name" - template: - metadata: - labels: - app: caddy-ingress-controller - chart: "caddy-ingress-controller-v0.1.0" - release: "release-name" - heritage: "Tiller" - version: v0.1.0 - - spec: - serviceAccountName: caddy-ingress-controller - containers: - - name: caddy-ingress-controller - image: "gcr.io/danny-239313/ingresscontroller" - imagePullPolicy: IfNotPresent - securityContext: - allowPrivilegeEscalation: true - capabilities: - drop: - - ALL - add: - - NET_BIND_SERVICE - # www-data -> 33 - runAsUser: 0 - runAsGroup: 0 - ports: - - name: http - containerPort: 80 - - name: https - containerPort: 443 - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - args: - - -tls - - -email=navdgo@gmail.com \ No newline at end of file diff --git a/kubernetes/generated/loadbalancer.yaml b/kubernetes/generated/loadbalancer.yaml deleted file mode 100644 index d32b7e1..0000000 --- a/kubernetes/generated/loadbalancer.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: caddy-ingress-controller - namespace: caddy-system - labels: - app: caddy-ingress-controller -spec: - ports: - - name: http - port: 80 - protocol: TCP - targetPort: http - - name: https - port: 443 - protocol: TCP - targetPort: https - selector: - app: caddy-ingress-controller - type: "LoadBalancer" \ No newline at end of file diff --git a/kubernetes/generated/serviceaccount.yaml b/kubernetes/generated/serviceaccount.yaml deleted file mode 100644 index 62f8203..0000000 --- a/kubernetes/generated/serviceaccount.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: caddy-system - labels: - app: caddy-ingress-controller - chart: "caddy-ingress-controller-v0.1.0" - release: "release-name" - heritage: "Tiller" - version: v0.1.0 - - name: caddy-ingress-controller \ No newline at end of file