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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 56a055d0f918142de3df69c4855efe29d91eb31aa708bdd2750686b8bdb80c47
4
- data.tar.gz: 4060c899e719dad8dcd11a587e2b34f40caf0d4929a5e3d587d4e51b8a133a82
3
+ metadata.gz: fb997b1bc61151dde6209eeaefdf4f669df9255b7e69735eb0c5c56e346222f1
4
+ data.tar.gz: 3819a29d9335a2d4831051d133d9e0056b93d54803701a27ed596a750f907d7b
5
5
  SHA512:
6
- metadata.gz: 7834b888e1474e287e7466443be8ac139bbd96d89e17f787d688aee5f308f076aab408de600acee6dc4f94a145fda9edb8574e7828b1d20ae8fcb46700c96e85
7
- data.tar.gz: 91130b1307fb43d0ac3dc590bf01727dab106c5b726210ef9fe67057dcb7454434f514beee94c4d265ee7351b802d4797ecb8084965f0c07975c4f17e96c3b4e
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
@@ -66,6 +66,7 @@ Commands:
66
66
 
67
67
  ps show services status (alias for status)
68
68
  status show services status
69
+ logs prints service logs
69
70
  start start service
70
71
  stop stop service
71
72
  restart restart service
data/Rakefile CHANGED
@@ -9,6 +9,7 @@ require 'rubygems/specification'
9
9
  require 'rake/testtask'
10
10
  require 'pry'
11
11
  require 'fileutils'
12
+ require 'bundler'
12
13
  require 'bundler/setup'
13
14
  require 'dry-container'
14
15
  require 'sinatra/activerecord'
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
@@ -31,6 +31,13 @@ module MKIt
31
31
  MKIt::CmdRunner.run("docker exec -it #{instance_id} #{cmd}")
32
32
  end
33
33
 
34
+ #
35
+ # logs
36
+ #
37
+ def logs(instance_id)
38
+ `docker logs -n 20 #{instance_id}`
39
+ end
40
+
34
41
  #
35
42
  # network
36
43
  #
@@ -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
- ports = srv.service_port&.each.map { |p| "#{p.mode}/#{p.external_port}" }.join(',')
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
- ports = data.service_port&.each.map { |p| "#{p.mode}/#{p.external_port}" }.join(',')
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) if !network_exists?(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
@@ -1,4 +1,4 @@
1
1
  module MKIt
2
- VERSION = "0.4.2"
2
+ VERSION = "0.4.3"
3
3
  end
4
4
 
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 = 'Apache-2.0'
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
+
@@ -0,0 +1,9 @@
1
+ #
2
+ service:
3
+ name: mongo
4
+ image: mongo:4.0
5
+ command: "--smallfiles"
6
+ network: bridge
7
+ ports:
8
+ - 27017:27017:tcp:round_robin
9
+
@@ -0,0 +1,13 @@
1
+ #
2
+ service:
3
+ name: nexus
4
+ image: sonatype/nexus3
5
+ network: bridge
6
+ ports:
7
+ - 80:8081:http:round_robin
8
+ resources:
9
+ max_replicas: 1
10
+ min_replicas: 1
11
+ volumes:
12
+ - docker://nexus_data:/nexus-data
13
+
@@ -0,0 +1,11 @@
1
+ #
2
+ service:
3
+ name: redis-sentinel
4
+ image: bitnami/redis-sentinel:latest
5
+ network: bridge
6
+ ports:
7
+ - 26379:26379:tcp:round_robin
8
+ environment:
9
+ REDIS_MASTER_HOST: redis
10
+
11
+
@@ -0,0 +1,9 @@
1
+ #
2
+ service:
3
+ name: redis
4
+ image: redis:4.0-alpine
5
+ network: bridge
6
+ ports:
7
+ - 6379:6379:tcp:round_robin
8
+
9
+
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.2
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-02 00:00:00.000000000 Z
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
- - Apache-2.0
384
+ - MIT
376
385
  metadata: {}
377
386
  post_install_message:
378
387
  rdoc_options: []