mkit 0.4.2 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|