Skip to content

Instantly share code, notes, and snippets.

@glennpratt
Created May 19, 2025 22:49
Show Gist options
  • Save glennpratt/6272c94db3093127a948a37c5a378a0e to your computer and use it in GitHub Desktop.
Save glennpratt/6272c94db3093127a948a37c5a378a0e to your computer and use it in GitHub Desktop.
RKE2 Server in a Pod
kind: StatefulSet
apiVersion: apps/v1
metadata:
name: rke2-server
namespace: rke2-bootstrap-system
spec:
serviceName: "rke2-server"
replicas: 1
selector:
matchLabels:
app: rke2-server
template:
metadata:
labels:
app: rke2-server
spec:
shareProcessNamespace: true # for debugging
securityContext:
runAsNonRoot: false
seccompProfile:
type: RuntimeDefault
volumes:
- name: shared
emptyDir: {}
- name: rke2-files
secret:
secretName: rke2-files
initContainers:
- name: rke2-server-init
image: kpp-private-registry.akamai-kpp.com/cns/kpp/rke2
command:
- /bin/bash
- -c
# Run rke2 server until /var/lib/rancher/rke2/server/db/etcd/config exists
- |
/opt/bin/rke2 server \
--debug \
--cloud-provider-name=external \
--disable-cloud-controller \
--disable-controller-manager \
--disable-kube-proxy \
--disable-scheduler \
--disable=rke2-ingress-nginx \
--snapshotter=native \
&
until [ -f /var/lib/rancher/rke2/server/db/etcd/config ]; do
echo "Waiting for /var/lib/rancher/rke2/server/db/etcd/config to exist..."
sleep 5
done
volumeMounts:
- mountPath: /etc/rancher/rke2
name: shared
subPath: etc/rancher/rke2
- mountPath: /var/lib/rancher/rke2
name: shared
subPath: var/lib/rancher/rke2
- mountPath: /etc/rancher/rke2/config.yaml
name: rke2-files
subPath: config.yaml
readOnly: true
containers:
- name: rke2-server
image: kpp-private-registry.akamai-kpp.com/cns/kpp/rke2
command:
- /opt/bin/rke2
- server
args:
- --debug
- --cloud-provider-name=external
- --disable-agent
- --disable-cloud-controller
- --disable-controller-manager
- --disable-etcd
- --disable-kube-proxy
- --disable-scheduler
- --disable=rke2-ingress-nginx
- --egress-selector-mode=cluster
securityContext:
privileged: true
resources: {}
volumeMounts:
- mountPath: /etc/rancher/rke2
name: shared
subPath: etc/rancher/rke2
- mountPath: /var/lib/rancher/rke2
name: shared
subPath: var/lib/rancher/rke2
- mountPath: /etc/rancher/rke2/config.yaml
name: rke2-files
subPath: config.yaml
readOnly: true
- name: kube-apiserver
args:
- --allow-privileged=true
- --anonymous-auth=false
- --api-audiences=https://kubernetes.default.svc.cluster.local,rke2
- --authorization-mode=Node,RBAC
- --cert-dir=/var/lib/rancher/rke2/server/tls/temporary-certs
- --client-ca-file=/var/lib/rancher/rke2/server/tls/client-ca.crt
- --egress-selector-config-file=/var/lib/rancher/rke2/server/etc/egress-selector-config.yaml
- --enable-admission-plugins=NodeRestriction
- --enable-aggregator-routing=true
- --enable-bootstrap-token-auth=true
- --encryption-provider-config=/var/lib/rancher/rke2/server/cred/encryption-config.json
- --encryption-provider-config-automatic-reload=true
- --etcd-cafile=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt
- --etcd-certfile=/var/lib/rancher/rke2/server/tls/etcd/client.crt
- --etcd-keyfile=/var/lib/rancher/rke2/server/tls/etcd/client.key
- --etcd-servers=https://127.0.0.1:2379
- --kubelet-certificate-authority=/var/lib/rancher/rke2/server/tls/server-ca.crt
- --kubelet-client-certificate=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.crt
- --kubelet-client-key=/var/lib/rancher/rke2/server/tls/client-kube-apiserver.key
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --profiling=false
- --proxy-client-cert-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.crt
- --proxy-client-key-file=/var/lib/rancher/rke2/server/tls/client-auth-proxy.key
- --requestheader-allowed-names=system:auth-proxy
- --requestheader-client-ca-file=/var/lib/rancher/rke2/server/tls/request-header-ca.crt
- --requestheader-extra-headers-prefix=X-Remote-Extra-
- --requestheader-group-headers=X-Remote-Group
- --requestheader-username-headers=X-Remote-User
- --secure-port=6443
- --service-account-issuer=https://kubernetes.default.svc.cluster.local
- --service-account-key-file=/var/lib/rancher/rke2/server/tls/service.key
- --service-account-signing-key-file=/var/lib/rancher/rke2/server/tls/service.current.key
- --service-cluster-ip-range=10.43.0.0/16,fd76:dead:beee::/108
- --service-node-port-range=30000-32767
- --storage-backend=etcd3
- --tls-cert-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.crt
- --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
- --tls-private-key-file=/var/lib/rancher/rke2/server/tls/serving-kube-apiserver.key
command:
- kube-apiserver
env:
- name: FILE_HASH
value: 5771e367d9faa76371eca072fd815769bfbdb564a8db0ca2e9f449986d145690
- name: NO_PROXY
value: .svc,.cluster.local,10.42.0.0/16,fd76:dead:beef::/48,10.43.0.0/16,fd76:dead:beee::/108
image: index.docker.io/rancher/hardened-kubernetes:v1.32.4-rke2r1-build20250423
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 250m
memory: 1Gi
securityContext:
privileged: false
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /etc/rancher/rke2
name: shared
subPath: etc/rancher/rke2
- mountPath: /var/lib/rancher/rke2
name: shared
subPath: var/lib/rancher/rke2
- mountPath: /socket
name: shared
subPath: var/lib/rancher/rke2/server/cred/socket
- name: etcd
args:
- --config-file=/var/lib/rancher/rke2/server/db/etcd/config
command:
- etcd
env:
- name: FILE_HASH
value: e7189243e1d669379989fec3747b7c1a62892ad1c049ce478b2a5a2fa9f6bc27
- name: NO_PROXY
value: .svc,.cluster.local,10.42.0.0/16,fd76:dead:beef::/48,10.43.0.0/16,fd76:dead:beee::/108
image: index.docker.io/rancher/hardened-etcd:v3.5.21-k3s1-build20250411
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 200m
memory: 512Mi
securityContext:
privileged: false
volumeMounts:
- mountPath: /etc/rancher/rke2
name: shared
subPath: etc/rancher/rke2
- mountPath: /var/lib/rancher/rke2
name: shared
subPath: var/lib/rancher/rke2
---
apiVersion: v1
kind: Secret
metadata:
name: rke2-files
namespace: rke2-bootstrap-system
stringData:
config.yaml: |
tls-san:
- 127.0.0.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment