diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 5c0b0c3..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,88 +0,0 @@ -version: 2 -jobs: - build: - docker: - - image: circleci/ruby:2.6.1-node-browsers - working_directory: ~/repo - steps: - - checkout - - setup_remote_docker: - reusable: true - - run: - name: Install dependencies - command: | - .circleci/install_dep.sh - - run: - name: Builder - command: | - rake build -t -v - cp -R pkg /tmp - - persist_to_workspace: - root: /tmp - paths: - - pkg - - unit_test: - docker: - - image: circleci/ruby:2.6.1-node-browsers - working_directory: ~/repo - steps: - - attach_workspace: - at: /tmp - - checkout - - setup_remote_docker: - reusable: true - - run: - name: Install dependencies - command: | - .circleci/install_dep.sh - - run: - name: Run unit tests - command: | - bundle exec rake test -t -v - - func_test_main: - docker: - - image: circleci/ruby:2.6.1-node-browsers - working_directory: ~/repo - steps: - - checkout - - setup_remote_docker: - reusable: true - - run: - name: trigger - command: | - .circleci/trigger_func_test.sh main - - func_test_develop: - docker: - - image: circleci/ruby:2.6.1-node-browsers - working_directory: ~/repo - steps: - - checkout - - setup_remote_docker: - reusable: true - - run: - name: trigger - command: | - .circleci/trigger_func_test.sh develop - -workflows: - version: 2 - build_test_push: - jobs: - - build: - filters: - branches: - ignore: - - /^release\/.*/ - - main - - unit_test: - requires: - - build - - func_test_main: - requires: - - unit_test - - func_test_develop: - requires: - - unit_test \ No newline at end of file diff --git a/.circleci/trigger_func_test.sh b/.circleci/trigger_func_test.sh deleted file mode 100755 index a08745a..0000000 --- a/.circleci/trigger_func_test.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env bash - -# trigger SCK 'main' branch to introduce this new image from this commit -# to working version of every other component. -ORGANIZATION=splunk -PROJECT=splunk-connect-for-kubernetes -BRANCH=$1 - -# Trigger functional test -curl -X POST --header "Content-Type: application/json" \ - -d '{"build_parameters": {"CIRCLE_JOB":"build_test", "TRIG_BRANCH":"'"$CIRCLE_BRANCH"'", "TRIG_PROJECT":"'"$CIRCLE_PROJECT_REPONAME"'", "TRIG_REPO":"'"$CIRCLE_REPOSITORY_URL"'"}}' "https://circleci.com/api/v1/project/$ORGANIZATION/$PROJECT/tree/$BRANCH?circle-token=$CIRCLE_TOKEN" > build.json -cat build.json -BUILD_NUM=$(jq -r .build_num build.json) -sleep 10 - -# Wait until finish or maximum 20 minutes -TIMEOUT=20 -DONE="FALSE" -until [ "$TIMEOUT" -lt 0 ] || [ "$DONE" == "TRUE" ]; do - curl https://circleci.com/api/v1/project/$ORGANIZATION/$PROJECT/$BUILD_NUM?circle-token=$CIRCLE_TOKEN > build_progress.json - STATUS=$(jq -r .status build_progress.json) - echo "STATUS = $STATUS" - if [ "$STATUS" != "running" ] && [ "$STATUS" != "queued" ]; then - DONE="TRUE" - else - let TIMEOUT-- - sleep 60 - fi -done - -BUILD_URL=$(jq -r .build_url build_progress.json) -if [ "$DONE" == "FALSE" ]; then - # Cancel hanging job and fail - curl -X POST https://circleci.com/api/v1/project/$ORGANIZATION/$PROJECT/$BUILD_NUM/cancel?circle-token=$CIRCLE_TOKEN -else - if [ "$STATUS" != "success" ] && [ "$STATUS" != "fixed" ]; then - echo "Functional test have failed please see:" - echo $BUILD_URL - exit 1 - fi - exit 0 -fi diff --git a/.github/workflows/ci_build_test.yaml b/.github/workflows/ci_build_test.yaml new file mode 100644 index 0000000..44c1b3e --- /dev/null +++ b/.github/workflows/ci_build_test.yaml @@ -0,0 +1,192 @@ +name: CI Build Test + +on: + pull_request: + branches-ignore: + - /^release\/.*/ + - main + +jobs: + build: + runs-on: ubuntu-20.04 + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Set up Ruby 2.6.1 + uses: ruby/setup-ruby@v1 + with: + ruby-version: 2.6.1 + + - name: Install dependencies + run: | + sudo ci_scripts/install_dep.sh + + - name: Builder + run: | + rake build -t -v + cp -R pkg /tmp + + - name: Cache pkg + uses: actions/cache@v1 + with: + path: /tmp + key: ${{ runner.os }}-build + + unit-test: + runs-on: ubuntu-20.04 + needs: + - build + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Install dependencies + run: | + sudo ci_scripts/install_dep.sh + + - uses: actions/cache@v2 + with: + path: /tmp + key: ${{ runner.os }}-build + + - name: Run unit tests + run: | + bundle exec rake test -t -v + + func-test: + needs: + - unit-test + runs-on: ubuntu-20.04 + env: + CI_SPLUNK_PORT: 8089 + CI_SPLUNK_USERNAME: admin + CI_SPLUNK_HEC_TOKEN: a6b5e77f-d5f6-415a-bd43-930cecb12959 + CI_SPLUNK_PASSWORD: helloworld + CI_INDEX_EVENTS: ci_events + CI_INDEX_OBJECTS: ci_objects + CI_INDEX_METRICS: ci_metrics + KUBERNETES_VERSION: v1.15.2 + MINIKUBE_VERSION: v1.21.0 + GITHUB_ACTIONS: true + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Prepare container build + id: prep + run: | + VERSION=`cat VERSION` + TAGS=splunk/k8s-metrics:recent + + echo ::set-output name=tags::${TAGS} + echo ::set-output name=version::${VERSION} + + - name: Set up QEMU + uses: docker/setup-qemu-action@master + with: + platforms: all + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@master + + - name: Build multi-arch kubernetes-metrics image + uses: docker/build-push-action@v2 + with: + builder: ${{ steps.buildx.outputs.name }} + context: . + file: ./docker/Dockerfile + platforms: linux/amd64 + push: false + load: true + tags: ${{ steps.prep.outputs.tags }} + build-args: VERSION=${{ steps.prep.outputs.version }} + + - name: Check kubernetes-metrics image + run: | + docker image ls + + - name: Setup Minikube + run: | + # Install Kubectl + curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/${KUBERNETES_VERSION}/bin/linux/amd64/kubectl + chmod +x kubectl + sudo mv kubectl /usr/local/bin/ + mkdir -p ${HOME}/.kube + touch ${HOME}/.kube/config + # Install Minikube + curl -Lo minikube https://storage.googleapis.com/minikube/releases/${MINIKUBE_VERSION}/minikube-linux-amd64 + chmod +x minikube + sudo mv minikube /usr/local/bin/ + # Start Minikube and Wait + minikube start --driver=docker --container-runtime=docker --cpus 2 --memory 4096 --kubernetes-version=${KUBERNETES_VERSION} --no-vtx-check + export JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}' + until kubectl get nodes -o jsonpath="$JSONPATH" 2>&1 | grep -q "Ready=True"; do + sleep 1; + done + + - name: Install Splunk + run: | + # Wait until minikube is ready + kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml + export JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}' + until kubectl get nodes -o jsonpath="$JSONPATH" 2>&1 | grep -q "Ready=True"; do + echo "wait for minikube ready ..." + sleep 1; + done + kubectl get nodes + # Install Splunk on minikube + kubectl apply -f ci_scripts/k8s-splunk.yml + # Wait until splunk is ready + until kubectl logs splunk --tail=2 | grep -q 'Ansible playbook complete'; do + sleep 1; + done + export CI_SPLUNK_HOST=$(kubectl get pod splunk --template={{.status.podIP}}) + # Setup Indexes + curl -k -u $CI_SPLUNK_USERNAME:$CI_SPLUNK_PASSWORD https://$CI_SPLUNK_HOST:$CI_SPLUNK_PORT/services/data/indexes -d name=$CI_INDEX_EVENTS -d datatype=event + curl -k -u $CI_SPLUNK_USERNAME:$CI_SPLUNK_PASSWORD https://$CI_SPLUNK_HOST:$CI_SPLUNK_PORT/services/data/indexes -d name=$CI_INDEX_OBJECTS -d datatype=event + curl -k -u $CI_SPLUNK_USERNAME:$CI_SPLUNK_PASSWORD https://$CI_SPLUNK_HOST:$CI_SPLUNK_PORT/services/data/indexes -d name=$CI_INDEX_METRICS -d datatype=metric + curl -k -u $CI_SPLUNK_USERNAME:$CI_SPLUNK_PASSWORD https://$CI_SPLUNK_HOST:$CI_SPLUNK_PORT/services/data/indexes -d name=default-events -d datatype=event + curl -k -u $CI_SPLUNK_USERNAME:$CI_SPLUNK_PASSWORD https://$CI_SPLUNK_HOST:$CI_SPLUNK_PORT/services/data/indexes -d name=ns-anno -d datatype=event + curl -k -u $CI_SPLUNK_USERNAME:$CI_SPLUNK_PASSWORD https://$CI_SPLUNK_HOST:$CI_SPLUNK_PORT/services/data/indexes -d name=pod-anno -d datatype=event + # Enable HEC services + curl -X POST -u $CI_SPLUNK_USERNAME:$CI_SPLUNK_PASSWORD -k https://$CI_SPLUNK_HOST:$CI_SPLUNK_PORT/servicesNS/nobody/splunk_httpinput/data/inputs/http/http/enable + # Create new HEC token + curl -X POST -u $CI_SPLUNK_USERNAME:$CI_SPLUNK_PASSWORD -k -d "name=splunk_hec_token&token=a6b5e77f-d5f6-415a-bd43-930cecb12959&disabled=0&index=default-events&indexes=default-events,$CI_INDEX_METRICS,$CI_INDEX_OBJECTS,$CI_INDEX_EVENTS,ns-anno,pod-anno" https://$CI_SPLUNK_HOST:$CI_SPLUNK_PORT/servicesNS/nobody/splunk_httpinput/data/inputs/http + # Restart Splunk + curl -k -u $CI_SPLUNK_USERNAME:$CI_SPLUNK_PASSWORD https://$CI_SPLUNK_HOST:$CI_SPLUNK_PORT/services/server/control/restart -X POST + + - name: Deploy k8s connector + run: | + export CI_SPLUNK_HOST=$(kubectl get pod splunk --template={{.status.podIP}}) + ci_scripts/deploy_connector.sh + + - name: Deploy log generator + run: | + cd /opt/splunk-connect-for-kubernetes + kubectl apply -f test/test_setup.yaml + sleep 60 + + - uses: actions/setup-python@v2 + with: + python-version: 3.7 + + - name: Run functional tests + run: | + echo "check the pods" + kubectl get pods -A + cd /opt/splunk-connect-for-kubernetes + kubectl get nodes + export PYTHONWARNINGS="ignore:Unverified HTTPS request" + export CI_SPLUNK_HOST=$(kubectl get pod splunk --template={{.status.podIP}}) + cd test + pip install --upgrade pip + pip install -r requirements.txt + echo "Running functional tests....." + python -m pytest \ + --splunkd-url https://$CI_SPLUNK_HOST:8089 \ + --splunk-user admin \ + --splunk-password $CI_SPLUNK_PASSWORD \ + -p no:warnings -s diff --git a/Gemfile.lock b/Gemfile.lock index b26684c..5f60be1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - fluent-plugin-kubernetes-metrics (1.1.6) + fluent-plugin-kubernetes-metrics (1.1.7) fluentd (>= 1.9.1) kubeclient (~> 4.6.0) multi_json (~> 1.14.1) @@ -19,18 +19,18 @@ GEM docile (1.4.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) - ffi (1.15.3) + ffi (1.15.4) ffi-compiler (1.0.1) ffi (>= 1.0.0) rake - fluentd (1.13.2) + fluentd (1.14.2) bundler cool.io (>= 1.4.5, < 2.0.0) http_parser.rb (>= 0.5.1, < 0.8.0) msgpack (>= 1.3.1, < 2.0.0) serverengine (>= 2.2.2, < 3.0.0) sigdump (~> 0.2.2) - strptime (>= 0.2.2, < 1.0.0) + strptime (>= 0.2.4, < 1.0.0) tzinfo (>= 1.0, < 3.0) tzinfo-data (~> 1.0) webrick (>= 1.4.2, < 1.8.0) @@ -48,19 +48,19 @@ GEM http-parser (1.2.3) ffi-compiler (>= 1.0, < 2.0) http_parser.rb (0.7.0) - json (2.5.1) + json (2.6.1) kubeclient (4.6.0) http (>= 3.0, < 5.0) recursive-open-struct (~> 1.0, >= 1.0.4) rest-client (~> 2.0) mime-types (3.3.1) mime-types-data (~> 3.2015) - mime-types-data (3.2021.0704) + mime-types-data (3.2021.0901) msgpack (1.4.2) multi_json (1.14.1) netrc (0.11.0) oj (3.10.18) - power_assert (2.0.0) + power_assert (2.0.1) public_suffix (4.0.6) rake (13.0.6) recursive-open-struct (1.1.3) @@ -83,11 +83,11 @@ GEM power_assert tzinfo (2.0.4) concurrent-ruby (~> 1.0) - tzinfo-data (1.2021.1) + tzinfo-data (1.2021.5) tzinfo (>= 1.0.0) unf (0.1.4) unf_ext - unf_ext (0.0.7.7) + unf_ext (0.0.8) webmock (3.5.1) addressable (>= 2.3.6) crack (>= 0.3.2) @@ -107,4 +107,4 @@ DEPENDENCIES webmock (~> 3.5.1) BUNDLED WITH - 2.1.4 + 2.2.23 diff --git a/Makefile b/Makefile index 46a55e3..8bad0df 100644 --- a/Makefile +++ b/Makefile @@ -12,11 +12,9 @@ clean: clean_pkg clean_gems build: clean_pkg @bundle exec rake build -docker: build install-deps - @cp pkg/fluent-plugin-*.gem docker - @mkdir -p docker/licenses - @cp -rp LICENSE docker/licenses/ - @docker build --no-cache --pull --build-arg VERSION=$(VERSION) -t splunk/k8s-metrics:$(VERSION) ./docker +.PHONY: docker +docker: + @docker build --no-cache --pull --build-arg VERSION=$(VERSION) -t splunk/k8s-metrics:$(VERSION) . -f docker/Dockerfile unit-test: @bundle exec rake test diff --git a/README.md b/README.md index b87869c..3891de1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ -[![CircleCI](https://circleci.com/gh/git-lfs/git-lfs.svg?style=shield&circle-token=856152c2b02bfd236f54d21e1f581f3e4ebf47ad)](https://circleci.com/gh/splunk/fluent-plugin-kubernetes-metrics) # Fluentd Plugin for Kubernetes Metrics The [Fluentd](https://fluentd.org/) input plugin collects Kubernetes cluster metrics which are exposed by the [Kubelet API](https://kubernetes.io/docs/admin/kubelet/) and forwards them to fluentd. diff --git a/VERSION b/VERSION index ab67981..a5ba932 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.1.6 \ No newline at end of file +1.1.7 \ No newline at end of file diff --git a/ci_scripts/deploy_connector.sh b/ci_scripts/deploy_connector.sh new file mode 100755 index 0000000..b2d5a55 --- /dev/null +++ b/ci_scripts/deploy_connector.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +set -e + +#Make sure to check and clean previously failed deployment +echo "Checking if previous deployment exist..." +if [ "`helm ls --short`" == "" ]; then + echo "Nothing to clean, ready for deployment" +else + helm delete $(helm ls --short) +fi + +# Clone splunk-connect-for-kubernetes repo +cd /opt +git clone https://github.com/splunk/splunk-connect-for-kubernetes.git +cd splunk-connect-for-kubernetes + +minikube image load splunk/k8s-metrics:recent + +echo "Deploying k8s-connect with latest changes" +helm install ci-sck --set global.splunk.hec.token=$CI_SPLUNK_HEC_TOKEN \ +--set global.splunk.hec.host=$CI_SPLUNK_HOST \ +--set kubelet.serviceMonitor.https=true \ +--set splunk-kubernetes-metrics.image.tag=recent \ +--set splunk-kubernetes-metrics.image.pullPolicy=IfNotPresent \ +-f ci_scripts/sck_values.yml helm-chart/splunk-connect-for-kubernetes +#wait for deployment to finish +until kubectl get pod | grep Running | [[ $(wc -l) == 4 ]]; do + sleep 1; +done diff --git a/.circleci/install_dep.sh b/ci_scripts/install_dep.sh similarity index 75% rename from .circleci/install_dep.sh rename to ci_scripts/install_dep.sh index 7c4d131..4fb02aa 100755 --- a/.circleci/install_dep.sh +++ b/ci_scripts/install_dep.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -set -e +sudo gem update --system gem install bundler bundle update --bundler bundle install \ No newline at end of file diff --git a/ci_scripts/k8s-splunk.yml b/ci_scripts/k8s-splunk.yml new file mode 100644 index 0000000..543c6ca --- /dev/null +++ b/ci_scripts/k8s-splunk.yml @@ -0,0 +1,31 @@ +apiVersion: v1 +kind: Pod +metadata: + name: splunk +spec: + hostNetwork: true + securityContext: + runAsUser: 0 + runAsGroup: 0 + containers: + - name: splunk + image: splunk/splunk:latest + ports: + - containerPort: 8000 + hostPort: 8000 + protocol: TCP + - containerPort: 8088 + hostPort: 8088 + protocol: TCP + - containerPort: 8089 + hostPort: 8089 + protocol: TCP + env: + - name: SPLUNK_START_ARGS + value: --accept-license + - name: SPLUNK_USER + value: root + - name: SPLUNK_PASSWORD + value: helloworld + - name: SPLUNK_LAUNCH_CONF + value: OPTIMISTIC_ABOUT_FILE_LOCKING=1 diff --git a/docker/Dockerfile b/docker/Dockerfile index 8016370..84a6e0f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,3 +1,13 @@ +FROM ruby:2.7.4-buster as builder + +ADD ./ /app/ +WORKDIR /app +RUN gem install bundler +RUN bundle update --bundler +RUN bundle install + +RUN bundle exec rake build -t -v + FROM registry.access.redhat.com/ubi8/ruby-27 ARG VERSION @@ -15,15 +25,18 @@ ENV FLUENT_USER fluent USER root -COPY *.gem /tmp/ -COPY licenses /licenses +COPY --from=builder /app/pkg/fluent-plugin-*.gem /tmp/ + +RUN mkdir /licenses +COPY --from=builder /app/LICENSE /licenses/LICENSE -COPY Gemfile* ./ +COPY --from=builder /app/docker/Gemfile* ./ RUN yum update -y \ && yum remove -y nodejs npm \ && gem install bundler \ && gem unpack /tmp/*.gem --target gem \ - && bundle install + && bundle install \ + && rpm -e --nodeps python3-pip-wheel python3-urllib3-* python3-requests-* python3-libxml2-* python3-dmidecode-* subscription-manager-* libwebp-* libwebp-devel-* glib2-* libjpeg-turbo-devel-* libjpeg-turbo-* mariadb-connector-c-config-* mariadb-connector-c-* mariadb-connector-c-devel-* rsync-* sqlite-libs-* sqlite-devel-* sqlite-* libxml2-* libxml2-devel-* libX11-* libX11-common-* libX11-devel-* libX11-xcb-* nettle-* libsolv-* file-libs-* dbus-daemon-* tar-* qt5-srpm-macros-* perl-parent-* git-* bsdtar-* openssh-clients-* json-c-* binutils-* libtiff-devel-* libtiff-* || true RUN groupadd -r $FLUENT_USER && \ useradd -r -g $FLUENT_USER $FLUENT_USER && \ diff --git a/docker/Gemfile b/docker/Gemfile index ba730ee..84c7fb4 100644 --- a/docker/Gemfile +++ b/docker/Gemfile @@ -3,10 +3,10 @@ source 'https://rubygems.org' # This is separate gemfile for building docker image that has all plugins # for kubernetes log collection agent # List all required gems here and install via bundler to resolve dependencies -gem "fluentd", "=1.11.5" +gem "fluentd", ">=1.14.2" gem "fluent-plugin-prometheus", ">=2.0" gem "fluent-plugin-record-modifier", "=2.1.0" -gem "fluent-plugin-kubernetes_metadata_filter", "=2.5.3" +gem "fluent-plugin-kubernetes_metadata_filter", ">=2.5.3" gem "fluent-plugin-jq", "=0.5.1" gem "oj", "=3.10.18" gem 'multi_json', '=1.14.1' diff --git a/docker/Gemfile.lock b/docker/Gemfile.lock index e41745c..dc78522 100644 --- a/docker/Gemfile.lock +++ b/docker/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: gem specs: - fluent-plugin-kubernetes-metrics (1.1.6) + fluent-plugin-kubernetes-metrics (1.1.7) fluentd (>= 1.9.1) kubeclient (~> 4.6.0) multi_json (~> 1.14.1) @@ -10,9 +10,9 @@ PATH GEM remote: https://rubygems.org/ specs: - activemodel (6.1.4) - activesupport (= 6.1.4) - activesupport (6.1.4) + activemodel (6.1.4.1) + activesupport (= 6.1.4.1) + activesupport (6.1.4.1) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -29,18 +29,18 @@ GEM cool.io (1.7.1) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) - ffi (1.15.3) + ffi (1.15.4) ffi-compiler (1.0.1) ffi (>= 1.0.0) rake fluent-plugin-jq (0.5.1) fluentd (>= 0.14.10, < 2) multi_json (~> 1.13) - fluent-plugin-kubernetes_metadata_filter (2.5.3) - fluentd (>= 0.14.0, < 1.12) - kubeclient (< 5) + fluent-plugin-kubernetes_metadata_filter (2.9.2) + fluentd (>= 0.14.0, < 1.15) + kubeclient (>= 4.0.0, < 5.0.0) lru_redux - fluent-plugin-prometheus (2.0.1) + fluent-plugin-prometheus (2.0.2) fluentd (>= 1.9.1, < 2) prometheus-client (>= 2.1.0) fluent-plugin-record-modifier (2.1.0) @@ -51,15 +51,17 @@ GEM net-http-persistent (~> 3.1) openid_connect (~> 1.1.8) prometheus-client (>= 2.1.0) - fluentd (1.11.5) + fluentd (1.14.2) + bundler cool.io (>= 1.4.5, < 2.0.0) - http_parser.rb (>= 0.5.1, < 0.7.0) + http_parser.rb (>= 0.5.1, < 0.8.0) msgpack (>= 1.3.1, < 2.0.0) serverengine (>= 2.2.2, < 3.0.0) sigdump (~> 0.2.2) - strptime (>= 0.2.2, < 1.0.0) + strptime (>= 0.2.4, < 1.0.0) tzinfo (>= 1.0, < 3.0) tzinfo-data (~> 1.0) + webrick (>= 1.4.2, < 1.8.0) yajl-ruby (~> 1.0) http (4.4.1) addressable (~> 2.3) @@ -74,7 +76,7 @@ GEM ffi-compiler (>= 1.0, < 2.0) http_parser.rb (0.5.3) httpclient (2.8.3) - i18n (1.8.10) + i18n (1.8.11) concurrent-ruby (~> 1.0) json-jwt (1.13.0) activesupport (>= 4.2) @@ -89,8 +91,8 @@ GEM mini_mime (>= 0.1.1) mime-types (3.3.1) mime-types-data (~> 3.2015) - mime-types-data (3.2021.0704) - mini_mime (1.1.0) + mime-types-data (3.2021.0901) + mini_mime (1.1.2) minitest (5.14.4) msgpack (1.4.2) multi_json (1.14.1) @@ -111,7 +113,7 @@ GEM prometheus-client (2.1.0) public_suffix (4.0.6) rack (2.2.3) - rack-oauth2 (1.17.0) + rack-oauth2 (1.19.0) activesupport attr_required httpclient @@ -128,28 +130,29 @@ GEM sigdump (~> 0.2.2) sigdump (0.2.4) strptime (0.2.5) - swd (1.2.0) + swd (1.3.0) activesupport (>= 3) attr_required (>= 0.0.5) httpclient (>= 2.4) tzinfo (2.0.4) concurrent-ruby (~> 1.0) - tzinfo-data (1.2021.1) + tzinfo-data (1.2021.5) tzinfo (>= 1.0.0) unf (0.1.4) unf_ext - unf_ext (0.0.7.7) + unf_ext (0.0.8) validate_email (0.1.6) activemodel (>= 3.0) mail (>= 2.2.5) validate_url (1.0.13) activemodel (>= 3.0.0) public_suffix - webfinger (1.1.0) + webfinger (1.2.0) activesupport httpclient (>= 2.4) + webrick (1.7.0) yajl-ruby (1.4.1) - zeitwerk (2.4.2) + zeitwerk (2.5.1) PLATFORMS ruby @@ -158,11 +161,11 @@ DEPENDENCIES bigdecimal (= 3.0.0) fluent-plugin-jq (= 0.5.1) fluent-plugin-kubernetes-metrics! - fluent-plugin-kubernetes_metadata_filter (= 2.5.3) + fluent-plugin-kubernetes_metadata_filter (>= 2.5.3) fluent-plugin-prometheus (>= 2.0) fluent-plugin-record-modifier (= 2.1.0) fluent-plugin-splunk-hec (>= 1.2.5) - fluentd (= 1.11.5) + fluentd (>= 1.14.2) http_parser.rb (= 0.5.3) kubeclient (= 4.6.0) multi_json (= 1.14.1)