Skip to content

Instantly share code, notes, and snippets.

@mtcoffee
Last active February 10, 2024 00:34
Show Gist options
  • Save mtcoffee/096c4e2e9829190ef54c4bb664a0b0ee to your computer and use it in GitHub Desktop.
Save mtcoffee/096c4e2e9829190ef54c4bb664a0b0ee to your computer and use it in GitHub Desktop.
portainer on K3s with traefik ingress
kubectl create -f - <<EOF
---
kind: Namespace
apiVersion: v1
metadata:
name: portainer
labels:
name: portainer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: portainer
namespace: portainer
labels:
app: portainer
spec:
replicas: 1
selector:
matchLabels:
app: portainer
template:
metadata:
labels:
app: portainer
spec:
serviceAccountName: portainer-sa-clusteradmin
containers:
- name: portainer
image: portainer/portainer-ce:latest
imagePullPolicy: Always
ports:
- containerPort: 9000
---
kind: Service
apiVersion: v1
metadata:
name: portainer-service
namespace: portainer
spec:
ports:
- name: portainer-service-port
port: 9000
protocol: TCP
targetPort: 9000
selector:
app: portainer
---
# Middleware
# Strip prefix /portainer
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: portainer-admin
namespace: portainer
spec:
stripPrefix:
forceSlash: false
prefixes:
- /portainer
---
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
name: portainer-ingress
namespace: portainer
annotations:
kubernetes.io/ingress.class: traefik
traefik.ingress.kubernetes.io/router.middlewares: portainer-portainer-admin@kubernetescrd
spec:
ingressClassName: traefik #can be left blank if a default exists
rules:
- host:
http:
paths:
- path: /portainer
pathType: Prefix
backend:
service:
name: portainer-service
port:
number: 9000
---
# Source: portainer/templates/rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: portainer
labels:
app.kubernetes.io/name: portainer
app.kubernetes.io/instance: portainer
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
namespace: portainer
name: portainer-sa-clusteradmin
---
# Source: portainer/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: portainer-sa-clusteradmin
namespace: portainer
labels:
app.kubernetes.io/name: portainer
app.kubernetes.io/instance: portainer
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment