mkit 0.4.2 → 0.4.3
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 +4 -4
- data/.github/workflows/publish.yml +22 -0
- data/README.md +1 -0
- data/Rakefile +1 -0
- data/bin/mkitc +9 -0
- data/lib/mkit/app/controllers/services_controller.rb +5 -0
- data/lib/mkit/app/helpers/docker_helper.rb +7 -0
- data/lib/mkit/app/helpers/services_helper.rb +8 -6
- data/lib/mkit/app/model/service.rb +10 -1
- data/lib/mkit/version.rb +1 -1
- data/mkit.gemspec +1 -1
- data/samples/apps/kafka-cluster.yml +21 -0
- data/samples/apps/kafka-magic.yml +16 -0
- data/samples/apps/kafka-zookeeper.yml +15 -0
- data/samples/apps/minio.yml +16 -0
- data/samples/apps/mongo.yml +9 -0
- data/samples/apps/nexus.yml +13 -0
- data/samples/apps/redis-sentinel.yml +11 -0
- data/samples/apps/redis.yml +9 -0
- metadata +12 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb997b1bc61151dde6209eeaefdf4f669df9255b7e69735eb0c5c56e346222f1
|
4
|
+
data.tar.gz: 3819a29d9335a2d4831051d133d9e0056b93d54803701a27ed596a750f907d7b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c95a967e4a016554700b9e844de87481fd8f4b1f71e2cb4cdae16509104b177485f6cdcc3aa114f3d4ab8680e8d39fb05c125fca4dd81edbb089800d08ec275e
|
7
|
+
data.tar.gz: f62ac16133370c7bc41f901fe148b708c046f4598331848daefd4bb108419f7b2fc510a9176bff771fbff3afa4e38d5ce000d70d8cad1feeb41b8f339956d802
|
@@ -0,0 +1,22 @@
|
|
1
|
+
name: Publish Gem
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
tags:
|
6
|
+
- v[0-9]*.[0-9]*.[0-9]*
|
7
|
+
|
8
|
+
jobs:
|
9
|
+
build:
|
10
|
+
runs-on: ubuntu-latest
|
11
|
+
steps:
|
12
|
+
- uses: actions/checkout@v3
|
13
|
+
- name: Publish to RubyGems
|
14
|
+
run: |
|
15
|
+
mkdir -p $HOME/.gem
|
16
|
+
touch $HOME/.gem/credentials
|
17
|
+
chmod 0600 $HOME/.gem/credentials
|
18
|
+
printf -- "---\n:rubygems_api_key: ${RUBYGEMS_API_KEY}\n" > $HOME/.gem/credentials
|
19
|
+
gem build *.gemspec
|
20
|
+
gem push *.gem
|
21
|
+
env:
|
22
|
+
RUBYGEMS_API_KEY: "${{secrets.RUBYGEMS_API_KEY}}"
|
data/README.md
CHANGED
data/Rakefile
CHANGED
data/bin/mkitc
CHANGED
@@ -46,6 +46,15 @@ class MKItClient
|
|
46
46
|
usage: ['[service_id_or_name]'],
|
47
47
|
request: { verb: :get, uri: '/services' }
|
48
48
|
},
|
49
|
+
{
|
50
|
+
cmd: 'logs',
|
51
|
+
args: [
|
52
|
+
{ name: 'id', mandatory: true }
|
53
|
+
],
|
54
|
+
help: 'prints service logs',
|
55
|
+
usage: ['<service_id_or_name>'],
|
56
|
+
request: { verb: :get, uri: '/services/<%=id%>/logs' }
|
57
|
+
},
|
49
58
|
{
|
50
59
|
cmd: 'start',
|
51
60
|
args: [
|
@@ -31,6 +31,11 @@ class ServicesController < MKIt::Server
|
|
31
31
|
resp
|
32
32
|
end
|
33
33
|
|
34
|
+
get '/services/:id/logs' do
|
35
|
+
srv = find_by_id_or_name
|
36
|
+
srv.log
|
37
|
+
end
|
38
|
+
|
34
39
|
# curl -X PUT localhost:4567/services/1 -F "file=@mkit/samples/mkit.yml"
|
35
40
|
put '/services/:id' do
|
36
41
|
srv = find_by_id_or_name
|
@@ -8,14 +8,10 @@ module MKIt
|
|
8
8
|
table.head = %w[id name addr ports pods status]
|
9
9
|
if data.respond_to? 'each'
|
10
10
|
data.each do |srv|
|
11
|
-
|
12
|
-
pods = srv.pod.each.map { |p| p.name.to_s }.join(' ')
|
13
|
-
table.rows << [srv.id, srv.name, srv.lease&.ip, ports, pods, srv.status]
|
11
|
+
table.rows << build_table_row(srv)
|
14
12
|
end
|
15
13
|
else
|
16
|
-
|
17
|
-
pods = data.pod.each.map { |p| p.name.to_s }.join(' ')
|
18
|
-
table.rows << [data.id, data.name, data.lease&.ip, ports, pods, data.status]
|
14
|
+
table.rows << build_table_row(data)
|
19
15
|
end
|
20
16
|
table.to_s
|
21
17
|
end
|
@@ -26,5 +22,11 @@ module MKIt
|
|
26
22
|
error 404, "Couldn't find Service '#{params[:id]}'\n" unless srv
|
27
23
|
srv
|
28
24
|
end
|
25
|
+
|
26
|
+
def build_table_row(data)
|
27
|
+
ports = data.service_port&.each.map { |p| "#{p.mode}/#{p.external_port}" }.join(',')
|
28
|
+
pods = data.pod.each.map { |p| p.name.to_s }.join(' ')
|
29
|
+
[data.id, data.name, data.lease&.ip, ports, pods, data.status]
|
30
|
+
end
|
29
31
|
end
|
30
32
|
end
|
@@ -131,7 +131,7 @@ class Service < ActiveRecord::Base
|
|
131
131
|
end
|
132
132
|
|
133
133
|
def create_pods_network
|
134
|
-
create_network(self.pods_network)
|
134
|
+
create_network(self.pods_network) unless network_exists?(self.pods_network)
|
135
135
|
end
|
136
136
|
|
137
137
|
def deploy_network
|
@@ -237,6 +237,15 @@ class Service < ActiveRecord::Base
|
|
237
237
|
}
|
238
238
|
end
|
239
239
|
|
240
|
+
def log
|
241
|
+
out = ""
|
242
|
+
self.pod.each { |p|
|
243
|
+
out << "<<<< %s | %s >>>>\n" % [self.name, p.name]
|
244
|
+
puts logs(p.name)
|
245
|
+
out << logs(p.name)
|
246
|
+
}
|
247
|
+
out
|
248
|
+
end
|
240
249
|
def as_json(options = {})
|
241
250
|
srv = super
|
242
251
|
a=[:pod, :volume, :service_config, :service_port]
|
data/lib/mkit/version.rb
CHANGED
data/mkit.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.summary = 'Micro Kubernets on Ruby'
|
10
10
|
s.bindir = 'bin'
|
11
11
|
s.homepage = 'https://github.com/valexsantos/mkit'
|
12
|
-
s.license = '
|
12
|
+
s.license = 'MIT'
|
13
13
|
s.description = 'Micro k8s on Ruby - a simple tool to deploy containers to mimic a (very) minimalistic k8 cluster with a nice REST API'
|
14
14
|
# s.require_paths = ["."]
|
15
15
|
s.author = 'Vasco Santos'
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#
|
2
|
+
service:
|
3
|
+
name: kafka-cluster
|
4
|
+
network: kafka-cluster
|
5
|
+
image: confluentinc/cp-kafka:7.1.6
|
6
|
+
ports:
|
7
|
+
- 9092:9092:tcp:round_robin
|
8
|
+
volumes:
|
9
|
+
- docker://kafka_cluster_secrets:/etc/kafka/secrets
|
10
|
+
- docker://kafka_cluster_data:/var/lib/kafka/data
|
11
|
+
environment:
|
12
|
+
KAFKA_BROKER_ID: 1
|
13
|
+
KAFKA_ZOOKEEPER_CONNECT: kafka-zookeeper:2181
|
14
|
+
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
|
15
|
+
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-cluster:9092
|
16
|
+
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT
|
17
|
+
# KAFKA_CONFLUENT_SCHEMA_REGISTRY_URL: http://kafka-schema-registry
|
18
|
+
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
|
19
|
+
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
|
20
|
+
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
|
21
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#
|
2
|
+
service:
|
3
|
+
name: kafka-magic
|
4
|
+
network: kafka-cluster
|
5
|
+
ports:
|
6
|
+
- 80:80:http:round_robin
|
7
|
+
image: digitsy/kafka-magic
|
8
|
+
environment:
|
9
|
+
KMAGIC_ALLOW_TOPIC_DELETE: "true"
|
10
|
+
KMAGIC_ALLOW_SCHEMA_DELETE: "true"
|
11
|
+
KMAGIC_CONFIG_STORE_TYPE: "file"
|
12
|
+
KMAGIC_CONFIG_STORE_CONNECTION: "Data Source=/config/KafkaMagicConfig.db;"
|
13
|
+
KMAGIC_CONFIG_ENCRYPTION_KEY: "123456"
|
14
|
+
volumes:
|
15
|
+
- docker://kafka_magic_config:/config
|
16
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#
|
2
|
+
service:
|
3
|
+
name: kafka-zookeeper
|
4
|
+
image: confluentinc/cp-zookeeper:7.1.6
|
5
|
+
network: kafka-cluster
|
6
|
+
ports:
|
7
|
+
- 2181:2181:tcp:round_robin
|
8
|
+
volumes:
|
9
|
+
- docker://kafka_zookeeper_secrets:/etc/zookeeper/secrets
|
10
|
+
- docker://kafka_zookeeper_data:/var/lib/zookeeper/data
|
11
|
+
- docker://kafka_zookeeper_log:/var/lib/zookeeper/log
|
12
|
+
environment:
|
13
|
+
ZOOKEEPER_CLIENT_PORT: 2181
|
14
|
+
ZOOKEEPER_TICK_TIME: 2000
|
15
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#
|
2
|
+
service:
|
3
|
+
name: minio
|
4
|
+
image: minio/minio
|
5
|
+
command: server /data --console-address ":9001"
|
6
|
+
network: bridge
|
7
|
+
ports:
|
8
|
+
- 9001:9001:http:round_robin
|
9
|
+
- 9000:9000:tcp:round_robin
|
10
|
+
environment:
|
11
|
+
MINIO_ACCESS_KEY: minio
|
12
|
+
MINIO_SECRET_KEY: minio123
|
13
|
+
volumes:
|
14
|
+
#- docker://minio_data:/data
|
15
|
+
- /tmp/minio_data:/data
|
16
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mkit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vasco Santos
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-02-
|
11
|
+
date: 2024-02-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: async-dns
|
@@ -300,6 +300,7 @@ executables:
|
|
300
300
|
extensions: []
|
301
301
|
extra_rdoc_files: []
|
302
302
|
files:
|
303
|
+
- ".github/workflows/publish.yml"
|
303
304
|
- ".rubocop.yml"
|
304
305
|
- Gemfile
|
305
306
|
- Gemfile.lock
|
@@ -365,14 +366,22 @@ files:
|
|
365
366
|
- lib/mkit/workers/worker_manager.rb
|
366
367
|
- mkit.gemspec
|
367
368
|
- mkitd
|
369
|
+
- samples/apps/kafka-cluster.yml
|
370
|
+
- samples/apps/kafka-magic.yml
|
371
|
+
- samples/apps/kafka-zookeeper.yml
|
372
|
+
- samples/apps/minio.yml
|
373
|
+
- samples/apps/mongo.yml
|
374
|
+
- samples/apps/nexus.yml
|
368
375
|
- samples/apps/postgres.yml
|
369
376
|
- samples/apps/rabbitmq.yml
|
377
|
+
- samples/apps/redis-sentinel.yml
|
378
|
+
- samples/apps/redis.yml
|
370
379
|
- samples/daemontools/log/run
|
371
380
|
- samples/daemontools/run
|
372
381
|
- samples/systemd/mkitd.service
|
373
382
|
homepage: https://github.com/valexsantos/mkit
|
374
383
|
licenses:
|
375
|
-
-
|
384
|
+
- MIT
|
376
385
|
metadata: {}
|
377
386
|
post_install_message:
|
378
387
|
rdoc_options: []
|