helm_upgrade_logs 0.1.2 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c1548a7c6316fbac1e944820b1b8e762d45d9f70592daacd825b688231a7a819
4
- data.tar.gz: 0b0fe2f6b84bcc798c4cee1a41b1615a497a11ccbeb6b4c76bbb8708e1518628
3
+ metadata.gz: 2a29eb6e997adbed6f0efe098cbb272dfad2d134975caf54870e347de9346dae
4
+ data.tar.gz: 0bedaf088081958db6cfe90271d6e0138ab217f4392fbadc4252edbb9ed6771a
5
5
  SHA512:
6
- metadata.gz: fbfa619f21a1e8f4b73ff646616556b2090686bc4dff46c31f8dd9d5eb0bac2bab0974d27c63804e42c2272c30710ebeeda94ef0120944409560e5578c63c54f
7
- data.tar.gz: 96a1a1d4efdf94b83471d2472f437c5333418cd1a477558c50a04da611caa08a20873b3708c1685ec10552c28b99a9346aa390e0067ab78f7882e4d62aa58f16
6
+ metadata.gz: 0db53c0194211e9b8dde1c1fc817d3f23d462549fd45e7c55adff91beab54e394ae623e36229065d40041fa6b2fa2fe29f8a9818f37ae62d55b96b4ec4dca1fd
7
+ data.tar.gz: 332be004b62aac72c654948cab38ad0174a180614cdefa74afcc927d10b46172df947ed62dbc8179ef72ea088dbd075acfbf7cfc2122752e1c5247563ad4f6e1
@@ -17,8 +17,29 @@ permissions:
17
17
  contents: read
18
18
 
19
19
  jobs:
20
- test:
21
-
20
+ demo_install_run_gem:
21
+ runs-on: ubuntu-latest
22
+ strategy:
23
+ matrix:
24
+ ruby-version: ['3.0']
25
+ steps:
26
+ - uses: actions/checkout@v3
27
+ - name: Set up Ruby
28
+ uses: ruby/setup-ruby@v1
29
+ with:
30
+ ruby-version: ${{ matrix.ruby-version }}
31
+ - name: Start KIND cluster
32
+ run: bash -f bin/start_kind.sh
33
+ - name: Waiting for KIND cluster to get ready
34
+ run: sleep 70
35
+ - name: Install gem
36
+ run: gem install helm_upgrade_logs
37
+ - name: Add bitnami repo
38
+ run: helm repo add bitnami https://charts.bitnami.com/bitnami
39
+ - name: Helm install debugging logs
40
+ run: helm_upgrade_logs --install nginx bitnami/nginx --wait --debug --set service.type=ClusterIP
41
+
42
+ test_exe:
22
43
  runs-on: ubuntu-latest
23
44
  strategy:
24
45
  matrix:
@@ -26,41 +47,13 @@ jobs:
26
47
 
27
48
  steps:
28
49
  - uses: actions/checkout@v3
29
- # - name: Set up Ruby
30
- # # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
31
- # # change this to (see https://github.com/ruby/setup-ruby#versioning):
32
- # # uses: ruby/setup-ruby@v1
33
- # uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
34
- # with:
35
- # ruby-version: ${{ matrix.ruby-version }}
36
- # bundler-cache: true # runs 'bundle install' and caches installed gems automatically
37
- - name: Test
50
+ - name: Start KIND cluster
38
51
  run: bash -f bin/start_kind.sh
39
- - name: Waiting for KIND cluster to get ready
40
- run: sleep 70
52
+ # - name: Waiting for KIND cluster to get ready
53
+ # run: sleep 70
41
54
  - name: Add bitnami repo
42
55
  run: helm repo add bitnami https://charts.bitnami.com/bitnami
43
- - name: Install through gem exe
44
- run: ./exe/helm_upgrade_logs --install nginx bitnami/nginx --wait --debug --set service.type=ClusterIP
45
- # - name: Check pods
46
- # run: kubectl get pods --all-namespaces
47
- # - name: Check Events
48
- # run: kubectl get events --all-namespaces
49
- #
50
- # - name: Check logs
51
- # run: kubectl logs -lapp.kubernetes.io/managed-by=Helm -f
52
- # - name: helm upgrade install
53
- # run: helm upgrade --install nginx bitnami/nginx --wait --debug --set service.type=ClusterIP
54
- # continue-on-error: true
55
- # - name: Check pods
56
- # run: sleep 15 && kubectl get pods --all-namespaces
57
- # - name: Check Events
58
- # run: sleep 7 && kubectl get events --all-namespaces
59
- # - name: Run from local
60
- # run: bash bin/helm_upgrade_logs.sh --install nginx2 bitnami/nginx --wait --debug --set service.type=ClusterIP
61
-
62
- # - name: Helm upgrade with logs
63
- # run: curl -s https://raw.githubusercontent.com/SamuelGarrattIqa/helm_upgrade_logs/main/exe/helm_upgrade_logs | bash -s -- --install nginx2 bitnami/nginx --wait
64
-
65
- # - name: Run tests
66
- # run: bundle exec rake
56
+ - name: Install bitnami
57
+ run: ./exe/helm_upgrade_logs --install nginx bitnami/nginx --wait --debug --set service.type=ClusterIP --set replicaCount=2
58
+ - name: Install Redis
59
+ run: ./exe/helm_upgrade_logs --install redis bitnami/redis --set auth.enabled=false --version 14.0.2 --wait
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
- ## [Unreleased]
1
+ ## [0.1.6] - 2022-04-17
2
2
 
3
- ## [0.1.0] - 2022-04-14
3
+ - Add `helm_test_logs` exe to check logs during `helm test`
4
4
 
5
- - Initial release
5
+ ## [0.1.5] - 2022-04-16
6
+
7
+ - Only look at logs for release name
8
+
9
+ ## [0.1.4] - 2022-04-16
10
+
11
+ - Wait for pods with logs to start before watching
data/README.md CHANGED
@@ -20,10 +20,24 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- Still not working in a proper sense of a gem but the following kinda works if you want to install a release called `nginx` from the chart `bitnami/nginx`.
23
+ This gem is purely about an `exe` to wrap around `helm` commands and to log helpful commands.
24
+ Once installed, install/upgrade a helm chart with
24
25
 
26
+ ```bash
27
+ helm_upgrade_logs --install redis bitnami/redis --set auth.enabled=false --version 14.0.2 --wait
25
28
  ```
26
- curl -s https://gitlab.com/samuel-garratt/helm_upgrade_logs/-/raw/master/bin/helm_upgrade_logs.sh | bash -s -- --install nginx bitnami/nginx
29
+
30
+ After the `helm_upgrade_logs` command put any options that would normally add after `helm upgrade`.
31
+
32
+ To test a chart showing it logs, in a similar way run
33
+ ```bash
34
+ helm_test_logs redis
35
+ ```
36
+
37
+ This also has a bash script which can be used directly. E.g., to install `nginx` from the chart `bitnami/nginx`.
38
+
39
+ ```
40
+ curl -s https://raw.githubusercontent.com/SamuelGarrattIqa/helm_upgrade_logs/main/bin/helm_upgrade_logs.sh | bash -s -- --install nginx bitnami/nginx
27
41
  ```
28
42
 
29
43
  ## Development
@@ -34,7 +48,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
34
48
 
35
49
  ## Contributing
36
50
 
37
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/helm_upgrade_logs. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://gitlab.com/samuel-garratt/helm_upgrade_logs/blob/master/CODE_OF_CONDUCT.md).
51
+ Bug reports and pull requests are welcome on GitHub at https://github.com/SamuelGarrattIqa/helm_upgrade_logs. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/SamuelGarrattIqa/helm_upgrade_logs/blob/main/CODE_OF_CONDUCT.md).
38
52
 
39
53
  ## License
40
54
 
@@ -42,4 +56,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
42
56
 
43
57
  ## Code of Conduct
44
58
 
45
- Everyone interacting in the HelmUpgradeLogs project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://gitlab.com/samuel-garratt/helm_upgrade_logs/blob/master/CODE_OF_CONDUCT.md).
59
+ Everyone interacting in the HelmUpgradeLogs project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/SamuelGarrattIqa/helm_upgrade_logs/blob/main/CODE_OF_CONDUCT.md).
data/bin/start_kind.sh CHANGED
@@ -55,7 +55,7 @@ done
55
55
 
56
56
  # Assign Deafults
57
57
  CLUSTER_NAME=${CLUSTER_NAME:-"testcluster"} # NOT USING THIS. Does not provide benefit for 1 cluster on kind
58
- KIND_VERSION=${KIND_VERSION:-v0.11.0}
58
+ KIND_VERSION=${KIND_VERSION:-v0.12.0}
59
59
  KUBECTL_VERSION=${KUBECTL_VERSION:-v1.20.4}
60
60
  HELM_VERSION=${HELM_VERSION:-v3.8.0}
61
61
 
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), "..", "lib")
5
+ require 'helm_upgrade_logs'
6
+
7
+ $release_name = ARGV.find { |arg| !arg.start_with?('-') }
8
+
9
+ helm_pid = Process.spawn "helm test #{ARGV.join(' ')}"
10
+
11
+ log_pid = Process.spawn "kubectl logs -lapp.kubernetes.io/managed-by=Helm,app.kubernetes.io/instance=#{$release_name} -f --all-containers --prefix --ignore-errors=true --max-log-requests=20 --timestamps=true"
12
+
13
+ Process.wait helm_pid
14
+ puts `kill #{log_pid}`
@@ -1,15 +1,21 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
+ require 'open3'
4
5
  $LOAD_PATH.unshift File.join(File.dirname(__FILE__), "..", "lib")
5
6
  require 'helm_upgrade_logs'
6
7
 
8
+ $release_name = ARGV.find { |arg| !arg.start_with?('-') }
9
+
7
10
  helm_pid = Process.spawn "helm upgrade #{ARGV.join(' ')}"
8
11
 
9
12
  event_pid = Process.spawn 'kubectl get events --watch-only=true'
10
- sleep 5
11
- log_pid = Process.spawn 'kubectl logs -lapp.kubernetes.io/managed-by=Helm -f --all-containers --prefix --pod-running-timeout=20s'
13
+ service_pid = Process.spawn 'kubectl get services --watch-only=true'
14
+
15
+ wait_for_pod_to_log
16
+ log_pid = Process.spawn "kubectl logs -lapp.kubernetes.io/managed-by=Helm,app.kubernetes.io/instance=#{$release_name} -f --all-containers --prefix --ignore-errors=true --max-log-requests=20 --timestamps=true"
12
17
 
13
18
  Process.wait helm_pid
14
19
  puts `kill #{log_pid}`
15
20
  puts `kill #{event_pid}`
21
+ puts `kill #{service_pid}`
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HelmUpgradeLogs
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.5"
5
5
  end
@@ -1,7 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'open3'
3
4
  require_relative "helm_upgrade_logs/version"
4
5
 
6
+ # Approach not ideal as it will for all containers to be ready and want to stream logs before that
7
+ def wait_for_container_ready
8
+ wait_pid = Process.spawn 'kubectl wait --for=condition=ContainersReady pod --selector "app.kubernetes.io/managed-by=Helm" --timeout=30s'
9
+ Process.wait wait_pid
10
+ end
11
+
12
+ # Wait for pods with logs to be present
13
+ # Not ideal due to https://github.com/kubernetes/kubernetes/issues/28746
14
+ def wait_for_pod_to_log
15
+ 90.times {
16
+ sleep 1
17
+ stdout, stderr, _ = Open3.capture3 "kubectl logs -lapp.kubernetes.io/managed-by=Helm,app.kubernetes.io/instance=#{$release_name}"
18
+ if stderr.empty? && !stdout.strip.empty?
19
+ puts 'Pods with logs found'
20
+ break
21
+ else
22
+ puts "Waiting for pod logs: #{stderr}"
23
+ end
24
+ }
25
+ end
26
+
5
27
  module HelmUpgradeLogs
6
28
  class Error < StandardError; end
7
29
  # Your code goes here...
metadata CHANGED
@@ -1,20 +1,21 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: helm_upgrade_logs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Garratt
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-15 00:00:00.000000000 Z
11
+ date: 2022-04-16 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Basic wrapper around helm and kubectl to allow easy debugging of a helm
14
14
  release. All arguments after a usual helm upgrade are used as normal
15
15
  email:
16
16
  - samuel.garratt@sentify.co
17
17
  executables:
18
+ - helm_test_logs
18
19
  - helm_upgrade_logs
19
20
  extensions: []
20
21
  extra_rdoc_files: []
@@ -38,6 +39,7 @@ files:
38
39
  - bin/helm_upgrade_logs.sh
39
40
  - bin/setup
40
41
  - bin/start_kind.sh
42
+ - exe/helm_test_logs
41
43
  - exe/helm_upgrade_logs
42
44
  - helm_upgrade_logs.gemspec
43
45
  - lib/helm_upgrade_logs.rb