Skip to content

Commit 4b809a1

Browse files
committed
Fix how to run development container
1 parent e8f7109 commit 4b809a1

File tree

3 files changed

+175
-57
lines changed

3 files changed

+175
-57
lines changed

hack/develop/developmental-role.yaml

Lines changed: 148 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,158 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15+
# ClusterRole and Role for testing and developing Kubernetes Dashboard
16+
17+
################################
18+
### Namespaces
19+
################################
20+
21+
apiVersion: v1
22+
kind: Namespace
23+
metadata:
24+
name: kubernetes-dashboard
25+
labels:
26+
app.kubernetes.io/part-of: kubernetes-dashboard
27+
28+
---
29+
30+
################################
31+
### cert-manager
32+
################################
33+
34+
apiVersion: cert-manager.io/v1
35+
kind: Issuer
36+
metadata:
37+
name: selfsigned
38+
namespace: kubernetes-dashboard
39+
labels:
40+
app.kubernetes.io/name: certmanager
41+
app.kubernetes.io/part-of: kubernetes-dashboard
42+
spec:
43+
selfSigned: {}
44+
45+
---
46+
47+
################################
48+
### Service Accounts
49+
################################
50+
51+
apiVersion: v1
52+
kind: ServiceAccount
53+
metadata:
54+
name: kubernetes-dashboard
55+
namespace: kubernetes-dashboard
56+
labels:
57+
app.kubernetes.io/part-of: kubernetes-dashboard
58+
59+
---
60+
61+
################################
62+
### Secrets & Config Maps
63+
################################
64+
65+
apiVersion: v1
66+
kind: Secret
67+
metadata:
68+
name: kubernetes-dashboard-csrf
69+
namespace: kubernetes-dashboard
70+
labels:
71+
app.kubernetes.io/part-of: kubernetes-dashboard
72+
type: Opaque
73+
data:
74+
csrf: ""
75+
76+
---
77+
78+
apiVersion: v1
79+
kind: Secret
80+
metadata:
81+
name: kubernetes-dashboard-key-holder
82+
namespace: kubernetes-dashboard
83+
labels:
84+
app.kubernetes.io/part-of: kubernetes-dashboard
85+
type: Opaque
86+
87+
---
88+
89+
kind: ConfigMap
90+
apiVersion: v1
91+
metadata:
92+
name: kubernetes-dashboard-settings
93+
namespace: kubernetes-dashboard
94+
labels:
95+
app.kubernetes.io/part-of: kubernetes-dashboard
96+
97+
---
98+
99+
################################
100+
### Roles & Bindings
101+
################################
102+
15103
apiVersion: rbac.authorization.k8s.io/v1
16-
kind: ClusterRoleBinding
104+
kind: Role
17105
metadata:
106+
name: kubernetes-dashboard
107+
namespace: kubernetes-dashboard
18108
labels:
19-
k8s-app: kubernetes-dashboard
20-
name: kubernetes-dashboard-cluster-admin
109+
app.kubernetes.io/part-of: kubernetes-dashboard
110+
rules:
111+
# Allow Dashboard to get, update and delete Dashboard exclusive secrets.
112+
- apiGroups: [ "" ]
113+
resources: [ "secrets" ]
114+
resourceNames: [ "kubernetes-dashboard-key-holder", "kubernetes-dashboard-csrf" ]
115+
verbs: [ "get", "update", "delete" ]
116+
# Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.
117+
- apiGroups: [ "" ]
118+
resources: [ "configmaps" ]
119+
resourceNames: [ "kubernetes-dashboard-settings" ]
120+
verbs: [ "get", "update" ]
121+
# Allow Dashboard to get metrics.
122+
- apiGroups: [ "" ]
123+
resources: [ "services/proxy" ]
124+
resourceNames: [ "kubernetes-dashboard-metrics-scraper", "http:kubernetes-dashboard-metrics-scraper" ]
125+
verbs: [ "get" ]
126+
127+
---
128+
129+
apiVersion: rbac.authorization.k8s.io/v1
130+
kind: ClusterRole
131+
metadata:
132+
name: kubernetes-dashboard
133+
labels:
134+
app.kubernetes.io/part-of: kubernetes-dashboard
135+
rules:
136+
# Allow Metrics Scraper to get metrics from the Metrics server
137+
- apiGroups: [ "metrics.k8s.io" ]
138+
resources: [ "pods", "nodes" ]
139+
verbs: [ "get", "list", "watch" ]
140+
141+
---
142+
143+
apiVersion: rbac.authorization.k8s.io/v1
144+
kind: RoleBinding
145+
metadata:
146+
name: kubernetes-dashboard
21147
namespace: kubernetes-dashboard
148+
labels:
149+
app.kubernetes.io/part-of: kubernetes-dashboard
150+
roleRef:
151+
apiGroup: rbac.authorization.k8s.io
152+
kind: Role
153+
name: kubernetes-dashboard
154+
subjects:
155+
- kind: ServiceAccount
156+
name: kubernetes-dashboard
157+
namespace: kubernetes-dashboard
158+
159+
---
160+
161+
apiVersion: rbac.authorization.k8s.io/v1
162+
kind: ClusterRoleBinding
163+
metadata:
164+
name: kubernetes-dashboard
165+
labels:
166+
app.kubernetes.io/part-of: kubernetes-dashboard
22167
roleRef:
23168
apiGroup: rbac.authorization.k8s.io
24169
kind: ClusterRole

hack/develop/run-command.sh

Lines changed: 24 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -13,58 +13,30 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515

16-
ROOT_DIR="$(cd $(dirname "${BASH_SOURCE}")/../.. && pwd -P)"
17-
18-
# Create `kind` cluster if kubeconfig for own cluster is not set.
19-
if [[ "${K8S_OWN_CLUSTER}" != "dummy" ]] ; then
20-
# Stop `kind` cluster.
21-
echo "Stop kind cluster"
22-
hack/scripts/stop-cluster.sh
23-
# Start `kind` cluster.
24-
echo "Start kind cluster in docker network named kubernetes-dashboard"
25-
hack/scripts/start-cluster.sh
26-
# Copy kubeconfig from /home/user/.kube/config
27-
cat /home/user/.kube/config > /tmp/kind.kubeconfig
28-
# Edit kubeconfig for kind
29-
KIND_CONTAINER_NAME="kubernetes-dashboard-control-plane"
30-
KIND_ADDR=$(sudo docker inspect -f='{{(index .NetworkSettings.Networks "kubernetes-dashboard").IPAddress}}' ${KIND_CONTAINER_NAME})
31-
sed -e "s/0.0.0.0:[0-9]\+/${KIND_ADDR}:6443/g" /tmp/kind.kubeconfig > /home/user/.kube/config
32-
# Copy kubeconfig from /home/user/.kube/config again.
33-
cat /home/user/.kube/config > /tmp/kind.kubeconfig
34-
# Deploy recommended.yaml to deploy dashboard-metrics-scraper sidecar
35-
echo "Deploy dashboard and dashboard-metrics-scraper into kind cluster"
36-
kubectl apply -f charts/recommended.yaml
37-
# Add role for development
38-
echo "Add full access role for development"
39-
kubectl apply -f hack/develop/developmental-role.yaml
40-
echo "@@@@@@@@@@@@@@ CAUTION!! @@@@@@@@@@@@@@"
41-
echo "ADDED FULL ACCESS ROLE FOR DEVELOPMENT!"
42-
echo "DO NOT USE THIS IN OPEN NETWORK!"
43-
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
44-
# Kill and run `kubectl proxy`
45-
KUBECTL_PID=$(ps -A|grep 'kubectl'|tr -s ' '|cut -d ' ' -f 2)
46-
echo "Kill kubectl ${KUBECTL_PID}"
47-
kill ${KUBECTL_PID}
48-
nohup kubectl proxy --address 127.0.0.1 --port 8000 >/tmp/kubeproxy.log 2>&1 &
49-
export SIDECAR_HOST="http://localhost:8000/api/v1/namespaces/kubernetes-dashboard/services/dashboard-metrics-scraper:/proxy/"
50-
# Inform how to get token for logging in to dashboard
51-
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
52-
echo "HOW TO GET TOKEN FOR LOGGING INTO DASHBOARD"
53-
echo ""
54-
echo "1. Run terminal for dashboard container."
55-
echo " docker exec -it k8s-dashboard-dev gosu user bash"
56-
echo ""
57-
echo "2. Run following to get token for logging into dashboard."
58-
echo " kubectl -n kubernetes-dashboard create token kubernetes-dashboard"
59-
echo ""
60-
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
61-
fi
62-
63-
# Clean install dependencies
64-
cd modules/web
65-
rm -fr node_modules
66-
yarn
67-
cd ${ROOT_DIR}
16+
# Inform how to add full access role for development
17+
# and get token for logging in to dashboard
18+
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ CAUTION!! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
19+
echo "DO NOT USE THIS IN OPEN NETWORK!"
20+
echo ""
21+
echo "To add a role with full access for development and get its token"
22+
echo "to log into the Dashboard, see followings:"
23+
echo ""
24+
echo "1. Run terminal in development container."
25+
echo " docker exec -it k8s-dashboard-dev gosu user bash"
26+
echo ""
27+
echo "2. Set env for kubeconfig"
28+
echo " export KUBECONFIG=/go/src/github.com/kubernetes/dashboard/.tmp/kubeconfig"
29+
echo ""
30+
echo "3. Add full access role for development."
31+
echo " kubectl apply -f hack/develop/developmental-role.yaml"
32+
echo ""
33+
echo "4. Run following to get token for logging into dashboard."
34+
echo " kubectl -n kubernetes-dashboard create token kubernetes-dashboard"
35+
echo ""
36+
echo "5. Access https://localhost:8443/ with browser on your host,"
37+
echo " then login with token."
38+
echo ""
39+
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
6840

6941
# Start dashboard.
7042
echo "Start dashboard in production mode"

hack/develop/run-dev-container.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ KD_DEV_SRC=${KD_DEV_SRC:-"${CD}"}
5555
KD_DEV_CONTAINER_NAME=${KD_DEV_CONTAINER_NAME:-"k8s-dashboard-dev"}
5656
KD_DEV_SRC_ON_CONTAINER=/go/src/github.com/kubernetes/dashboard
5757

58+
# Set command on development container
59+
KD_DEV_CMD=${KD_DEV_CMD:-$*}
60+
5861
echo "Remove existing container ${KD_DEV_CONTAINER_NAME}"
5962
docker rm -f ${KD_DEV_CONTAINER_NAME}
6063

@@ -84,5 +87,3 @@ docker run \
8487
-e DOCKER_GID="${DOCKER_GID}" \
8588
${DOCKER_RUN_OPTS} \
8689
${KD_DEV_IMAGE_NAME}
87-
#-p 8080:8080 \
88-
#-v ${KD_DEV_KUBECONFIG}:/home/user/.kube/config \

0 commit comments

Comments
 (0)