Skip to content

Commit cc73d79

Browse files
authored
Enable make serve on development container (#7631)
* Enable `make serve` on development container * Clean up envs for development container Also, shorten env names.
1 parent b34f503 commit cc73d79

File tree

6 files changed

+40
-55
lines changed

6 files changed

+40
-55
lines changed

docs/developer/getting-started.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,8 @@ Then you can see dashboard http://localhost:4443 with your browser. Since dashbo
157157
### To run with your Kubernetes cluster
158158

159159
1. Copy kubeconfig from your cluster, and confirm the URL for API server in it, and modify it if necessary.
160-
2. Set filepath for kubeconfig into `K8S_DASHBOARD_KUBECONFIG` environment variable.
161-
3. If you deployed `dashboard-metrics-scraper` in your cluster, set its endpoint to `K8S_DASHBOARD_SIDECAR_HOST` environment variable.
160+
2. Set filepath for kubeconfig into `KD_DEV_KUBECONFIG` environment variable.
161+
3. If you deployed `dashboard-metrics-scraper` in your cluster, set its endpoint to `KD_DEV_SIDECAR_HOST` environment variable.
162162
4. Change directory into your dashboard source directory.
163163
5. Run `hack/develop/run-dev-container.sh`.
164164

@@ -168,14 +168,16 @@ To accessing Kubernetes Dashboard, open https://localhost:4443 from your browser
168168

169169
### Just to run development container without building and running dashboard
170170

171-
1. Set `K8S_DASHBOARD_CMD` environment variable as `bash`.
171+
1. Set `KD_DEV_CMD` environment variable as `bash`.
172172
2. Run `hack/develop/run-dev-container.sh`.
173173
3. Run commands as you like in the container.
174174

175-
This runs container with `bash` command.
175+
This runs container and execute `bash` command interactively. Then, develop Kubernetes Dashboard!
176176

177-
To run dashboard, execute `make run`. This will build dashboard for production and run three containers for the dashboard.
178-
Then, access https://localhost:4443 from your browser.
177+
* To run dashboard, execute `make run`. This will build dashboard for production and run three containers for the dashboard.
178+
Then, access https://localhost:4443 from your browser.
179+
* To run dashboard with Angular Live Development Server, execute `KUBECONFIG=/home/user/.kube/config make serve`.
180+
Then, access http://localhost:8080 from your browser.
179181

180182
### To access console inside of running development container
181183

hack/develop/Dockerfile

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,6 @@ ENV TERM=xterm
6161
# Add ${GOPATH}/bin into ${PATH}
6262
ENV PATH=${GOPATH}/bin:${PATH}
6363

64-
# For testing, etc., to know if this environment is on container.
65-
ENV K8S_DASHBOARD_CONTAINER=TRUE
66-
6764
# Suppress angular analytics dialog
6865
ENV NG_CLI_ANALYTICS=false
6966

@@ -118,8 +115,5 @@ RUN mkdir -p /home/user/.kube
118115
# Current directory is always dashboard source directory.
119116
WORKDIR /go/src/github.com/kubernetes/dashboard
120117

121-
# Expose port for frontend, backend and remote debuging
122-
EXPOSE 8080 8443 9090 2345
123-
124118
# Run gosu command in container.
125119
CMD ./hack/develop/gosu-command.sh

hack/develop/gosu-command.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@ echo "user ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers.d/user
3535
# Execute command with gosu as user
3636
GOSU="exec /usr/sbin/gosu user"
3737

38-
# Run command if K8S_DASHBOARD_CMD is set,
38+
# Run command if KD_DEV_CMD is set,
3939
# otherwise run dashboard with `make run` with k8s cluster.
40-
if [[ -n "${K8S_DASHBOARD_CMD}" ]] ; then
40+
if [[ -n "${KD_DEV_CMD}" ]] ; then
4141
# Run specified command
42-
echo "Run '${K8S_DASHBOARD_CMD}'"
43-
${GOSU} ${K8S_DASHBOARD_CMD}
42+
echo "Run '${KD_DEV_CMD}'"
43+
${GOSU} ${KD_DEV_CMD}
4444
else
4545
# Run dashboard with k8s cluster
4646
${GOSU} hack/develop/run-command.sh

hack/develop/run-dev-container.sh

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

16-
# This runs npm commands for dashboard in container.
17-
#
18-
# To run dashboard on container, simply run `run-npm-command.sh`.
19-
# To run npm command in container, set K8S_DASHBOARD_NPM_CMD variable
20-
# like "run check" or run like `run-npm-command.sh run check`.
16+
# This prepares development environment for Kubernetes Dashboard in Docker.
17+
# See `docs/developer/getting-started.md`.
2118

2219
CD="$(pwd)"
2320
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
@@ -30,71 +27,62 @@ DOCKER_GID=$(getent group docker|cut -d ":" -f 3)
3027
# kubeconfig for dashboard.
3128
# This will be mounted and certain npm command can modify it,
3229
# so this should not be set for original kubeconfig.
33-
if [[ -n "${K8S_DASHBOARD_KUBECONFIG}" ]] ; then
30+
if [[ -n "${KD_DEV_KUBECONFIG}" ]] ; then
3431
# Use your own kubernetes cluster.
3532
K8S_OWN_CLUSTER=true
3633
else
3734
# Use the kind cluster that will be created later by the script.
3835
# Set defult as kubeconfig made by `hack/scripts/start-cluster.sh`.
3936
touch /tmp/kind.kubeconfig
40-
K8S_DASHBOARD_KUBECONFIG=/tmp/kind.kubeconfig
37+
KD_DEV_KUBECONFIG=/tmp/kind.kubeconfig
4138
fi
4239

4340
# Create docker network to work with kind cluster
44-
K8S_DASHBOARD_NETWORK="kubernetes-dashboard"
45-
docker network create ${K8S_DASHBOARD_NETWORK} \
41+
KD_DEV_NETWORK="kubernetes-dashboard"
42+
docker network create ${KD_DEV_NETWORK} \
4643
-d=bridge \
4744
-o com.docker.network.bridge.enable_ip_masquerade=true \
4845
-o com.docker.network.driver.mtu=1500
4946

5047
# Bind addres for dashboard
51-
K8S_DASHBOARD_BIND_ADDRESS=${K8S_DASHBOARD_BIND_ADDRESS:-"127.0.0.1"}
48+
KD_DEV_BIND_ADDRESS=${KD_DEV_BIND_ADDRESS:-"127.0.0.1"}
5249

5350
# Metrics Scraper sidecar host for dashboard
54-
K8S_DASHBOARD_SIDECAR_HOST=${K8S_DASHBOARD_SIDECAR_HOST:-"http://localhost:8000"}
55-
56-
# Port for dashboard (frontend)
57-
K8S_DASHBOARD_PORT=${K8S_DASHBOARD_PORT:-"8080"}
58-
59-
# Debugging port for dashboard (backend)
60-
K8S_DASHBOARD_DEBUG_PORT=${K8S_DASHBOARD_DEBUG_PORT:-"2345"}
51+
KD_DEV_SIDECAR_HOST=${KD_DEV_SIDECAR_HOST:-"http://localhost:8000"}
6152

6253
# Build and run container for dashboard
63-
DASHBOARD_IMAGE_NAME=${K8S_DASHBOARD_CONTAINER_NAME:-"k8s-dashboard-dev-image"}
64-
K8S_DASHBOARD_SRC=${K8S_DASHBOARD_SRC:-"${CD}"}
65-
K8S_DASHBOARD_CONTAINER_NAME=${K8S_DASHBOARD_CONTAINER_NAME:-"k8s-dashboard-dev"}
66-
K8S_DASHBOARD_SRC_ON_CONTAINER=/go/src/github.com/kubernetes/dashboard
54+
KD_DEV_IMAGE_NAME=${KD_DEV_CONTAINER_NAME:-"k8s-dashboard-dev-image"}
55+
KD_DEV_SRC=${KD_DEV_SRC:-"${CD}"}
56+
KD_DEV_CONTAINER_NAME=${KD_DEV_CONTAINER_NAME:-"k8s-dashboard-dev"}
57+
KD_DEV_SRC_ON_CONTAINER=/go/src/github.com/kubernetes/dashboard
6758

68-
echo "Remove existing container ${K8S_DASHBOARD_CONTAINER_NAME}"
69-
docker rm -f ${K8S_DASHBOARD_CONTAINER_NAME}
59+
echo "Remove existing container ${KD_DEV_CONTAINER_NAME}"
60+
docker rm -f ${KD_DEV_CONTAINER_NAME}
7061

7162
# Always test if the image is up-to-date. If nothing has changed since last build,
7263
# it'll just use the already-built image
7364
echo "Start building container image for development"
74-
docker build -t ${DASHBOARD_IMAGE_NAME} -f ${DIR}/Dockerfile ${DIR}/../../
65+
docker build -t ${KD_DEV_IMAGE_NAME} -f ${DIR}/Dockerfile ${DIR}/../../
7566

7667
# Run dashboard container for development and expose necessary ports automatically.
7768
echo "Run container for development"
7869
docker run \
7970
-it \
80-
--name=${K8S_DASHBOARD_CONTAINER_NAME} \
71+
--name=${KD_DEV_CONTAINER_NAME} \
8172
--cap-add=SYS_PTRACE \
82-
--network=${K8S_DASHBOARD_NETWORK} \
73+
--network=${KD_DEV_NETWORK} \
8374
-v /var/run/docker.sock:/var/run/docker.sock \
84-
-v ${K8S_DASHBOARD_SRC}:${K8S_DASHBOARD_SRC_ON_CONTAINER} \
85-
-v ${K8S_DASHBOARD_KUBECONFIG}:/home/user/.kube/config \
86-
-e K8S_DASHBOARD_CMD="${K8S_DASHBOARD_CMD}" \
75+
-v ${KD_DEV_SRC}:${KD_DEV_SRC_ON_CONTAINER} \
76+
-v ${KD_DEV_KUBECONFIG}:/home/user/.kube/config \
77+
-e KD_DEV_CMD="${KD_DEV_CMD}" \
8778
-e K8S_OWN_CLUSTER=${K8S_OWN_CLUSTER} \
88-
-e K8S_DASHBOARD_BIND_ADDRESS=${K8S_DASHBOARD_BIND_ADDRESS} \
89-
-e K8S_DASHBOARD_PORT=${K8S_DASHBOARD_PORT} \
90-
-e K8S_DASHBOARD_DEBUG=${K8S_DASHBOARD_DEBUG} \
91-
-e KUBECONFIG=${K8S_DASHBOARD_KUBECONFIG} \
92-
-e KIND_EXPERIMENTAL_DOCKER_NETWORK=${K8S_DASHBOARD_NETWORK} \
93-
-e SIDECAR_HOST=${K8S_DASHBOARD_SIDECAR_HOST} \
79+
-e BIND_ADDRESS=${KD_DEV_BIND_ADDRESS} \
80+
-e KUBECONFIG=${KD_DEV_KUBECONFIG} \
81+
-e KIND_EXPERIMENTAL_DOCKER_NETWORK=${KD_DEV_NETWORK} \
82+
-e SIDECAR_HOST=${KD_DEV_SIDECAR_HOST} \
9483
-e LOCAL_UID="${LOCAL_UID}" \
9584
-e LOCAL_GID="${LOCAL_GID}" \
9685
-e DOCKER_GID="${DOCKER_GID}" \
97-
-p ${K8S_DASHBOARD_PORT}:${K8S_DASHBOARD_PORT} \
98-
-p ${K8S_DASHBOARD_DEBUG_PORT}:${K8S_DASHBOARD_DEBUG_PORT} \
86+
-p 8080:8080 \
9987
${DOCKER_RUN_OPTS} \
100-
${DASHBOARD_IMAGE_NAME}
88+
${KD_DEV_IMAGE_NAME}

modules/web/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ deploy-dev: --deploy-dev
5959

6060
.PHONY: --serve-angular
6161
--serve-angular: --ensure-dependencies
62-
@npx ng serve --proxy-config=$(PROXY_CONFIG) --ssl=$(SSL_ENABLED)
62+
@npx ng serve --proxy-config=$(PROXY_CONFIG) --ssl=$(SSL_ENABLED) --host=$(BIND_ADDRESS)
6363

6464
.PHONY: --build-go
6565
--build-go:

modules/web/hack/include/config.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ SSL_ENABLED ?= false
1515
SYSTEM_BANNER ?= "Local test environment"
1616
SYSTEM_BANNER_SEVERITY ?= INFO
1717
AUTO_GENERATE_CERTIFICATES ?= false
18+
BIND_ADDRESS ?= 127.0.0.1

0 commit comments

Comments
 (0)