mirror of
https://github.com/clearlinux/rkt.git
synced 2026-08-27 10:56:02 +00:00
Merge pull request #607 from jonboulle/md
rkt: metadatasvc -> metadata-service
This commit is contained in:
@@ -269,7 +269,7 @@ Work in progress. Please contribute!
|
||||
|
||||
Work in progress. Please contribute!
|
||||
|
||||
### rkt metadatasvc
|
||||
### rkt metadata-service
|
||||
|
||||
Work in progress. Please contribute!
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ Note: because of the lack of the metadata service Rocket does not strictly imple
|
||||
|
||||
## Private networking mode
|
||||
|
||||
For all of the private networking options the metadata service, launched via `rkt metadatasvc`, must be running.
|
||||
For all of the private networking options the metadata service, launched via `rkt metadata-service`, must be running.
|
||||
The service will listen on 0.0.0.0:2375 by default and provides the private networking containers the metadata services described in the App Container Spec.
|
||||
Ideally this metadata service is launched via your systems init system.
|
||||
|
||||
|
||||
+9
-9
@@ -28,9 +28,9 @@ const (
|
||||
stage1Dir = "/stage1"
|
||||
stage2Dir = "/opt/stage2"
|
||||
|
||||
MetadataSvcIP = "169.254.169.255"
|
||||
MetadataSvcPubPort = 80
|
||||
MetadataSvcPrvPort = 2375
|
||||
MetadataServiceIP = "169.254.169.255"
|
||||
MetadataServicePubPort = 80
|
||||
MetadataServicePrvPort = 2375
|
||||
)
|
||||
|
||||
// Stage1ImagePath returns the path where the stage1 app image (unpacked ACI) is rooted,
|
||||
@@ -84,12 +84,12 @@ func ImageManifestPath(root string, imageID types.Hash) string {
|
||||
return filepath.Join(AppImagePath(root, imageID), aci.ManifestFile)
|
||||
}
|
||||
|
||||
// MetadataSvcPrivateURL returns the private URL used to host the metadata service
|
||||
func MetadataSvcPrivateURL() string {
|
||||
return fmt.Sprintf("http://127.0.0.1:%v", MetadataSvcPrvPort)
|
||||
// MetadataServicePrivateURL returns the private URL used to host the metadata service
|
||||
func MetadataServicePrivateURL() string {
|
||||
return fmt.Sprintf("http://127.0.0.1:%v", MetadataServicePrvPort)
|
||||
}
|
||||
|
||||
// MetadataSvcPublicURL returns the public URL used to host the metadata service
|
||||
func MetadataSvcPublicURL() string {
|
||||
return fmt.Sprintf("http://%v:%v", MetadataSvcIP, MetadataSvcPubPort)
|
||||
// MetadataServicePublicURL returns the public URL used to host the metadata service
|
||||
func MetadataServicePublicURL() string {
|
||||
return fmt.Sprintf("http://%v:%v", MetadataServiceIP, MetadataServicePubPort)
|
||||
}
|
||||
|
||||
@@ -37,11 +37,11 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
cmdMetadataSvc = &Command{
|
||||
Name: "metadatasvc",
|
||||
cmdMetadataService = &Command{
|
||||
Name: "metadata-service",
|
||||
Summary: "Run metadata service",
|
||||
Usage: "[--src-addr CIDR] [--listen-port PORT] [--no-idle]",
|
||||
Run: runMetadataSvc,
|
||||
Run: runMetadataService,
|
||||
}
|
||||
)
|
||||
|
||||
@@ -68,10 +68,10 @@ const (
|
||||
)
|
||||
|
||||
func init() {
|
||||
commands = append(commands, cmdMetadataSvc)
|
||||
cmdMetadataSvc.Flags.StringVar(&flagSrcAddrs, "src-addr", "0.0.0.0/0", "source address/range for iptables")
|
||||
cmdMetadataSvc.Flags.IntVar(&flagListenPort, "listen-port", common.MetadataSvcPrvPort, "listen port")
|
||||
cmdMetadataSvc.Flags.BoolVar(&flagNoIdle, "no-idle", false, "exit when last container is unregistered")
|
||||
commands = append(commands, cmdMetadataService)
|
||||
cmdMetadataService.Flags.StringVar(&flagSrcAddrs, "src-addr", "0.0.0.0/0", "source address/range for iptables")
|
||||
cmdMetadataService.Flags.IntVar(&flagListenPort, "listen-port", common.MetadataServicePrvPort, "listen port")
|
||||
cmdMetadataService.Flags.BoolVar(&flagNoIdle, "no-idle", false, "exit when last container is unregistered")
|
||||
}
|
||||
|
||||
func modifyIPTables(action, port string) error {
|
||||
@@ -80,8 +80,8 @@ func modifyIPTables(action, port string) error {
|
||||
"-t", "nat",
|
||||
action, "PREROUTING",
|
||||
"-p", "tcp",
|
||||
"-d", common.MetadataSvcIP,
|
||||
"--dport", strconv.Itoa(common.MetadataSvcPubPort),
|
||||
"-d", common.MetadataServiceIP,
|
||||
"--dport", strconv.Itoa(common.MetadataServicePubPort),
|
||||
"-j", "REDIRECT",
|
||||
"--to-port", port,
|
||||
).Run()
|
||||
@@ -498,8 +498,8 @@ func cleanup(port string) {
|
||||
}
|
||||
}
|
||||
|
||||
func runMetadataSvc(args []string) (exit int) {
|
||||
log.Print("Metadatasvc starting...")
|
||||
func runMetadataService(args []string) (exit int) {
|
||||
log.Print("Metadata service starting...")
|
||||
|
||||
l, err := getListener()
|
||||
if err != nil {
|
||||
@@ -539,7 +539,7 @@ func runMetadataSvc(args []string) (exit int) {
|
||||
Handler: makeHandlers(),
|
||||
}
|
||||
|
||||
log.Print("Metadatasvc running...")
|
||||
log.Print("Metadata service running...")
|
||||
|
||||
if err = srv.Serve(l); err != nil {
|
||||
log.Printf("Error serving HTTP: %v", err)
|
||||
@@ -547,7 +547,7 @@ func runMetadataSvc(args []string) (exit int) {
|
||||
}
|
||||
|
||||
cleanup(port)
|
||||
log.Print("Metadatasvc exiting...")
|
||||
log.Print("Metadata service exiting...")
|
||||
|
||||
return
|
||||
}
|
||||
+4
-4
@@ -42,7 +42,7 @@ var (
|
||||
func init() {
|
||||
commands = append(commands, cmdRunPrepared)
|
||||
cmdRunPrepared.Flags.BoolVar(&flagPrivateNet, "private-net", false, "give container a private network")
|
||||
cmdRunPrepared.Flags.BoolVar(&flagSpawnMetadataSvc, "spawn-metadata-svc", false, "launch metadata svc if not running")
|
||||
cmdRunPrepared.Flags.BoolVar(&flagSpawnMetadataService, "spawn-metadata-svc", false, "launch metadata svc if not running")
|
||||
}
|
||||
|
||||
func runRunPrepared(args []string) (exit int) {
|
||||
@@ -100,9 +100,9 @@ func runRunPrepared(args []string) (exit int) {
|
||||
Store: ds,
|
||||
Debug: globalFlags.Debug,
|
||||
},
|
||||
PrivateNet: flagPrivateNet,
|
||||
SpawnMetadataSvc: flagSpawnMetadataSvc,
|
||||
LockFd: lfd,
|
||||
PrivateNet: flagPrivateNet,
|
||||
SpawnMetadataService: flagSpawnMetadataService,
|
||||
LockFd: lfd,
|
||||
}
|
||||
stage0.Run(rcfg, c.path()) // execs, never returns
|
||||
return 1
|
||||
|
||||
+11
-11
@@ -33,12 +33,12 @@ import (
|
||||
var (
|
||||
defaultStage1Image string // either set by linker, or guessed in init()
|
||||
|
||||
flagStage1Image string
|
||||
flagVolumes volumeList
|
||||
flagPrivateNet bool
|
||||
flagSpawnMetadataSvc bool
|
||||
flagInheritEnv bool
|
||||
cmdRun = &Command{
|
||||
flagStage1Image string
|
||||
flagVolumes volumeList
|
||||
flagPrivateNet bool
|
||||
flagSpawnMetadataService bool
|
||||
flagInheritEnv bool
|
||||
cmdRun = &Command{
|
||||
Name: "run",
|
||||
Summary: "Run image(s) in an application container in rocket",
|
||||
Usage: "[--volume name,type=host...] IMAGE [-- image-args...[---]]...",
|
||||
@@ -66,7 +66,7 @@ func init() {
|
||||
cmdRun.Flags.StringVar(&flagStage1Image, "stage1-image", defaultStage1Image, `image to use as stage1. Local paths and http/https URLs are supported. If empty, Rocket will look for a file called "stage1.aci" in the same directory as rkt itself`)
|
||||
cmdRun.Flags.Var(&flagVolumes, "volume", "volumes to mount into the shared container environment")
|
||||
cmdRun.Flags.BoolVar(&flagPrivateNet, "private-net", false, "give container a private network")
|
||||
cmdRun.Flags.BoolVar(&flagSpawnMetadataSvc, "spawn-metadata-svc", false, "launch metadata svc if not running")
|
||||
cmdRun.Flags.BoolVar(&flagSpawnMetadataService, "spawn-metadata-svc", false, "launch metadata svc if not running")
|
||||
cmdRun.Flags.BoolVar(&flagInheritEnv, "inherit-environment", false, "inherit all environment variables not set by apps")
|
||||
flagVolumes = volumeList{}
|
||||
}
|
||||
@@ -256,10 +256,10 @@ func runRun(args []string) (exit int) {
|
||||
}
|
||||
|
||||
rcfg := stage0.RunConfig{
|
||||
CommonConfig: cfg,
|
||||
PrivateNet: flagPrivateNet,
|
||||
SpawnMetadataSvc: flagSpawnMetadataSvc,
|
||||
LockFd: lfd,
|
||||
CommonConfig: cfg,
|
||||
PrivateNet: flagPrivateNet,
|
||||
SpawnMetadataService: flagSpawnMetadataService,
|
||||
LockFd: lfd,
|
||||
}
|
||||
stage0.Run(rcfg, c.path()) // execs, never returns
|
||||
|
||||
|
||||
+9
-9
@@ -64,9 +64,9 @@ type PrepareConfig struct {
|
||||
// configuration parameters needed by Run
|
||||
type RunConfig struct {
|
||||
CommonConfig
|
||||
PrivateNet bool // container should have its own network stack
|
||||
SpawnMetadataSvc bool // launch metadata service
|
||||
LockFd int // lock file descriptor
|
||||
PrivateNet bool // container should have its own network stack
|
||||
SpawnMetadataService bool // launch metadata service
|
||||
LockFd int // lock file descriptor
|
||||
}
|
||||
|
||||
// configuration shared by both Run and Prepare
|
||||
@@ -180,9 +180,9 @@ func Run(cfg RunConfig, dir string) {
|
||||
log.Fatalf("setting lock fd environment: %v", err)
|
||||
}
|
||||
|
||||
if cfg.SpawnMetadataSvc {
|
||||
if cfg.SpawnMetadataService {
|
||||
log.Print("Launching metadata svc")
|
||||
if err := launchMetadataSvc(cfg.Debug); err != nil {
|
||||
if err := launchMetadataService(cfg.Debug); err != nil {
|
||||
log.Printf("Failed to launch metadata svc: %v", err)
|
||||
}
|
||||
}
|
||||
@@ -285,13 +285,13 @@ func expandImage(cfg PrepareConfig, img types.Hash, dest string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func launchMetadataSvc(debug bool) error {
|
||||
func launchMetadataService(debug bool) error {
|
||||
// use socket activation protocol to avoid race-condition of
|
||||
// service becoming ready
|
||||
l, err := net.ListenTCP("tcp4", &net.TCPAddr{Port: common.MetadataSvcPrvPort})
|
||||
l, err := net.ListenTCP("tcp4", &net.TCPAddr{Port: common.MetadataServicePrvPort})
|
||||
if err != nil {
|
||||
if err.(*net.OpError).Err.(*os.SyscallError).Err == syscall.EADDRINUSE {
|
||||
// assume metadatasvc is already running
|
||||
// assume metadata-service is already running
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
@@ -308,7 +308,7 @@ func launchMetadataSvc(debug bool) error {
|
||||
if debug {
|
||||
args = append(args, "--debug")
|
||||
}
|
||||
args = append(args, "metadatasvc", "--no-idle")
|
||||
args = append(args, "metadata-service", "--no-idle")
|
||||
|
||||
cmd := exec.Cmd{
|
||||
Path: args[0],
|
||||
|
||||
@@ -35,11 +35,11 @@ import (
|
||||
|
||||
// Container encapsulates a ContainerRuntimeManifest and ImageManifests
|
||||
type Container struct {
|
||||
Root string // root directory where the container will be located
|
||||
Manifest *schema.ContainerRuntimeManifest
|
||||
Apps map[string]*schema.ImageManifest
|
||||
MetadataSvcURL string
|
||||
Networks []string
|
||||
Root string // root directory where the container will be located
|
||||
Manifest *schema.ContainerRuntimeManifest
|
||||
Apps map[string]*schema.ImageManifest
|
||||
MetadataServiceURL string
|
||||
Networks []string
|
||||
}
|
||||
|
||||
// LoadContainer loads a Container Runtime Manifest (as prepared by stage0) and
|
||||
@@ -127,7 +127,7 @@ func (c *Container) appToSystemd(ra *schema.RuntimeApp, am *schema.ImageManifest
|
||||
|
||||
env := app.Environment
|
||||
env.Set("AC_APP_NAME", name)
|
||||
env.Set("AC_METADATA_URL", c.MetadataSvcURL)
|
||||
env.Set("AC_METADATA_URL", c.MetadataServiceURL)
|
||||
|
||||
if err := c.writeEnvFile(env, id); err != nil {
|
||||
return fmt.Errorf("unable to write environment file: %v", err)
|
||||
|
||||
+1
-1
@@ -99,7 +99,7 @@ func stage1() int {
|
||||
}
|
||||
|
||||
mirrorLocalZoneInfo(c.Root)
|
||||
c.MetadataSvcURL = common.MetadataSvcPublicURL()
|
||||
c.MetadataServiceURL = common.MetadataServicePublicURL()
|
||||
|
||||
if err = c.ContainerToSystemd(); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed to configure systemd: %v\n", err)
|
||||
|
||||
@@ -65,7 +65,7 @@ func registerApp(uuid, app string, r io.Reader) error {
|
||||
}
|
||||
|
||||
func httpRequest(method, pth string, body io.Reader) error {
|
||||
uri := common.MetadataSvcPrivateURL() + pth
|
||||
uri := common.MetadataServicePrivateURL() + pth
|
||||
req, err := http.NewRequest(method, uri, body)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user