Skip to content

Commit deaa5ac

Browse files
gosuriboz
authored andcommitted
provider/cluster: Add DeploymentIngressDomain and generate short uuids for deployments (#393)
Signed-off-by: Greg Osuri <me@gregosuri.com>
1 parent 2961d9f commit deaa5ac

File tree

9 files changed

+97
-50
lines changed

9 files changed

+97
-50
lines changed

_run/multi/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,14 @@ helm-install-provider-%:
4242
helm install "$(PROVIDER_CHART)" \
4343
-n "$(@:helm-install-provider-%=%)" \
4444
--set "ingress.domain=$(shell minikube ip).nip.io" \
45+
--set "deployment.ingress.domain=$(shell minikube ip).nip.io" \
4546
--set "provider.region=$(shell echo "$@" | sed -e 's/.*-\(.*-.*\)-[0-9][0-9]*/\1/')"
4647

4748
helm-upgrade-provider-%:
4849
helm upgrade "$(@:helm-upgrade-provider-%=%)" "$(PROVIDER_CHART)" \
4950
--recreate-pods \
5051
--set "ingress.domain=$(shell minikube ip).nip.io" \
52+
--set "deployment.ingress.domain=$(shell minikube ip).nip.io" \
5153
--set "provider.region=$(shell echo "$@" | sed -e 's/.*-\(.*-.*\)-[0-9][0-9]*/\1/')"
5254

5355
helm-delete-provider-%:

_run/multi/akash-provider/run.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ if [ ! -s "$masterKey" ] || [ ! -s "$providerKey" ]; then
3333

3434
echo "adding provider"
3535
eval $(./akash provider add /config/provider.yml -k master -m shell)
36-
echo $akash_add_provider_0_data > "$providerKey"
36+
echo $akash_add_provider_0_key > "$providerKey"
3737
echo "added provider: " $(cat "$providerKey")
3838
fi
3939

_run/multi/akash-provider/templates/deployment.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ spec:
3232
value: ClusterIP
3333
- name: AKASH_DEPLOYMENT_INGRESS_STATIC_HOSTS
3434
value: "false"
35+
- name: AKASH_DEPLOYMENT_INGRESS_DOMAIN
36+
value: "{{ .Values.deployment.ingress.domain }}"
3537
ports:
3638
- containerPort: {{ .Values.provider.port }}
3739
name: http
Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,39 @@
1+
akash:
2+
node: http://api.akashtest.net:80
3+
4+
provider:
5+
# Host URI to advertise
6+
hostURI: http://example.com
7+
8+
# Create a key using: `akash key create`
9+
privateKeyName: "KEY_NAME"
10+
11+
# Generate an address by registering the provider
12+
# using: `akash provider add -k KEY_NAME`
13+
address: "ADDRESS"
14+
15+
# name of the secret storing private key
16+
privateKeySecretName: "PRIVATE_KEY_NAME"
17+
18+
# port to listen on
19+
port: 3001
20+
21+
deployment:
22+
# ServiceType of the deployment. Some cloud providers
23+
# (like aws or gcp) require either LoadBalancer / NodeHost
24+
serviceType: ClusterIP
25+
ingress:
26+
# will generate a unique url for each deployment.
27+
# [uuid].domain
28+
staticHosts: true
29+
domain: example.com
30+
131
image:
232
repository: ovrclk/akash
333
tag: latest
434
pullPolicy: Never
535

636
ingress:
7-
domain: 192.168.99.101.nip.io
8-
9-
provider:
10-
port: 3001
11-
region: us-west
37+
# Pubic routable Hostname of the the provider,
38+
# should match provider.hostURI
39+
domain: example.com

_run/multi/run.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ do_init(){
1212
echo $akash_create_key_0_public_key > "$DATA_ROOT/master.key"
1313
eval $(akash key create other -m shell)
1414
echo $akash_create_key_0_public_key > "$DATA_ROOT/other.key"
15-
_akashd init "$(cat "$DATA_ROOT/master.key")" -t helm -c "${HELM_NODE_COUNT:-4}"
15+
_akashd init "$(cat "$DATA_ROOT/master.key")" -t helm -n "node-0,node-1,node-2"
1616
}
1717

1818
case "$1" in

glide.lock

Lines changed: 18 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

glide.yaml

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package: github.com/ovrclk/akash
22
import:
33
- package: github.com/gogo/protobuf
4-
version: ^1.1.1
4+
version: 1.1.1
55
subpackages:
66
- gogoproto
77
- proto
@@ -12,17 +12,17 @@ import:
1212
- package: github.com/prometheus/client_golang
1313
version: ae27198cdd90bf12cd134ad79d1366a6cf49f632
1414
- package: github.com/cosmos/cosmos-sdk
15-
version: ~0.33.0
15+
version: 0.33.0
1616
subpackages:
1717
- crypto
1818
- package: github.com/tendermint/go-amino
19-
version: ~0.14.1
19+
version: 0.14.1
2020
- package: github.com/tendermint/iavl
21-
version: ~0.12.2
21+
version: 0.12.2
2222
- package: github.com/tendermint/tendermint
23-
version: ~0.31.5
23+
version: 0.31.5
2424
- package: github.com/stretchr/testify
25-
version: ^1.2.1
25+
version: 1.2.1
2626
subpackages:
2727
- require
2828
- assert
@@ -42,10 +42,10 @@ import:
4242
subpackages:
4343
- OpenAPIv2
4444
- package: github.com/golang/protobuf
45-
version: ~1.1.0
45+
version: 1.1.0
4646
- package: github.com/grpc-ecosystem/grpc-gateway
4747
- package: google.golang.org/grpc
48-
version: ^1.13.0
48+
version: 1.13.0
4949
- package: github.com/juju/errors
5050
- package: k8s.io/client-go
5151
version: kubernetes-1.12.2
@@ -64,11 +64,11 @@ import:
6464
- package: k8s.io/gengo
6565
- package: github.com/hashicorp/golang-lru
6666
- package: github.com/caarlos0/env
67-
version: ^3.3.0
67+
version: 3.3.0
6868
- package: github.com/blang/semver
69-
version: ^3.5.1
69+
version: 3.5.1
7070
- package: github.com/satori/go.uuid
71-
version: ~1.2.0
71+
version: 1.2.0
7272
- package: golang.org/x/sys
7373
version: 1c9583448a9c3aa0f9a6a5241bf73c0bd8aafded
7474
subpackages:
@@ -77,7 +77,7 @@ import:
7777
version: 3764759f34a542a3aef74d6b02e35be7ab893bba
7878
repo: https://github.com/tendermint/crypto
7979
- package: github.com/gosuri/uitable
80-
version: ~0.0.2
80+
version: 0.0.2
8181
- package: github.com/gosuri/uilive
8282
version: 0.0.2
8383
- package: github.com/fatih/color
@@ -90,3 +90,7 @@ import:
9090
version: ^0.0.7
9191
- package: github.com/ovrclk/dsky
9292
version: ~0.0.1
93+
- package: github.com/lithammer/shortuuid
94+
version: 3.0.3
95+
subpackages:
96+
- '...'

provider/cluster/kube/builder.go

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@ import (
77
"strconv"
88
"strings"
99

10+
"github.com/lithammer/shortuuid"
1011
akashv1 "github.com/ovrclk/akash/pkg/apis/akash.network/v1"
1112
"github.com/ovrclk/akash/types"
12-
uuid "github.com/satori/go.uuid"
1313
"github.com/tendermint/tendermint/libs/log"
14-
"gopkg.in/yaml.v2"
1514
appsv1 "k8s.io/api/apps/v1"
1615
corev1 "k8s.io/api/core/v1"
1716
extv1 "k8s.io/api/extensions/v1beta1"
@@ -175,7 +174,10 @@ type serviceBuilder struct {
175174

176175
func newServiceBuilder(log log.Logger, lid types.LeaseID, group *types.ManifestGroup, service *types.ManifestService) *serviceBuilder {
177176
return &serviceBuilder{
178-
deploymentBuilder: deploymentBuilder{builder: builder{log: log.With("module", "kube-builder"), lid: lid, group: group}, service: service},
177+
deploymentBuilder: deploymentBuilder{
178+
builder: builder{log: log.With("module", "kube-builder"), lid: lid, group: group},
179+
service: service,
180+
},
179181
}
180182
}
181183

@@ -222,12 +224,21 @@ type ingressBuilder struct {
222224

223225
func newIngressBuilder(log log.Logger, host string, lid types.LeaseID, group *types.ManifestGroup, service *types.ManifestService, expose *types.ManifestServiceExpose) *ingressBuilder {
224226
if config.DeploymentIngressStaticHosts {
225-
uid := uuid.NewV4()
226-
expose.Hosts = append(expose.Hosts, fmt.Sprintf("%v.%s.%v", service.Name, uid, host))
227+
uid := strings.ToLower(shortuuid.New())
228+
h := fmt.Sprintf("%s.%s", uid, config.DeploymentIngressDomain)
229+
log.Debug("IngressBuilder: map host:", h)
230+
expose.Hosts = append(expose.Hosts, h)
227231
}
228232
return &ingressBuilder{
229-
deploymentBuilder: deploymentBuilder{builder: builder{log: log.With("module", "kube-builder"), lid: lid, group: group}, service: service},
230-
expose: expose,
233+
deploymentBuilder: deploymentBuilder{
234+
builder: builder{
235+
log: log.With("module", "kube-builder"),
236+
lid: lid,
237+
group: group,
238+
},
239+
service: service,
240+
},
241+
expose: expose,
231242
}
232243
}
233244

@@ -245,7 +256,6 @@ func (b *ingressBuilder) create() (*extv1.Ingress, error) {
245256

246257
func (b *ingressBuilder) update(obj *extv1.Ingress) (*extv1.Ingress, error) {
247258
obj.Labels = b.labels()
248-
//obj.Spec.Backend.ServicePort = intstr.FromInt(int(exposeExternalPort(b.expose)))
249259
obj.Spec.Rules = b.rules()
250260
return obj, nil
251261
}
@@ -255,7 +265,7 @@ func (b *ingressBuilder) rules() []extv1.IngressRule {
255265
httpRule := &extv1.HTTPIngressRuleValue{
256266
Paths: []extv1.HTTPIngressPath{extv1.HTTPIngressPath{
257267
Backend: extv1.IngressBackend{
258-
ServiceName: b.expose.Service,
268+
ServiceName: b.name(),
259269
ServicePort: intstr.FromInt(int(exposeExternalPort(b.expose))),
260270
}},
261271
},
@@ -264,11 +274,10 @@ func (b *ingressBuilder) rules() []extv1.IngressRule {
264274
for _, host := range b.expose.Hosts {
265275
rules = append(rules, extv1.IngressRule{
266276
Host: host,
267-
IngressRuleValue: extv1.IngressRuleValue{httpRule},
277+
IngressRuleValue: extv1.IngressRuleValue{HTTP: httpRule},
268278
})
269279
}
270-
ym, _ := yaml.Marshal(rules)
271-
b.log.Debug("provider/cluster/kube/builder: created rules: %v", string(ym))
280+
b.log.Debug("provider/cluster/kube/builder: created rules:", rules)
272281
return rules
273282
}
274283

provider/cluster/kube/config.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@ import (
66
)
77

88
type config_ struct {
9-
109
// gcp: NodePort
1110
// others: ClusterIP
1211
DeploymentServiceType corev1.ServiceType `env:"AKASH_DEPLOYMENT_SERVICE_TYPE" envDefault:"NodePort"`
1312

1413
// gcp: False
1514
// others: true
16-
DeploymentIngressStaticHosts bool `env:"AKASH_DEPLOYMENT_INGRESS_STATIC_HOSTS" envDefault:"false"`
15+
DeploymentIngressStaticHosts bool `env:"AKASH_DEPLOYMENT_INGRESS_STATIC_HOSTS" envDefault:"true"`
16+
// Ingress domain to map deployments to
17+
DeploymentIngressDomain string `env:"AKASH_DEPLOYMENT_INGRESS_DOMAIN"`
1718

1819
DeploymentIngressExposeLBHosts bool `env:"AKASH_DEPLOYMENT_INGRESS_EXPOSE_LB_HOSTS" envDefault:"true"`
1920
}

0 commit comments

Comments
 (0)