sensu-plugins-kubernetes 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -1
- data/README.md +11 -0
- data/lib/sensu-plugins-kubernetes/cli.rb +7 -1
- data/lib/sensu-plugins-kubernetes/client.rb +28 -12
- data/lib/sensu-plugins-kubernetes/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36157c792a8bec58626218b903748035f536c988
|
4
|
+
data.tar.gz: 5b423f2c185b3f00527889355469884182d866f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c350b9c7ab40bfa371b2df8ddacdb56207203e2294252b9c7f34a4e92f7845082bbeab91dcaf9debb794c7b67e1342d5e6f39c8652432eabd7c3a737d7c56af7
|
7
|
+
data.tar.gz: e025312b7dbcaaf10c85c48ddb5c1d0964ee6a4ce5c5510a5563ad327268c7cdf0affe3f6a91ec4e330b11c0533df8da2b66c9eafe19848b165778845b82a42f
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,11 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
7
|
|
8
|
+
## [1.1.0] - 2017-08-11
|
9
|
+
### Added
|
10
|
+
- Ruby 2.4.1 testing (@thomasriley)
|
11
|
+
- Add option to use kubeconfig file for auth and TLS (@jaxxstorm)
|
12
|
+
|
8
13
|
## [1.0.0] - 2017-03-21
|
9
14
|
### Added
|
10
15
|
- Add `metrics-pods.rb` that will output the number of running pods per service (@mickfeech)
|
@@ -49,7 +54,8 @@ pending pods, the restart count portion has been split into it's own check, `che
|
|
49
54
|
### Added
|
50
55
|
- initial release
|
51
56
|
|
52
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/1.
|
57
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/1.1.0...HEAD
|
58
|
+
[1.1.0]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/1.0.0...1.1.0
|
53
59
|
[1.0.0]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/0.1.2...1.0.0
|
54
60
|
[0.1.2]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/0.1.1...0.1.2
|
55
61
|
[0.1.1]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/0.1.0...0.1.1
|
data/README.md
CHANGED
@@ -35,6 +35,7 @@ Usage: check-kube-nodes-ready.rb (options)
|
|
35
35
|
--token-file TOKEN-FILE File containing bearer token for authorization
|
36
36
|
-u, --user USER User with access to API
|
37
37
|
-v, --api-version VERSION API version
|
38
|
+
--kube-config KUBECONFIG Path to a kube config file
|
38
39
|
```
|
39
40
|
|
40
41
|
**check-kube-apiserver-available.rb**
|
@@ -49,6 +50,7 @@ Usage: check-kube-apiserver-available.rb (options)
|
|
49
50
|
-t, --token TOKEN Bearer token for authorization
|
50
51
|
--token-file TOKEN-FILE File containing bearer token for authorization
|
51
52
|
-u, --user USER User with access to API
|
53
|
+
--kube-config KUBECONFIG Path to a kube config file
|
52
54
|
```
|
53
55
|
|
54
56
|
**check-kube-pods-pending.rb**
|
@@ -70,6 +72,7 @@ Usage: check-kube-pods-pending.rb (options)
|
|
70
72
|
-f, --filter FILTER Selector filter for pods to be checked
|
71
73
|
-p, --pods PODS List of pods to check
|
72
74
|
-r, --restart COUNT Threshold for number of restarts allowed
|
75
|
+
--kube-config KUBECONFIG Path to a kube config file
|
73
76
|
```
|
74
77
|
|
75
78
|
**check-kube-service-available.rb**
|
@@ -87,6 +90,7 @@ Usage: check-kube-service-available.rb (options)
|
|
87
90
|
-v, --api-version VERSION API version
|
88
91
|
-p, --pending SECONDS Time (in seconds) a pod may be pending for and be valid
|
89
92
|
-l, --list SERVICES List of services to check (required)
|
93
|
+
--kube-config KUBECONFIG Path to a kube config file
|
90
94
|
```
|
91
95
|
|
92
96
|
**check-kube-pods-runtime.rb**
|
@@ -106,6 +110,7 @@ Usage: check-kube-pods-runtime.rb (options)
|
|
106
110
|
-f, --filter FILTER Selector filter for pods to be checked
|
107
111
|
-p, --pods PODS List of pods to check
|
108
112
|
-w, --warn TIMEOUT Threshold for pods to be in the pending state
|
113
|
+
--kube-config KUBECONFIG Path to a kube config file
|
109
114
|
```
|
110
115
|
|
111
116
|
**check-kube-pods-running.rb**
|
@@ -125,6 +130,7 @@ Usage: ./check-kube-pods-running.rb (options)
|
|
125
130
|
--exclude-namespace
|
126
131
|
-f, --filter FILTER Selector filter for pods to be checked
|
127
132
|
-p, --pods PODS List of pods to check
|
133
|
+
--kube-config KUBECONFIG Path to a kube config file
|
128
134
|
```
|
129
135
|
|
130
136
|
**check-kube-pods-restarting.rb**
|
@@ -146,6 +152,7 @@ Usage: ./check-kube-pods-restarting.rb (options)
|
|
146
152
|
-f, --filter FILTER Selector filter for pods to be checked
|
147
153
|
-p, --pods PODS List of pods to check
|
148
154
|
-r, --restart COUNT Threshold for number of restarts allowed
|
155
|
+
--kube-config KUBECONFIG Path to a kube config file
|
149
156
|
```
|
150
157
|
|
151
158
|
**handler-kube-pod.rb**
|
@@ -186,6 +193,7 @@ Usage: metrics-pods.rb (options)
|
|
186
193
|
--token-file TOKEN-FILE File containing bearer token for authorization
|
187
194
|
-u, --user USER User with access to API
|
188
195
|
-v, --api-version VERSION API version
|
196
|
+
--kube-config KUBECONFIG Path to a kube config file
|
189
197
|
```
|
190
198
|
|
191
199
|
`api_server` and `api_version` can still be used for backwards compatibility,
|
@@ -209,6 +217,7 @@ Of the Kubernetes connection options:
|
|
209
217
|
--password PASSWORD If user is passed, also pass a password
|
210
218
|
--token TOKEN Bearer token for authorization
|
211
219
|
--token-file TOKEN-FILE File containing bearer token for authorization
|
220
|
+
--kube-config KUBECONFIG Path to a kube config file
|
212
221
|
```
|
213
222
|
Only the API server option is required, however it does default to the `KUBERNETES_MASTER` environment variable, or you can use the in-cluster option. The other options are to be used as needed.
|
214
223
|
|
@@ -227,3 +236,5 @@ Only one of the authentication methods (user, token, or token file) can be used.
|
|
227
236
|
For example, using a username and a token, or a token and a token file, will produce an error.
|
228
237
|
|
229
238
|
If the 'user' authentication method is used, a password must also be provided.
|
239
|
+
|
240
|
+
The kubeconfig options enable the usage of a kubeconfig file, which is a yaml file which defines the authentication and TLS config. More information about kubeconfig files can be found in the [Kubernetes Docs](https://kubernetes.io/docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig/)
|
@@ -66,6 +66,11 @@ module Sensu
|
|
66
66
|
long: '--token-file TOKEN-FILE',
|
67
67
|
default: nil
|
68
68
|
|
69
|
+
option :kube_config,
|
70
|
+
description: 'Path to a kube config file',
|
71
|
+
long: '--kube-config KUBECONFIG',
|
72
|
+
default: nil
|
73
|
+
|
69
74
|
attr_reader :client
|
70
75
|
|
71
76
|
# Initializes the Sensu check by creating a Kubernetes client
|
@@ -84,7 +89,8 @@ module Sensu
|
|
84
89
|
username: config[:api_user],
|
85
90
|
password: config[:api_password],
|
86
91
|
token: config[:api_token],
|
87
|
-
token_file: config[:api_token_file]
|
92
|
+
token_file: config[:api_token_file],
|
93
|
+
kube_config: config[:kube_config]
|
88
94
|
)
|
89
95
|
rescue ArgumentError => e
|
90
96
|
critical e.message
|
@@ -38,6 +38,8 @@ module Sensu
|
|
38
38
|
# The bearer token for Kubernetes authorization
|
39
39
|
# @option options [String] :token_file
|
40
40
|
# A file containing the bearer token for Kubernetes authorization
|
41
|
+
# @option options [String] :kube_config
|
42
|
+
# A file containing kubeconfig yaml configuration
|
41
43
|
#
|
42
44
|
# @raise [ArgumentError] If an invalid option, or combination of options, is given.
|
43
45
|
# @raise [Errono::*] If there is a problem reading the client certificate or private key file.
|
@@ -46,18 +48,32 @@ module Sensu
|
|
46
48
|
def kubeclient(options = {})
|
47
49
|
raise(ArgumentError, 'options must be a hash') unless options.is_a?(Hash)
|
48
50
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
51
|
+
if options[:kube_config]
|
52
|
+
begin
|
53
|
+
config = Kubeclient::Config.read(options[:kube_config])
|
54
|
+
|
55
|
+
api_server = config.context.api_endpoint
|
56
|
+
api_version = config.context.api_version
|
57
|
+
|
58
|
+
ssl_options = config.context.ssl_options
|
59
|
+
auth_options = config.context.auth_options
|
60
|
+
rescue => e
|
61
|
+
raise e, "Unable to read kubeconfig: #{e}", e.backtrace
|
62
|
+
end
|
63
|
+
else
|
64
|
+
api_server = options[:server]
|
65
|
+
api_version = options[:version]
|
66
|
+
|
67
|
+
ssl_options = {
|
68
|
+
ca_file: options[:ca_file]
|
69
|
+
}
|
70
|
+
auth_options = {
|
71
|
+
username: options[:username],
|
72
|
+
password: options[:password],
|
73
|
+
bearer_token: options[:token],
|
74
|
+
bearer_token_file: options[:token_file]
|
75
|
+
}
|
76
|
+
end
|
61
77
|
|
62
78
|
if [:client_cert_file, :client_key_file].count { |k| options[k] } == 1
|
63
79
|
raise ArgumentError, 'SSL requires both client cert and client key'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-kubernetes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sensu-Plugins and contributors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-plugin
|