luizalabs / teresa Goto Github PK
View Code? Open in Web Editor NEWOpen source tool to deploy apps to Kubernetes clusters
License: Other
Open source tool to deploy apps to Kubernetes clusters
License: Other
As a teresa user
I want to access the shell from a pod
To run cli commands from my app
Today only the web process is started. Suggestion: multi-container pods.
It would be nice if the command teresa deploy
ask to me what environment I want to run the command.
For some reason the tar file has the full path of each file.
For https it should be done on the elb.
# .gitignore
composer.phar
vendor/
# .teresaignore
composer.phar
vendor/
When I run git status
the folder vendor/
are not listed on my shell output, but when I do a deploy on Teresa, I see this message:
! WARNING: Your Composer vendor dir is part of your Git repository.
This directory should not be under version control; only your
'composer.json' and 'composer.lock' files should be added, which
will let Composer handle installation of dependencies on deploy.
To suppress this notice, first remove the folder from your index
by running 'git rm -r --cached vendor/'.
Next, edit your project's '.gitignore' file and add the folder
'/vendor/' to the list.
For more info, refer to the Composer FAQ: http://bit.ly/1rlCSZU
So, Teresa
are including the folder vendor
on tarball for deploy.
Changing .teresaignore
to this:
composer.phar
vendor
vendor folder are not include and the buildpack install my dependencies.
Create an app and set any env var.
The input files end up being encoded like this:
-rw-rw-rw- 0/0 896 2017-08-24 08:04 src\\routes.js.orig
-rw-rw-rw- 0/0 949 2017-08-24 08:04 src\\server.js
-rw-rw-rw- 0/0 3343 2016-03-12 10:44 swagger\\dist\\404.html
-rw-rw-rw- 0/0 18 2016-01-19 13:05 swagger\\dist\\CNAME
-rw-rw-rw- 0/0 34174 2015-10-28 19:28 swagger\\dist\\bower_components\\ace-builds\\src-noconflict\\ext-language_tools.js
-rw-rw-rw- 0/0 9992 2015-10-28 19:28 swagger\\dist\\bower_components\\ace-builds\\src-noconflict\\ext-searchbox.js
-rw-rw-rw- 0/0 12066 2015-10-28 19:28 swagger\\dist\\bower_components\\ace-builds\\src-noconflict\\ext-settings_menu.js
-rw-rw-rw- 0/0 24444 2015-10-28 19:28 swagger\\dist\\bower_components\\ace-builds\\src-noconflict\\keybinding-emacs.js
instead of:
-rw-rw-rw- 0/0 825 2017-08-31 08:25 /src/routes.js
-rw-rw-rw- 0/0 896 2017-08-24 08:04 /src/routes.js.orig
-rw-rw-rw- 0/0 949 2017-08-24 08:04 /src/server.js
-rw-rw-rw- 0/0 3343 2016-03-12 10:44 /swagger/dist/404.html
-rw-rw-rw- 0/0 18 2016-01-19 13:05 /swagger/dist/CNAME
-rw-rw-rw- 0/0 34174 2015-10-28 19:28 /swagger/dist/bower_components/ace-builds/src-noconflict/ext-language_tools.js
-rw-rw-rw- 0/0 9992 2015-10-28 19:28 /swagger/dist/bower_components/ace-builds/src-noconflict/ext-searchbox.js
For example for UDP services.
Mainly from the build process.
The deploy list
command is really useful and I'm already using it sincce v0.8.0 has come.
But I think that showing the date and time the deploy completed may be more useful, mainly in troubleshooting when the EXACT date matters and when there are multiple deploys in the same day.
This is a real output for an app of mine:
+----------+---------+-----+------------------------------------------+
| REVISION | CURRENT | AGE | DESCRIPTION |
+----------+---------+-----+------------------------------------------+
| 17 | false | 19d | c2d00239 Bump version: 1.114.2 → 1.115.0 |
+----------+---------+-----+------------------------------------------+
| 18 | false | 12d | c00332b Bump version: 1.115.0 → 1.115.1 |
+----------+---------+-----+------------------------------------------+
| 19 | false | 12d | 226868ea Bump version: 1.115.1 → 1.116.0 |
+----------+---------+-----+------------------------------------------+
| 20 | false | 10d | 5290ab57 Bump version: 1.116.0 → 1.117.0 |
+----------+---------+-----+------------------------------------------+
| 21 | false | 5d | v1.118.0 |
+----------+---------+-----+------------------------------------------+
| 22 | true | 4d | 48f4553 Bump version: 1.118.0 → 1.119.0 |
+----------+---------+-----+------------------------------------------+
It would be nice if it is something like this (the COMPLETED AT
column):
| ---------- | --------- | ---------------------| ------------------------------------------ |
| REVISION | CURRENT | COMPLETED AT | DESCRIPTION |
| ---------- | --------- | -------------------- | ------------------------------------------ |
| 17 | false | 2017-09-01 01:00:00Z | c2d00239 Bump version: 1.114.2 → 1.115.0 |
| ---------- | --------- | ----- | ------------------------------------------ |
| 18 | false | 2017-09-08 01:00:00Z | c00332b Bump version: 1.115.0 → 1.115.1 |
| ---------- | --------- | ----- | ------------------------------------------ |
| 19 | false | 2017-09-08 01:00:00Z | 226868ea Bump version: 1.115.1 → 1.116.0 |
| ---------- | --------- | ----- | ------------------------------------------ |
| 20 | false | 2017-09-10 01:00:00Z | 5290ab57 Bump version: 1.116.0 → 1.117.0 |
| ---------- | --------- | ----- | ------------------------------------------ |
| 21 | false | 2017-09-14 01:00:00Z | v1.118.0 |
| ---------- | --------- | ----- | ------------------------------------------ |
| 22 | true | 2017-09-15 01:00:00Z | 48f4553 Bump version: 1.118.0 → 1.119.0 |
| ---------- | --------- | -------------------- | ------------------------------------------ |
(I've changed the tabke format a bit, but it's just for formatting purpose)
The example is in iso format, but it may be formatted with local computer time.
On the repository the available version it's 0.7.0 while the current version is 0.15.0
I've followed all steps outlined on the teresa-api readme file, however the teresa-api pod fails with the following error message:
time="2017-04-27T00:43:30Z" level=fatal msg="the server could not find the requested resource (get secrets teresa-keys)"
Even though teresa-keys
exist:
$ kubectl get secrets teresa-keys -n teresa
NAME TYPE DATA AGE
teresa-keys Opaque 2 2d
This is the deployment file:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: teresa
spec:
replicas: 2
template:
metadata:
labels:
app: teresa
spec:
containers:
- name: teresa
image: cmgvieira/teresa:latest
ports:
- containerPort: 8080
env:
- name: TERESAK8S_HOST
value: [MY K8S HOST]
- name: TERESAK8S_USERNAME
value: [MY K8S USERNAME COPIED FROM ~/.kube/config]
- name: TERESAK8S_PASSWORD
value: [MY K8S PASSWORD COPIED FROM ~/.kube/config]
- name: TERESAK8S_INSECURE
value: "true"
- name: TERESAFILESTORAGE_TYPE
value: s3
- name: TERESAFILESTORAGE_AWS_KEY
value: [MY S3 AWS KEY]
- name: TERESAFILESTORAGE_AWS_SECRET
value: MY S3 AWS SECRET]
- name: TERESAFILESTORAGE_AWS_REGION
value: us-east-1
- name: TERESAFILESTORAGE_AWS_BUCKET
value: [MY BUCKET NAME]
- name: TERESADEPLOY_REVISION_HISTORY_LIMIT
value: "5"
- name: TERESADEPLOY_START_TIMEOUT
value: 10m
- name: TERESADEPLOY_FINISH_TIMEOUT
value: 30m
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
Unless I'm missing something from the readme, I think it should be updated with clearer instructions.
So apps are automatically monitored. Requisites:
The command teresa app info
uses stale information from the annotation, it must always read from kubernetes.
Related cli issue.
Despite the fact that we try to maintain approximately equivalent numbers of instances in each enabled availability zone, cross-zone load balancing offers one more layer of protection.
Currently, there is a column CURRENT
with true/false
values, which only one will be true
.
I think would be nicer and easier to find which revision is the current if its displayed together with revision number.
Today:
+----------+---------+-----+------------------------------------------+
| REVISION | CURRENT | AGE | DESCRIPTION |
+----------+---------+-----+------------------------------------------+
| 17 | false | 19d | c2d00239 Bump version: 1.114.2 → 1.115.0 |
+----------+---------+-----+------------------------------------------+
| 18 | false | 12d | c00332b Bump version: 1.115.0 → 1.115.1 |
+----------+---------+-----+------------------------------------------+
| 19 | true | 12d | 226868ea Bump version: 1.115.1 → 1.116.0 |
+----------+---------+-----+------------------------------------------+
| 20 | false | 10d | 5290ab57 Bump version: 1.116.0 → 1.117.0 |
+----------+---------+-----+------------------------------------------+
| 21 | false | 5d | v1.118.0 |
+----------+---------+-----+------------------------------------------+
| 22 | false | 4d | 48f4553 Bump version: 1.118.0 → 1.119.0 |
+----------+---------+-----+------------------------------------------+
+--------------+-----+------------------------------------------+
| REVISION | AGE | DESCRIPTION |
+--------------+-----+------------------------------------------+
| 17 | 19d | c2d00239 Bump version: 1.114.2 → 1.115.0 |
+--------------+-----+------------------------------------------+
| 18 | 12d | c00332b Bump version: 1.115.0 → 1.115.1 |
+--------------+-----+------------------------------------------+
| 19 (current) | 12d | 226868ea Bump version: 1.115.1 → 1.116.0 |
+--------------+-----+------------------------------------------+
| 20 | 10d | 5290ab57 Bump version: 1.116.0 → 1.117.0 |
+--------------+-----+------------------------------------------+
| 21 | 5d | v1.118.0 |
+--------------+-----+------------------------------------------+
| 22 | 4d | 48f4553 Bump version: 1.118.0 → 1.119.0 |
+--------------+-----+------------------------------------------+
what do you think?
gRPC could help on clients in differents languages, performance, bi-direction streams, etc.
When the user belongs to two teams only the last label is shown:
$ teresa team list
Teams:
- team 2 (member)
contact: [email protected]
- team 2 (member)
contact: [email protected]
We should automatically rollback to the latest successful deployment when the health check detects
a failure.
Basically we should be able to do:
teresa resource create mysql --set foo1=bar1 --set foo2=bar2 ...
where the variables are optional customizations (disk size, mysql version, etc). We should avoid to hardcode resource templates and instead use a secure transport such as https to get them.
Hi, I have a self-signed ssl certificate. How should I specify the tls.crt and tls.key when install this chart?
To implement #374, we have a few options:
teresa resource create|delete ...
teresa resource ...
to work and it must be a specific versionteresa resource
as we wishUsing go-swagger for code generation is causing more pain than gain (immature, opaque, etc.)
When I set the parameter useMinio=true
during helm install, I noticed that the parameter aws.s3.bucket
is being ignored, and it's using it's default teresa
Skip the building process completely.
Contributing files are a great way to help people to get started contributing in a project.
I have opened some issues today, but I felt a little worried about how they should be like.
I think that setting up a contributing file may help.
There are some examples I found that are nice, and you use as inspiration:
It would be nice if teresa app info myapp
return env vars sorted.
Add field automountServiceAccountToken: false
to the podspec as soon as we migrate officially to k8s 1.7.
The logs endpoint for instance works by streaming content and needs a persistent connection.
We should be able to collect a timeseries for cpu, mem, etc. from all apps in order to alert the user of possible anomalies, for instance significant increases in resource consumption.
Preferably based on minikube.
We need for example a scheduler that periodically cleans up old build pods.
Currently, the last revision is shown at bottom of the table.
I think in most cases, we only need to know which was the last one, and it would be more easy to see if it is displayed first. Example:
+----------+---------+-----+------------------------------------------+
| REVISION | CURRENT | AGE | DESCRIPTION |
+----------+---------+-----+------------------------------------------+
| 22 | true | 4d | 48f4553 Bump version: 1.118.0 → 1.119.0 |
+----------+---------+-----+------------------------------------------+
| 21 | false | 5d | v1.118.0 |
+----------+---------+-----+------------------------------------------+
| 20 | false | 10d | 5290ab57 Bump version: 1.116.0 → 1.117.0 |
+----------+---------+-----+------------------------------------------+
| 19 | false | 12d | 226868ea Bump version: 1.115.1 → 1.116.0 |
+----------+---------+-----+------------------------------------------+
| 18 | false | 12d | c00332b Bump version: 1.115.0 → 1.115.1 |
+----------+---------+-----+------------------------------------------+
| 17 | false | 19d | c2d00239 Bump version: 1.114.2 → 1.115.0 |
+----------+---------+-----+------------------------------------------+
To prevent Invalid Limit
for cpu and memory limits smaller than max-cpu
and max-memory
Use env var TERESAK8S_TOKEN instead of TERESAK8S_USERNAME and TERESAK8S_PASSWORD.
Useful for migrations for instance.
Mainly with java applications.
Mainly to avoid sync overhead.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.