Skip to content

Commit 5e855e4

Browse files
committed
feat(deploy): add standalone dashboard kubeconfig secret generator
Signed-off-by: warjiang <1096409085@qq.com>
1 parent 2550ff6 commit 5e855e4

11 files changed

Lines changed: 199 additions & 28 deletions

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ If you don't already have the Karmada, you can launch one by following this [tut
1414

1515

1616
---
17+
### Generate independent dashboard kubeconfig
18+
After Karmada control plane is installed and certificates exist in `${HOME}/.karmada` (or `CERT_DIR`), run:
19+
```bash
20+
hack/generate-karmada-dashboard-kubeconfig.sh <HOST_CLUSTER_KUBECONFIG> <HOST_CONTEXT_NAME>
21+
```
22+
This will create/update `karmada-dashboard-config` in namespace `karmada-system`.
23+
1724
### Install Karmada-dashboard
1825
In the following steps, we are going to install Karmada Dashboard on the `host cluster` where running the Karmada
1926
control plane components. We assume that Karmada was installed in namespace `karmada-system` and Karmada config is
@@ -60,6 +67,12 @@ Create the secret based on your Karmada config, the Karmada Dashboard will use t
6067
kubectl create secret generic kubeconfig --from-file=kubeconfig=$HOME/.kube/karmada.config -n karmada-system
6168
```
6269

70+
If you installed Karmada with the patched flow that generates dashboard-specific certs (for example, `karmada-dashboard-client.*` under `${HOME}/.karmada`), you can generate an independent dashboard kubeconfig secret with:
71+
```
72+
hack/generate-karmada-dashboard-kubeconfig.sh "$HOME/.kube/karmada.config" karmada-host
73+
```
74+
This command creates `karmada-dashboard-config` in `karmada-system` and can be used as a standalone post-Karmada installation step.
75+
6376
Deploy Karmada Dashboard:
6477
```
6578
kubectl apply -k artifacts/overlays/nodeport-mode

artifacts/dashboard/karmada-dashboard-api.yaml

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,8 @@ spec:
2525
containers:
2626
- command:
2727
- karmada-dashboard-api
28-
- --karmada-kubeconfig=/etc/kubeconfig
28+
- --karmada-kubeconfig=/etc/karmada/config/karmada.config
2929
- --karmada-context=karmada-apiserver
30-
- --kubeconfig=/etc/kubeconfig
31-
- --context=karmada
3230
- --insecure-bind-address=0.0.0.0
3331
- --bind-address=0.0.0.0
3432
name: karmada-dashboard-api
@@ -62,15 +60,15 @@ spec:
6260
terminationMessagePath: /dev/termination-log
6361
terminationMessagePolicy: File
6462
volumeMounts:
65-
- name: kubeconfig
66-
subPath: kubeconfig
67-
mountPath: /etc/kubeconfig
63+
- name: karmada-config
64+
subPath: karmada.config
65+
mountPath: /etc/karmada/config/karmada.config
6866
restartPolicy: Always
6967
terminationGracePeriodSeconds: 30
7068
volumes:
71-
- name: kubeconfig
69+
- name: karmada-config
7270
secret:
73-
secretName: kubeconfig
71+
secretName: karmada-dashboard-config
7472
---
7573
apiVersion: v1
7674
kind: Service

artifacts/dashboard/karmada-dashboard-web.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,18 +59,18 @@ spec:
5959
terminationMessagePath: /dev/termination-log
6060
terminationMessagePolicy: File
6161
volumeMounts:
62-
- name: kubeconfig
63-
subPath: kubeconfig
64-
mountPath: /etc/kubeconfig
62+
- name: karmada-config
63+
subPath: karmada.config
64+
mountPath: /etc/karmada/config/karmada.config
6565
- name: dashboard-config
6666
subPath: prod.yaml
6767
mountPath: /config/dashboard-config.yaml
6868
restartPolicy: Always
6969
terminationGracePeriodSeconds: 30
7070
volumes:
71-
- name: kubeconfig
71+
- name: karmada-config
7272
secret:
73-
secretName: kubeconfig
73+
secretName: karmada-dashboard-config
7474
- name: dashboard-config
7575
configMap:
7676
name: karmada-dashboard-configmap

artifacts/dashboard/kubernetes-dashboard-api.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ spec:
2727
- kubernetes-dashboard-api
2828
- --bind-address=0.0.0.0
2929
- --insecure-bind-address=0.0.0.0
30-
- --karmada-kubeconfig=/etc/kubeconfig
30+
- --karmada-kubeconfig=/etc/karmada/config/karmada.config
3131
- --karmada-context=karmada-apiserver
3232
- --openapi-enabled
3333
- --metrics-provider=none
@@ -61,15 +61,15 @@ spec:
6161
terminationMessagePath: /dev/termination-log
6262
terminationMessagePolicy: File
6363
volumeMounts:
64-
- name: kubeconfig
65-
subPath: kubeconfig
66-
mountPath: /etc/kubeconfig
64+
- name: karmada-config
65+
subPath: karmada.config
66+
mountPath: /etc/karmada/config/karmada.config
6767
restartPolicy: Always
6868
terminationGracePeriodSeconds: 30
6969
volumes:
70-
- name: kubeconfig
70+
- name: karmada-config
7171
secret:
72-
secretName: kubeconfig
72+
secretName: karmada-dashboard-config
7373
---
7474
apiVersion: v1
7575
kind: Service
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
apiVersion: v1
2+
kind: Secret
3+
metadata:
4+
name: ${component}-config
5+
namespace: karmada-system
6+
stringData:
7+
karmada.config: |-
8+
apiVersion: v1
9+
kind: Config
10+
preferences: {}
11+
clusters:
12+
- name: karmada-apiserver
13+
cluster:
14+
certificate-authority-data: ${ca_crt}
15+
server: https://karmada-apiserver.karmada-system.svc.cluster.local:5443
16+
users:
17+
- name: karmada-apiserver
18+
user:
19+
client-certificate-data: ${client_crt}
20+
client-key-data: ${client_key}
21+
contexts:
22+
- name: karmada-apiserver
23+
context:
24+
cluster: karmada-apiserver
25+
user: karmada-apiserver
26+
current-context: karmada-apiserver

charts/karmada-dashboard/templates/karmada-dashboard-api.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,12 @@ spec:
6565
volumeMounts:
6666
- name: kubeconfig-secret
6767
subPath: kubeconfig
68-
mountPath: /etc/kubeconfig
68+
mountPath: /etc/kubeconfig/kubeconfig
6969
command:
7070
- karmada-dashboard-api
71-
- --karmada-kubeconfig=/etc/kubeconfig
71+
- --karmada-kubeconfig=/etc/kubeconfig/kubeconfig
7272
- --karmada-context={{ .Values.api.kubeconfigContext }}
73-
- --kubeconfig=/etc/kubeconfig
73+
- --kubeconfig=/etc/kubeconfig/kubeconfig
7474
- --context={{ .Values.api.kubeconfigContext }}
7575
- --insecure-bind-address=0.0.0.0
7676
- --bind-address=0.0.0.0

charts/karmada-dashboard/templates/karmada-dashboard-clean-serviceaccount.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ spec:
2323
args:
2424
- |
2525
set +e
26-
/opt/bitnami/kubectl/bin/kubectl --kubeconfig=/etc/kubeconfig delete -f /etc/config
26+
/opt/bitnami/kubectl/bin/kubectl --kubeconfig=/etc/kubeconfig/kubeconfig delete -f /etc/config
2727
set -e
2828
volumeMounts:
2929
- name: kubeconfig-secret
3030
subPath: kubeconfig
31-
mountPath: /etc/kubeconfig
31+
mountPath: /etc/kubeconfig/kubeconfig
3232
- name: serviceaccount-configmap
3333
subPath: serviceaccount
3434
mountPath: /etc/config

charts/karmada-dashboard/templates/karmada-dashboard-init-serviceaccount.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ spec:
2222
command: [ "/bin/bash", "-c" ]
2323
args:
2424
- |
25-
/opt/bitnami/kubectl/bin/kubectl --kubeconfig=/etc/kubeconfig apply -f /etc/config
25+
/opt/bitnami/kubectl/bin/kubectl --kubeconfig=/etc/kubeconfig/kubeconfig apply -f /etc/config
2626
volumeMounts:
2727
- name: kubeconfig-secret
2828
subPath: kubeconfig
29-
mountPath: /etc/kubeconfig
29+
mountPath: /etc/kubeconfig/kubeconfig
3030
- name: serviceaccount-configmap
3131
subPath: serviceaccount
3232
mountPath: /etc/config

charts/karmada-dashboard/templates/kubernetes-dashboard-api.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,10 @@ spec:
6161
volumeMounts:
6262
- name: kubeconfig-secret
6363
subPath: kubeconfig
64-
mountPath: /etc/kubeconfig
64+
mountPath: /etc/kubeconfig/kubeconfig
6565
command:
6666
- kubernetes-dashboard-api
67-
- --karmada-kubeconfig=/etc/kubeconfig
67+
- --karmada-kubeconfig=/etc/kubeconfig/kubeconfig
6868
- --karmada-context={{ .Values.kubernetes_dashboard_api.kubeconfigContext }}
6969
- --insecure-bind-address=0.0.0.0
7070
- --bind-address=0.0.0.0

hack/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,10 @@ Differences from the main repository are:
1111

1212
# Usage
1313
## start a mininal karmada environment
14+
15+
## generate independent dashboard kubeconfig secret
16+
After Karmada control plane is installed and certificates exist in `${HOME}/.karmada` (or `CERT_DIR`), run:
17+
```bash
18+
hack/generate-karmada-dashboard-kubeconfig.sh <HOST_CLUSTER_KUBECONFIG> <HOST_CONTEXT_NAME>
19+
```
20+
This will create/update `karmada-dashboard-config` in namespace `karmada-system`.

0 commit comments

Comments
 (0)