helm_upgrade_logs 0.1.2 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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