<p>I am very new to Kubernetes. I intend on using to help me with CI/CD pipelines, which means my master node will need to catch git webhooks (with Spinnaker, much like Jenkins).</p>

<p>I imagine running a Kubernetes master on remote server, but 9/10 articles about installing things like Dashboard do it locally (which do not work in production, do not take into account SSL, and use things like <code>kubectl proxy</code> which you should not do in production, require anonymous auth without tokens and instead user username and password, etc, etc, etc...).</p>

<p>Bottom line: almost every tutorial and piece of documentation I've seen can hardly be applied to production from my point of view.</p>

<p>Am I missing something here?</p>

Alexander Kleinhans
<p>Kubernetes provides a lot of capabilities to adapt applications by serving security and reliable access, or even exposing web resources externally and make it accessible from the globe network. Although Kubernetes is popular as a platform for large-scale deployments and provides a wide set of features, it consists of some significant resources and system components as per architecture <a href="https://kubernetes.io/docs/concepts/architecture/cloud-controller/" rel="nofollow noreferrer">Design</a>. One of the fundamental resources of Kubernetes is a <a href="https://kubernetes.io/docs/concepts/services-networking/service/" rel="nofollow noreferrer">Service</a>, actually it's an abstraction layer of network communication between Pods in the cluster. Once we had a Kubernetes cluster up and running, we could deploy an application and create a service as the main entry point for network connection to this application container inside the particular <a href="https://kubernetes.io/docs/concepts/workloads/pods/pod/" rel="nofollow noreferrer">Pod</a>.</p>

<p>I admit that using <code>kubectl proxy</code> is only the one way to expose relevant application port on the particular <a href="https://kubernetes.io/docs/concepts/architecture/nodes/" rel="nofollow noreferrer">Node</a>. However, when you consider making the application accessible outside the cluster <code>NodePort</code> and <code>LoadBalancer</code> services can do that by sharing application port on the host machine or via External IP address provided by the outward Load Balancer. But, it is only the part of the Kubernetes functionality as you can implement <a href="https://kubernetes.io/docs/concepts/services-networking/ingress/#what-is-ingress" rel="nofollow noreferrer">Ingress</a> in order to pass through HTTP and HTTPS traffic and manage routing traffic and SSL/TLS termination as an edge device for connection to the nested application(Pod) services.</p>

<p>There are some more comprehensive Open source <code>Ingress</code> resources like <a href="https://kubernetes.github.io/ingress-nginx/" rel="nofollow noreferrer">Nginx Ingress Controller</a>, <a href="https://traefik.io/" rel="nofollow noreferrer">Traefik</a> etc. with more advanced feature set for Traffic management, routing and securing connections to the target microservices. However, some of the cloud providers offer their own <code>Ingress</code> resources that perform load balancing and routing HTTP[s] traffic to different endpoints within the cluster like <a href="https://aws.amazon.com/blogs/opensource/kubernetes-ingress-aws-alb-ingress-controller/" rel="nofollow noreferrer">AWS ALB Ingress Controller</a> in AWS.</p>
