Skip to content

Commit

Permalink
Improve local script (opensearch-project#507)
Browse files Browse the repository at this point in the history
Signed-off-by: Kemal Akkoyun <[email protected]>
  • Loading branch information
kakkoyun authored Jun 28, 2022
1 parent 7bac67f commit 74bf79f
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 43 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
/bin
*.bpf.o
TODO.md
minikube-*
19 changes: 3 additions & 16 deletions Dockerfile.dev
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,8 @@ RUN apt-get -o Acquire::Check-Valid-Until="false" update -y && \
clang-14 \
make \
gcc \
coreutils \
zlib1g-dev \
libelf-dev \
ca-certificates \
netbase && \
libelf-dev && \
ln -s /usr/bin/clang-14 /usr/bin/clang && \
ln -s /usr/bin/llc-14 /usr/bin/llc

Expand Down Expand Up @@ -61,18 +58,8 @@ RUN go install "github.com/go-delve/delve/cmd/dlv@${DELVE_VERSION}"
COPY . /parca-agent
RUN make build

FROM docker.io/debian:bullseye-slim@sha256:f6957458017ec31c4e325a76f39d6323c4c21b0e31572efa006baa927a160891 AS all

COPY --from=build /etc/nsswitch.conf /etc/nsswitch.conf
COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY --from=build /usr/share/zoneinfo /usr/share/zoneinfo
COPY --from=build /parca-agent/dist/parca-agent /bin/parca-agent
COPY --from=build /go/bin/dlv /dlv

FROM scratch

COPY --chown=0:0 --from=all / /
RUN chown -R nobody:nogroup /tmp
RUN cp ./dist/parca-agent /bin/parca-agent
RUN cp /go/bin/dlv /dlv

EXPOSE 7071

Expand Down
22 changes: 21 additions & 1 deletion Tiltfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ docker_prune_settings(num_builds=5)
## Parca Agent

docker_build(
'parca.io/parca/parca-agent:dev', '',
'localhost:5000/parca-agent:dev', '',
dockerfile='Dockerfile.dev',
only=[
'./3rdparty',
Expand All @@ -17,5 +17,25 @@ docker_build(
'./rust-toolchain.toml'
],
)

# Build directly in minikube
# custom_build(
# 'localhost:5000/parca-agent:dev',
# 'minikube -p parca-agent image build -f Dockerfile.dev -t $EXPECTED_REF .',
# [
# './3rdparty',
# './Makefile',
# './bpf',
# './cmd',
# './go.mod',
# './go.sum',
# './internal',
# './pkg',
# './rust-toolchain.toml'
# ],
# skips_local_docker=True,
# )


k8s_yaml('deploy/tilt/parca-agent-daemonSet.yaml')
k8s_resource('parca-agent', port_forwards=[7071])
2 changes: 1 addition & 1 deletion deploy/dev.jsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ function(serverVersion='v0.4.2')
name: 'parca-agent',
namespace: ns.metadata.name,
version: 'dev',
image: 'parca.io/parca/parca-agent:dev',
image: 'localhost:5000/parca-agent:dev',
stores: ['%s.%s.svc.cluster.local:%d' % [server.service.metadata.name, server.service.metadata.namespace, server.config.port]],
logLevel: 'debug',
insecure: true,
Expand Down
95 changes: 70 additions & 25 deletions scripts/local-dev.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,39 +22,84 @@

set -euo pipefail

NODE_COUNT=${NODE_COUNT:-1}

MINIKUBE_PROFILE_NAME="${MINIKUBE_PROFILE_NAME:-parca-agent}"
function mk() {
minikube -p "${MINIKUBE_PROFILE_NAME}" "$@"
}

# Creates a local minikube cluster, and deploys the dev env into the cluster
function up() {
# Spin up local cluster if one isn't running
if minikube status -p parca-agent; then
echo "----------------------------------------------------------"
echo "Dev cluster already running. Skipping minikube cluster creation"
echo "----------------------------------------------------------"
else
ctlptl create registry ctlptl-registry || echo 'Registry already exists'
# kvm2, hyperkit, hyperv, vmwarefusion, virtualbox, vmware, xhyve
minikube start -p parca-agent \
--driver=kvm2 \
--kubernetes-version=v1.22.3 \
--cpus=4 \
--memory=16gb \
--disk-size=20gb \
--docker-opt dns=8.8.8.8 \
--docker-opt default-ulimit=memlock=9223372036854775807:9223372036854775807
fi

# Deploy all services into the cluster
deploy

echo "Now run \"tilt up\" to start developing!"
# Spin up local cluster if one isn't running
if mk status; then
echo "----------------------------------------------------------"
echo "Dev cluster already running"
echo "Skipping minikube cluster creation"
echo "----------------------------------------------------------"
else
# local_registry

echo "----------------------------------------------------------"
echo "Creating minikube cluster"
echo "----------------------------------------------------------"
# kvm2, hyperkit, hyperv, vmwarefu1sion, virtualbox, vmware, xhyve
mk start \
--driver=kvm2 \
--nodes=${NODE_COUNT} \
--kubernetes-version=v1.23.3 \
--cpus=2 \
--memory=8gb \
--disk-size=20gb \
--docker-opt dns=8.8.8.8 \
--docker-opt default-ulimit=memlock=9223372036854775807:9223372036854775807
fi

trap 'kill $(jobs -p)' SIGINT SIGTERM EXIT

# Configure registry in minikube
minikube_registry

# Deploy all services into the cluster
deploy

# Start the Tilt
tilt up
}

# Tears down a local minikube cluster
function down() {
minikube delete -p parca-agent
mk delete
}

# Deploys the dev env into the minikube cluster
function deploy() {
# Deploy all generated manifests
kubectl apply -R -f ./deploy/tilt
echo "----------------------------------------------------------"
echo "Deploying dev environment"
echo "----------------------------------------------------------"
# Deploy all generated manifests
kubectl apply -R -f ./deploy/tilt
kubectl rollout -n parca status deployment parca
kubectl port-forward -n parca svc/parca 7070 &
}

function minikube_registry() {
mk addons enable registry
kubectl port-forward -n kube-system svc/registry 5000:80 &
}

reg_name='minikube-registry'
reg_port='5000'

# Configures a registry using localhost docker runtime.
function local_registry() {
echo "----------------------------------------------------------"
echo "Checking if registry exists/Creating registry"
echo "----------------------------------------------------------"
running="$(docker inspect -f '{{.State.Running}}' "${reg_name}" 2>/dev/null || true)"
if [ "${running}" != 'true' ]; then
docker run \
-d --restart=always -p "${reg_port}:5000" --name "${reg_name}" \
registry:2
fi
}

0 comments on commit 74bf79f

Please sign in to comment.