mirror of
https://github.com/dredx/prole.git
synced 2026-09-23 10:13:58 +00:00
122 lines
5.6 KiB
YAML
122 lines
5.6 KiB
YAML
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: knoe-kubeconfig-cm
|
|
namespace: knoe-db
|
|
data:
|
|
kube_config.sh: |
|
|
#!/bin/bash
|
|
# k3s/kube_config.sh - Automatically configure knoe-k3s context
|
|
SERVER="https://myrddin.prole.org:6443"
|
|
CLUSTER="knoe-k3s"
|
|
USER="knoe-k3s"
|
|
CONTEXT="knoe-k3s"
|
|
CA_DATA="LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzTnpFek1EUXlOVEl3SGhjTk1qWXdNakUzTURRMU56TXlXaGNOTXpZd01qRTFNRFExTnpLeQpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzTnpFek1EUXlOVEl3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFTUHpoSGhraExnaWhMV2UwVEFpTEQrZlJLRC9xU25sZ2lYZnFBN3YveFEKanlUai9FYVg1VS9ZbTRIODRVZWF6dGNLTFUwT1oxUzBtNkFtekxzMXlVN3NvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVTd2aDhaVGlUc20xN2dwTzdNZmhqCnBkS1YvekF3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnQjh1Sk5mTUNndm1tUjJvTWR5WWNvc1NUVUxaTVhERUUKbi8wdVc2aVFuOGdDSVFENXRza0NpcE03RDk2aVRSR1d0MU16WERmdUd4MytQYkpDSmFYWE9IYkJhUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"
|
|
CERT_DATA="LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJrVENDQVRlZ0F3SUJBZ0lJUUZTR2JNTDI5cTh3Q2dZSUtvWkl6ajBFQXdJd0l6RWhNQjhHQTFVRUF3d1kKYXpOekxXTnNhV1Z1ZEMxallVQXhOemN4TXpBME1qVXlNQjRYRFRJMk1ESXhOekEwTlRjek1sb1hEVEkzTURJeApOekEwTlRjek1sb3dNREVYTUJVR0ExVUVDaE1PYzNsemRHVnRPbTFoYzNSbGNuTXhGVEFUQmdOVkJBTVRESE41CmMzUmxiVHBoWkcxcGJqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJIdEZuRjhsa3pJeFVRVDkKV0xld1R1cXRLQzNEMFpGVHk3RTh2V1RmTVhyakluZ3kzUG5CRXc4N1BwajgyaXJ5eVZzRy9wdTg0OW1Bdy9TQQpmanNEZjE2alNEQkdNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBakFmCkJnTlZIU01FR0RBV2dCVHV6dUo3cTNEb1lKWlBSSHlwL1BnTWZaWWl0REFLQmdncWhrak9QUVFEQWdOSUFEQkYKQWlFQWt5Vmk2UmFiY2krNXM5anA0Z2h3bWVBZlQrRlpGQVlON2xhd0Uyd3FRK3NDSUFpbVBRek8rd29jTHRObApDd1dZWnNBSlRISy9hTjJ6WW5QQzFOVHdRaVN0Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdFkyeHAKWlc1MExXTmhRREUzTnpFek1EUXlOVEl3SGhjTk1qWXdNakUzTURRMU56TXlXaGNOTXpZd01qRTFNRFExTnpNeQpXakFqTVNFd0h3WURWUVFEREJock0zTXRZMnhwWlc1MExXTmhRREUzTnpFek1EUXlOVEl3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFRMnRKVE5oMFAwc3R3ZWk4L2ZKUnlkZ2Foc0M4S3NveEZtbjFmMDJSVjMKbHlCNHFDdjJnQW9IdndRSDVMdkFtL2g2dDd5cGJteHBoZXgxWkcvMGhVL0lvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVTdzN2llNnR3NkdDV1QwUjhxZno0CkRIMldJclF3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnRFhJYVdxL0lRNjRhc3AyRng5S3pBZUFoRnBOSjNyNVgKMkNPdzA1ZjlmK1lDSVFDL3dVblhobVQwOXM1U3A1TG9ha0FMejZUMkpYSmJ5MVhEdGtDV3hRZ3dDUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"
|
|
KEY_DATA="LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUdZT21JaWI4ZVVhcFJtQWxMQmM3c24xb0ZkVUpQTUJXYmUvZ2NydEs4THNvQW9HQ0NxR1NNNDlKQXdFSG9VUURRZ0FFZTBXY1h5V1RNakZSQlAxWXQ3Qk82cTBvTGNQUmtWUExzVHk5Wk44eGV1TWllRExjK2NFVApEenMrbVB6YUt2TEpXd2IrbTd6ajJZREQ5SUIrT3dOL1hnPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo="
|
|
echo "Configuring ${CONTEXT}..."
|
|
kubectl config set-cluster "${CLUSTER}" --server="${SERVER}" --embed-certs=true
|
|
TMP_CA=$(mktemp)
|
|
TMP_CERT=$(mktemp)
|
|
TMP_KEY=$(mktemp)
|
|
echo "${CA_DATA}" | base64 -d > "${TMP_CA}"
|
|
echo "${CERT_DATA}" | base64 -d > "${TMP_CERT}"
|
|
echo "${KEY_DATA}" | base64 -d > "${TMP_KEY}"
|
|
kubectl config set-cluster "${CLUSTER}" --certificate-authority="${TMP_CA}" --embed-certs=true
|
|
kubectl config set-credentials "${USER}" --client-certificate="${TMP_CERT}" --client-key="${TMP_KEY}" --embed-certs=true
|
|
kubectl config set-context "${CONTEXT}" --cluster="${CLUSTER}" --user="${USER}" --namespace=default
|
|
kubectl config use-context "${CONTEXT}"
|
|
rm -f "${TMP_CA}" "${TMP_CERT}" "${TMP_KEY}"
|
|
echo "Done. context ${CONTEXT} is ready."
|
|
kubectl get nodes
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: knoe-db-kong-config
|
|
namespace: knoe-db
|
|
data:
|
|
kong.yml: |
|
|
_format_version: "3.0"
|
|
_transform: true
|
|
services:
|
|
- name: knoe-service
|
|
url: http://knoe-svc.knoe-db.svc.cluster.local:8080
|
|
routes:
|
|
- name: knoe-route
|
|
paths:
|
|
- /k3s/kube_config.sh
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: knoe-ubuntu
|
|
namespace: knoe-db
|
|
labels:
|
|
app: knoe-ubuntu
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: knoe-ubuntu
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: knoe-ubuntu
|
|
spec:
|
|
containers:
|
|
- name: ubuntu
|
|
image: ubuntu:22.04
|
|
command: ["/bin/bash", "-c"]
|
|
args:
|
|
- |
|
|
apt-get update && apt-get install -y python3
|
|
mkdir -p /knoe/home/k3s/
|
|
cp /tmp/kube_config.sh /knoe/home/k3s/kube_config.sh
|
|
chmod +x /knoe/home/k3s/kube_config.sh
|
|
cd /knoe/home
|
|
python3 -m http.server 8080
|
|
ports:
|
|
- containerPort: 8080
|
|
volumeMounts:
|
|
- name: script-vol
|
|
mountPath: /tmp/kube_config.sh
|
|
subPath: kube_config.sh
|
|
volumes:
|
|
- name: script-vol
|
|
configMap:
|
|
name: knoe-kubeconfig-cm
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: knoe-svc
|
|
namespace: knoe-db
|
|
spec:
|
|
selector:
|
|
app: knoe-ubuntu
|
|
ports:
|
|
- protocol: TCP
|
|
port: 8080
|
|
targetPort: 8080
|
|
---
|
|
apiVersion: networking.k8s.io/v1
|
|
kind: Ingress
|
|
metadata:
|
|
name: knoe-myrddin-ingress
|
|
namespace: knoe-db
|
|
annotations:
|
|
kubernetes.io/ingress.class: traefik
|
|
spec:
|
|
rules:
|
|
- host: myrddin.prole.org
|
|
http:
|
|
paths:
|
|
- path: /k3s/kube_config.sh
|
|
pathType: Prefix
|
|
backend:
|
|
service:
|
|
name: knoe-db-kong
|
|
port:
|
|
number: 8000
|