grpc-xds/k8s/troubleshoot/components/tools/patch-tools.yaml (54 lines of code) (raw):

# Copyright 2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Patch to install troubleshooting tools and protobuf definitions using an init container. apiVersion: apps/v1 kind: Deployment metadata: name: bastion spec: template: spec: containers: - name: app volumeMounts: - name: protos mountPath: /opt/protos - name: tools mountPath: /usr/local/bin initContainers: - name: install-tools image: golang command: - /bin/sh - -c - | apt-get update --assume-yes apt-get install --assume-yes ca-certificates curl jq # go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest # go install github.com/grpc-ecosystem/grpcdebug@latest # curl -L "https://github.com/mikefarah/yq/releases/download/$(curl -sL https://api.github.com/repos/mikefarah/yq/releases/latest | jq -r .tag_name)/yq_$(go env GOOS)_$(go env GOARCH).tar.gz" | tar zx -C /opt/tools ./yq_$(go env GOOS)_$(go env GOARCH) mv /opt/tools/yq_$(go env GOOS)_$(go env GOARCH) /opt/tools/yq chmod +x /opt/tools/yq # curl -L -o /opt/tools/kubectl "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/$(go env GOOS)/$(go env GOARCH)/kubectl" chmod +x /opt/tools/kubectl # curl -L -o /opt/tools/jq "https://github.com/jqlang/jq/releases/download/$(curl -sSL https://api.github.com/repos/jqlang/jq/releases | grep '"tag_name":' | head -n1 | grep -o 'jq-[0-9]*\.[0-9]*\.*[0-9]*')/jq-$(go env GOOS)-$(go env GOARCH)" chmod +x /opt/tools/jq # # Clone the Google RPC type definition protos, such as ErrorInfo, to /opt/protos/google/rpc: git clone --branch=master --depth=1 --no-checkout --single-branch https://github.com/googleapis/googleapis /opt/protos cd /opt/protos git sparse-checkout init --cone git sparse-checkout set google/rpc git checkout --quiet @ # # Download the `helloworld.Greeter` gRPC service proto definition to /opt/protos/helloworld/greeter.proto: mkdir -p /opt/protos/helloworld curl -sSLo /opt/protos/helloworld/greeter.proto https://raw.githubusercontent.com/grpc/grpc/v1.68.2/examples/protos/helloworld.proto env: - name: DEBIAN_FRONTEND value: noninteractive - name: GOBIN value: /opt/tools volumeMounts: - name: protos mountPath: /opt/protos - name: tools mountPath: /opt/tools volumes: - name: protos emptyDir: {} - name: tools emptyDir: {}