| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461 |
- apiVersion: v1
- kind: ConfigMap
- metadata:
- name: kilo
- namespace: kube-system
- labels:
- app.kubernetes.io/name: kilo
- data:
- cni-conf.json: |
- {
- "cniVersion":"0.4.0",
- "name":"kilo",
- "plugins":[
- {
- "name":"kubernetes",
- "type":"bridge",
- "bridge":"kube-bridge",
- "isDefaultGateway":true,
- "forceAddress":true,
- "mtu": 1420,
- "ipam":{
- "type":"host-local"
- }
- },
- {
- "type":"portmap",
- "snat":true,
- "capabilities":{
- "portMappings":true
- }
- }
- ]
- }
- ---
- apiVersion: v1
- kind: ServiceAccount
- metadata:
- name: kilo
- namespace: kube-system
- ---
- apiVersion: rbac.authorization.k8s.io/v1
- kind: ClusterRole
- metadata:
- name: kilo
- rules:
- - apiGroups:
- - ""
- resources:
- - nodes
- verbs:
- - list
- - get
- - patch
- - watch
- - apiGroups:
- - kilo.squat.ai
- resources:
- - peers
- verbs:
- - list
- - watch
- - apiGroups:
- - apiextensions.k8s.io
- resources:
- - customresourcedefinitions
- verbs:
- - get
- ---
- apiVersion: rbac.authorization.k8s.io/v1
- kind: ClusterRoleBinding
- metadata:
- name: kilo
- roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: ClusterRole
- name: kilo
- subjects:
- - kind: ServiceAccount
- name: kilo
- namespace: kube-system
- ---
- apiVersion: v1
- kind: ConfigMap
- metadata:
- name: kilo-scripts
- namespace: kube-system
- data:
- init.sh: |
- #!/bin/sh
- cat > /etc/kubernetes/kubeconfig <<EOF
- apiVersion: v1
- kind: Config
- name: kilo
- clusters:
- - cluster:
- server: $(sed -n 's/.*server: \(.*\)/\1/p' /var/lib/rancher/k3s/agent/kubelet.kubeconfig)
- certificate-authority: /var/lib/rancher/k3s/agent/server-ca.crt
- users:
- - name: kilo
- user:
- token: $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
- contexts:
- - name: kilo
- context:
- cluster: kilo
- namespace: ${NAMESPACE}
- user: kilo
- current-context: kilo
- EOF
- ---
- apiVersion: apps/v1
- kind: DaemonSet
- metadata:
- name: kilo
- namespace: kube-system
- labels:
- app.kubernetes.io/name: kilo
- app.kubernetes.io/part-of: kilo
- spec:
- selector:
- matchLabels:
- app.kubernetes.io/name: kilo
- app.kubernetes.io/part-of: kilo
- template:
- metadata:
- labels:
- app.kubernetes.io/name: kilo
- app.kubernetes.io/part-of: kilo
- spec:
- nodeSelector:
- nkml.squat.ai/wireguard: "true"
- serviceAccountName: kilo
- hostNetwork: true
- containers:
- - name: kilo
- image: squat/kilo:0.7.0
- args:
- - --kubeconfig=/etc/kubernetes/kubeconfig
- - --hostname=$(NODE_NAME)
- - --interface=kilo0
- env:
- - name: NODE_NAME
- valueFrom:
- fieldRef:
- fieldPath: spec.nodeName
- ports:
- - containerPort: 1107
- name: metrics
- securityContext:
- privileged: true
- volumeMounts:
- - name: cni-conf-dir
- mountPath: /etc/cni/net.d
- - name: kilo-dir
- mountPath: /var/lib/kilo
- - name: kubeconfig
- mountPath: /etc/kubernetes
- readOnly: true
- - name: lib-modules
- mountPath: /lib/modules
- readOnly: true
- - name: xtables-lock
- mountPath: /run/xtables.lock
- readOnly: false
- initContainers:
- - name: generate-kubeconfig
- image: squat/kilo:0.7.0
- command:
- - /bin/sh
- args:
- - /scripts/init.sh
- imagePullPolicy: Always
- volumeMounts:
- - name: kubeconfig
- mountPath: /etc/kubernetes
- - name: scripts
- mountPath: /scripts/
- readOnly: true
- - name: k3s-agent
- mountPath: /var/lib/rancher/k3s/agent/
- readOnly: true
- env:
- - name: NAMESPACE
- valueFrom:
- fieldRef:
- fieldPath: metadata.namespace
- - name: install-cni
- image: squat/kilo:0.7.0
- command:
- - /bin/sh
- - -c
- - |
- set -e -x;
- cp /opt/cni/bin/* /host/opt/cni/bin/;
- TMP_CONF="$CNI_CONF_NAME".tmp;
- echo "$CNI_NETWORK_CONFIG" > $TMP_CONF;
- rm -f /host/etc/cni/net.d/*;
- mv $TMP_CONF /host/etc/cni/net.d/$CNI_CONF_NAME
- env:
- - name: CNI_CONF_NAME
- value: 10-kilo.conflist
- - name: CNI_NETWORK_CONFIG
- valueFrom:
- configMapKeyRef:
- name: kilo
- key: cni-conf.json
- volumeMounts:
- - name: cni-bin-dir
- mountPath: /host/opt/cni/bin
- - name: cni-conf-dir
- mountPath: /host/etc/cni/net.d
- tolerations:
- - effect: NoSchedule
- operator: Exists
- - effect: NoExecute
- operator: Exists
- volumes:
- - name: cni-bin-dir
- hostPath:
- path: /opt/cni/bin
- - name: cni-conf-dir
- hostPath:
- path: /etc/cni/net.d
- - name: kilo-dir
- hostPath:
- path: /var/lib/kilo
- - name: kubeconfig
- emptyDir: {}
- - name: scripts
- configMap:
- name: kilo-scripts
- - name: k3s-agent
- hostPath:
- path: /var/lib/rancher/k3s/agent
- - name: lib-modules
- hostPath:
- path: /lib/modules
- - name: xtables-lock
- hostPath:
- path: /run/xtables.lock
- type: FileOrCreate
- ---
- apiVersion: apps/v1
- kind: DaemonSet
- metadata:
- name: kilo-userspace
- namespace: kube-system
- labels:
- app.kubernetes.io/name: kilo-userspace
- app.kubernetes.io/part-of: kilo
- spec:
- selector:
- matchLabels:
- app.kubernetes.io/name: kilo-userspace
- app.kubernetes.io/part-of: kilo
- template:
- metadata:
- labels:
- app.kubernetes.io/name: kilo-userspace
- app.kubernetes.io/part-of: kilo
- spec:
- nodeSelector:
- nkml.squat.ai/wireguard: "false"
- serviceAccountName: kilo
- hostNetwork: true
- containers:
- - name: kilo
- image: squat/kilo:0.7.0
- args:
- - --kubeconfig=/etc/kubernetes/kubeconfig
- - --hostname=$(NODE_NAME)
- - --create-interface=false
- - --interface=kilo0
- env:
- - name: NODE_NAME
- valueFrom:
- fieldRef:
- fieldPath: spec.nodeName
- ports:
- - containerPort: 1107
- name: metrics
- securityContext:
- privileged: true
- volumeMounts:
- - name: cni-conf-dir
- mountPath: /etc/cni/net.d
- - name: kilo-dir
- mountPath: /var/lib/kilo
- - name: kubeconfig
- mountPath: /etc/kubernetes
- readOnly: true
- - name: lib-modules
- mountPath: /lib/modules
- readOnly: true
- - name: xtables-lock
- mountPath: /run/xtables.lock
- readOnly: false
- - name: wireguard
- mountPath: /var/run/wireguard
- readOnly: false
- - name: wireguard
- image: ghcr.io/masipcat/wireguard-go-docker:0.0.20230223
- args:
- - wireguard-go
- - --foreground
- - kilo0
- securityContext:
- privileged: true
- volumeMounts:
- - name: wireguard
- mountPath: /var/run/wireguard
- readOnly: false
- initContainers:
- - name: generate-kubeconfig
- image: squat/kilo:0.7.0
- command:
- - /bin/sh
- args:
- - /scripts/init.sh
- imagePullPolicy: Always
- volumeMounts:
- - name: kubeconfig
- mountPath: /etc/kubernetes
- - name: scripts
- mountPath: /scripts/
- readOnly: true
- - name: k3s-agent
- mountPath: /var/lib/rancher/k3s/agent/
- readOnly: true
- env:
- - name: NAMESPACE
- valueFrom:
- fieldRef:
- fieldPath: metadata.namespace
- - name: install-cni
- image: squat/kilo:0.7.0
- command:
- - /bin/sh
- - -c
- - |
- set -e -x;
- cp /opt/cni/bin/* /host/opt/cni/bin/;
- TMP_CONF="$CNI_CONF_NAME".tmp;
- echo "$CNI_NETWORK_CONFIG" > $TMP_CONF;
- rm -f /host/etc/cni/net.d/*;
- mv $TMP_CONF /host/etc/cni/net.d/$CNI_CONF_NAME
- env:
- - name: CNI_CONF_NAME
- value: 10-kilo.conflist
- - name: CNI_NETWORK_CONFIG
- valueFrom:
- configMapKeyRef:
- name: kilo
- key: cni-conf.json
- volumeMounts:
- - name: cni-bin-dir
- mountPath: /host/opt/cni/bin
- - name: cni-conf-dir
- mountPath: /host/etc/cni/net.d
- tolerations:
- - effect: NoSchedule
- operator: Exists
- - effect: NoExecute
- operator: Exists
- volumes:
- - name: cni-bin-dir
- hostPath:
- path: /opt/cni/bin
- - name: cni-conf-dir
- hostPath:
- path: /etc/cni/net.d
- - name: kilo-dir
- hostPath:
- path: /var/lib/kilo
- - name: kubeconfig
- emptyDir: {}
- - name: scripts
- configMap:
- name: kilo-scripts
- - name: k3s-agent
- hostPath:
- path: /var/lib/rancher/k3s/agent
- - name: lib-modules
- hostPath:
- path: /lib/modules
- - name: xtables-lock
- hostPath:
- path: /run/xtables.lock
- type: FileOrCreate
- - name: wireguard
- hostPath:
- path: /var/run/wireguard
- ---
- kind: DaemonSet
- apiVersion: apps/v1
- metadata:
- name: nkml
- namespace: kube-system
- labels:
- app.kubernetes.io/name: nkml
- spec:
- selector:
- matchLabels:
- app.kubernetes.io/name: nkml
- template:
- metadata:
- labels:
- app.kubernetes.io/name: nkml
- spec:
- hostNetwork: true
- serviceAccountName: kilo
- containers:
- - name: nkml
- image: ghcr.io/leonnicolas/nkml:0.1.2
- args:
- - --hostname=$(NODE_NAME)
- - --label-mod=wireguard
- - --kubeconfig=/etc/kubernetes/kubeconfig
- env:
- - name: NODE_NAME
- valueFrom:
- fieldRef:
- fieldPath: spec.nodeName
- ports:
- - name: http
- containerPort: 8080
- volumeMounts:
- - name: kubeconfig
- mountPath: /etc/kubernetes
- readOnly: true
- initContainers:
- - name: generate-kubeconfig
- image: squat/kilo:0.7.0
- command:
- - /bin/sh
- args:
- - /scripts/init.sh
- imagePullPolicy: Always
- volumeMounts:
- - name: kubeconfig
- mountPath: /etc/kubernetes
- - name: scripts
- mountPath: /scripts/
- readOnly: true
- - name: k3s-agent
- mountPath: /var/lib/rancher/k3s/agent/
- readOnly: true
- env:
- - name: NAMESPACE
- valueFrom:
- fieldRef:
- fieldPath: metadata.namespace
- volumes:
- - name: kubeconfig
- emptyDir: {}
- - name: scripts
- configMap:
- name: kilo-scripts
- - name: k3s-agent
- hostPath:
- path: /var/lib/rancher/k3s/agent
|