Skip to content

Commit

Permalink
wip dind
Browse files Browse the repository at this point in the history
  • Loading branch information
damoon committed Jan 8, 2022
1 parent 3fedf22 commit 4d0ae8d
Show file tree
Hide file tree
Showing 26 changed files with 540 additions and 1,226 deletions.
6 changes: 3 additions & 3 deletions Tiltfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ disable_snapshots()
analytics_settings(enable=False)
allow_k8s_contexts(os.getenv("TILT_ALLOW_CONTEXT"))

include('./service-dependencies/Tiltfile')
include('./tests/Tiltfile')

k8s_yaml('deployment/config.yaml')
k8s_yaml('deployment/kubernetes.yaml')

target='prod'
Expand Down Expand Up @@ -40,7 +40,7 @@ docker_build(

k8s_resource(
'dinner',
port_forwards=['12376:2376'],
resource_deps=['minio-buckets', 'registry', 'docker-hub-mirror'],
port_forwards=['12375:2375'],
resource_deps=['minio-buckets', 'dind'],
labels=["application"],
)
7 changes: 5 additions & 2 deletions cmd/d8s/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ import (
)

const (
dinnerPort = 2376
dinnerPort = 2375
staticPol = chunker.Pol(0x3DA3358B4DC173)
ErrPodNotExist = NotFoundError("pod could not be found")
)
Expand Down Expand Up @@ -367,7 +367,7 @@ func executeCommand(args cli.Args, localAddr string) error {
cmd.Stdin = os.Stdin
cmd.Env = os.Environ()
cmd.Env = append(cmd.Env, "DOCKER_HOST=tcp://"+localAddr)
cmd.Env = append(cmd.Env, "DOCKER_BUILDKIT=0")
cmd.Env = append(cmd.Env, "DOCKER_BUILDKIT=1")

fmt.Printf("Execute command DOCKER_HOST=tcp://%s DOCKER_BUILDKIT=0 %v\n", localAddr, cmd)

Expand Down Expand Up @@ -409,6 +409,9 @@ func uploadContextHandlerFunc(proxy *httputil.ReverseProxy, localAddr string, ve
return
}

proxy.ServeHTTP(w, r)
return

chunker := chunker.New(r.Body, staticPol)
chunksList := &bytes.Buffer{}

Expand Down
41 changes: 18 additions & 23 deletions cmd/dinner/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"io/ioutil"
"log"
"net/http"
"net/http/httputil"
"net/url"
"os"
"os/signal"
"strings"
Expand All @@ -18,8 +20,6 @@ import (
"github.com/aws/aws-sdk-go/service/s3/s3manager"
dinner "github.com/damoon/d8s/pkg"
"github.com/urfave/cli/v2"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
)

var (
Expand All @@ -37,8 +37,14 @@ func main() {
Name: "server",
Usage: "Start the server.",
Flags: []cli.Flag{
&cli.StringFlag{Name: "addr", Value: ":2376", Usage: "Address to run service on."},
&cli.StringFlag{Name: "upstream", Value: "tcp:://127.0.0.1:2376", Usage: "Upstream to forward requests to."},
&cli.StringFlag{Name: "addr", Value: ":2375", Usage: "Address to run service on."},
&cli.StringFlag{Name: "s3-endpoint", Required: true, Usage: "s3 endpoint."},
&cli.StringFlag{Name: "s3-access-key-file", Required: true, Usage: "Path to s3 access key."},
&cli.StringFlag{Name: "s3-secret-key-file", Required: true, Usage: "Path to s3 secret access key."},
&cli.BoolFlag{Name: "s3-ssl", Value: true, Usage: "s3 uses SSL."},
&cli.StringFlag{Name: "s3-location", Value: "us-east-1", Usage: "s3 bucket location."},
&cli.StringFlag{Name: "s3-bucket", Required: true, Usage: "s3 bucket name."},
&cli.StringFlag{Name: "upstream", Required: true, Usage: "Upstream to forward requests to."},
},
Action: run,
},
Expand Down Expand Up @@ -81,16 +87,15 @@ func run(c *cli.Context) error {
return fmt.Errorf("setup minio s3 client: %v", err)
}

log.Println("set up kubernetes client")

kubernetesClient, namespace, err := setupKubernetesClient()
log.Println("set up upstream proxy")
upstream, err := setupUpstreamProxy(c.String("upstream"))
if err != nil {
return fmt.Errorf("setup kubernetes client: %v", err)
return fmt.Errorf("setup upstream proxy: %v", err)
}

log.Println("set up service")

svc := dinner.NewService(gitHash, gitRef, storage, kubernetesClient, namespace)
svc := dinner.NewService(gitHash, gitRef, storage, upstream)

svcServer := httpServer(svc, c.String("addr"))

Expand Down Expand Up @@ -160,23 +165,13 @@ func setupObjectStore(
}, nil
}

func setupKubernetesClient() (*kubernetes.Clientset, string, error) {
ns, err := ioutil.ReadFile("/run/secrets/kubernetes.io/serviceaccount/namespace")
if err != nil {
return nil, "", fmt.Errorf("read namespace: %v", err)
}

config, err := rest.InClusterConfig()
if err != nil {
return nil, "", err
}

clientset, err := kubernetes.NewForConfig(config)
func setupUpstreamProxy(upstream string) (*httputil.ReverseProxy, error) {
upstreamURL, err := url.Parse(upstream)
if err != nil {
return nil, "", err
return nil, err
}

return clientset, string(ns), nil
return httputil.NewSingleHostReverseProxy(upstreamURL), nil
}

func httpServer(h http.Handler, addr string) *http.Server {
Expand Down
22 changes: 18 additions & 4 deletions deployment/kubernetes.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ spec:
app: dinner
ports:
- name: dinner
port: 2376
port: 2375
---
apiVersion: apps/v1
kind: Deployment
Expand All @@ -24,21 +24,35 @@ spec:
labels:
app: dinner
spec:
serviceAccountName: dinner
containers:
- name: dinner
image: davedamoon/dinner:latest
args:
- --s3-endpoint=d8s-minio:9000
- --s3-access-key-file=/secret/minio/MINIO_ACCESS_KEY
- --s3-secret-key-file=/secret/minio/MINIO_SECRET_KEY
- --s3-ssl=false
- --s3-bucket=chunks
- --upstream=http://d8s-dind:2375
ports:
- name: dinner
containerPort: 2376
containerPort: 2375
readinessProbe:
httpGet:
path: /_ping
port: 2376
port: 2375
volumeMounts:
- name: minio
mountPath: "/secret/minio"
readOnly: true
resources:
requests:
memory: "1Gi" # increased to allow go to compile, and tilt to hot reload
cpu: "100m"
limits:
memory: "1Gi"
cpu: "200m"
volumes:
- name: minio
secret:
secretName: d8s-minio
Loading

0 comments on commit 4d0ae8d

Please sign in to comment.