# Quick start

> Deploy hello-kubernetes, reach it, and remove it, with kubectl or Helm.

Deploy hello-kubernetes into your current namespace, with its default settings. You need `kubectl` and a cluster; Helm also needs [Helm 4](https://helm.sh/docs/intro/install/).

**kubectl**

```bash
kubectl apply -f https://github.com/paulbouwer/hello-kubernetes/releases/latest/download/hello-kubernetes.yaml
kubectl rollout status deployment/hello-kubernetes-demo
```

**Helm**

```bash
helm install demo oci://ghcr.io/paulbouwer/charts/hello-kubernetes --wait
```

It creates a ServiceAccount, a Service and a Deployment with 2 pods, all named `hello-kubernetes-demo`.

## Reach the app

Forward a local port to the Service:

```bash
kubectl port-forward service/hello-kubernetes-demo 8080:80
```

Open `http://localhost:8080/`. You see **Hello world!**, and the namespace, pod and node that answered. Press Ctrl+C to stop.

`port-forward` connects to one pod, so the pod name stays the same when you refresh. Through the Service’s external address, each request can reach a different pod.

The Service is a `LoadBalancer`, so on many clusters it also gets an external address. See [where the external address works](https://paulbouwer.github.io/hello-kubernetes/docs/deploy/kubectl.md#where-the-external-address-works). To watch requests reach different pods, see [Show load balancing](https://paulbouwer.github.io/hello-kubernetes/docs/guides/load-balancing.md).

## Remove it

**kubectl**

```bash
kubectl delete -f https://github.com/paulbouwer/hello-kubernetes/releases/latest/download/hello-kubernetes.yaml
```

**Helm**

```bash
helm uninstall demo
```
