Skip to content

Instantly share code, notes, and snippets.

@jkeam
Last active February 21, 2026 00:12
Show Gist options
  • Select an option

  • Save jkeam/fd5ca60d6e890def146c0f23dfcd1025 to your computer and use it in GitHub Desktop.

Select an option

Save jkeam/fd5ca60d6e890def146c0f23dfcd1025 to your computer and use it in GitHub Desktop.
Digital Ocean Create Kubernetes
#!/bin/bash
doctl kubernetes options sizes
# Create cluster
doctl kubernetes cluster create lfe-cluster \
--region nyc1 \
--version 1.34.1-do.3 \
--maintenance-window saturday=02:00 \
--node-pool "name=worker-pool;size=s-2vcpu-2gb-90gb-intel;count=2;tag=lfecluster;tag=jkeam;tag=clustername:lfe-cluster"
# Destroy cluster
doctl kubernetes cluster delete lfe-cluster
# Get context
doctl kubernetes cluster kubeconfig save <uuid>
# Cert Manager
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.19.3 \
--set crds.enabled=true \
--set 'config.enableGatewayAPI=true'
# DO API Secret (to create DNS records)
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
name: digitalocean-dns
namespace: cert-manager
type: Opaque
stringData:
token: "dop_v1_something"
EOF
# Cluster issuer
cat <<EOF | kubectl apply -f -
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: jpkeam@gmail.com
privateKeySecretRef:
name: letsencrypt-account-key
solvers:
- dns01:
digitalocean:
tokenSecretRef:
name: digitalocean-dns
key: token
EOF
# Docs
# gateway: https://www.digitalocean.com/community/tutorials/kubernetes-gateway-api-tutorial-cilium-ingress-alternative
# cert-manager: https://www.digitalocean.com/community/tutorials/https-traffic-routing-gateway-api-cilium
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment