2017-01-18 6 views
2

ランチャーREST APIを使用して、ランチャーの既存のサービスにコンテナを作成して追加しようとしています。ランチャーREST API経由でスタックにサービスするコンテナを追加する方法

次のリクエストがコンテナを作成し、atlas-mosquittoスタックとmosquittoサービス(ラベルを参照)に追加すると期待します。応答以下

{ 
    "count": 1, 
    "imageUuid": "docker:dummy\/atlas\/mosquitto:0.0.8", 
    "name": "atlas-mosquitto_mosquitto_dummy_name", 
    "startOnCreate": true, 
    "labels": { 
    "io.rancher.service.deployment.unit": "acdaf002-e1d0-4625-ba9c-3e1dbc584a14", 
    "io.rancher.project.name": "atlas-mosquitto", 
    "io.rancher.container.pull_image": "always", 
    "io.rancher.scheduler.affinity:container_label_soft_ne": "io.rancher.stack_service.name=atlas-mosquitto\/mosquitto", 
    "io.rancher.service.launch.config": "io.rancher.service.primary.launch.config", 
    "io.rancher.project_service.name": "atlas-mosquitto\/mosquitto", 
    "io.rancher.stack.name": "atlas-mosquitto", 
    "io.rancher.stack_service.name": "atlas-mosquitto\/mosquitto" 
    }, 
    "publishAllPorts": false, 
    "privileged": false, 
    "stdinOpen": false, 
    "tty": false, 
    "readOnly": false 
} 

される:この応答と、このラベル"io.rancher.project_service.name" : "atlas-mosquitto/mosquitto"に基づいて

{ 
    "readOnly" : false, 
    "created" : "2016-12-07T01:15:04Z", 
    "memory" : null, 
    "securityOpt" : null, 
    "createIndex" : null, 
    "logConfig" : null, 
    "state" : "creating", 
    "links" : { 
     "serviceExposeMaps" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/serviceexposemaps", 
     "healthcheckInstanceHostMaps" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/healthcheckinstancehostmaps", 
     "instances" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/instances", 
     "services" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/services", 
     "ports" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/ports", 
     "hosts" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/hosts", 
     "instanceLinks" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/instancelinks", 
     "credentials" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/credentials", 
     "volumes" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/volumes", 
     "account" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/account", 
     "serviceEvents" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/serviceevents", 
     "stats" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/stats", 
     "mounts" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/mounts", 
     "targetInstanceLinks" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/targetinstancelinks", 
     "self" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139", 
     "instanceLabels" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/instancelabels", 
     "containerStats" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/containerstats" 
    }, 
    "labels" : { 
     "io.rancher.container.pull_image" : "always", 
     "io.rancher.project.name" : "atlas-mosquitto", 
     "io.rancher.stack.name" : "atlas-mosquitto", 
     "io.rancher.stack_service.name" : "atlas-mosquitto/mosquitto", 
     "io.rancher.service.deployment.unit" : "acdaf002-e1d0-4625-ba9c-3e1dbc584a14", 
     "io.rancher.scheduler.affinity:container_label_soft_ne" : "io.rancher.stack_service.name=atlas-mosquitto/mosquitto", 
     "io.rancher.service.launch.config" : "io.rancher.service.primary.launch.config", 
     "io.rancher.project_service.name" : "atlas-mosquitto/mosquitto" 
    }, 
    "dnsSearch" : null, 
    "startCount" : 0, 
    "privileged" : false, 
    "workingDir" : null, 
    "id" : "1i9139", 
    "uuid" : "bc64996c-4a9f-40bd-91bc-e352d84604aa", 
    "transitioningProgress" : null, 
    "lxcConf" : null, 
    "hostId" : null, 
    "pidMode" : null, 
    "transitioningMessage" : "In Progress", 
    "requestedHostId" : null, 
    "dataVolumes" : null, 
    "startOnCreate" : true, 
    "domainName" : null, 
    "volumeDriver" : null, 
    "cpuSet" : null, 
    "restartPolicy" : null, 
    "networkContainerId" : null, 
    "user" : null, 
    "dataVolumeMounts" : null, 
    "nativeContainer" : false, 
    "deploymentUnitUuid" : null, 
    "hostname" : null, 
    "tty" : false, 
    "capDrop" : null, 
    "name" : "atlas-mosquitto_mosquitto_2", 
    "removed" : null, 
    "primaryIpAddress" : null, 
    "cpuShares" : null, 
    "imageUuid" : "docker:distribution.dummy.info/atlas/mosquitto:0.0.8", 
    "createdTS" : 1481073304000, 
    "systemContainer" : null, 
    "environment" : { 
     "AUTH_SERVICE_ALIAS" : "auth.atlas-auth.rancher.internal", 
     "AUTH_SERVICE_PORT" : "8100" 
    }, 
    "stdinOpen" : false, 
    "accountId" : "1a29", 
    "registryCredentialId" : null, 
    "description" : "foo", 
    "command" : null, 
    "version" : "0", 
    "build" : null, 
    "healthCheck" : null, 
    "expose" : null, 
    "entryPoint" : null, 
    "publishAllPorts" : false, 
    "memorySwap" : null, 
    "type" : "container", 
    "dataVolumesFrom" : null, 
    "actions" : { 
     "error" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/?action=error", 
     "remove" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/?action=remove", 
     "stop" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/?action=stop", 
     "setlabels" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/?action=setlabels", 
     "start" : "https://rancher-ha.dummy.info/v1/projects/1a29/containers/1i9139/?action=start" 
    }, 
    "blkioDeviceOptions" : null, 
    "externalId" : null, 
    "healthState" : null, 
    "kind" : "container", 
    "ports" : null, 
    "extraHosts" : null, 
    "devices" : null, 
    "networkMode" : "managed", 
    "capAdd" : null, 
    "dns" : null, 
    "firstRunning" : null, 
    "transitioning" : "yes" 
} 

、私は期待以下

curl -u "${RANCHER_ACCESS_KEY}:${RANCHER_SECRET_KEY}" \ 
-X POST \ 
-H 'Accept: application/json' \ 
-H 'Content-Type: application/json' \ 
-d '{"count":1, "imageUuid":"docker:dummy/atlas/mosquitto:0.0.8", "name":"atlas-mosquitto_mosquitto_dummy_name", "startOnCreate":true, "labels": {"io.rancher.service.deployment.unit": "acdaf002-e1d0-4625-ba9c-3e1dbc584a14", "io.rancher.project.name": "atlas-mosquitto", "io.rancher.container.pull_image": "always", "io.rancher.scheduler.affinity:container_label_soft_ne": "io.rancher.stack_service.name=atlas-mosquitto/mosquitto", "io.rancher.service.launch.config": "io.rancher.service.primary.launch.config", "io.rancher.project_service.name": "atlas-mosquitto/mosquitto", "io.rancher.stack.name": "atlas-mosquitto", "io.rancher.stack_service.name": "atlas-mosquitto/mosquitto"}, "publishAllPorts":false, "privileged":false, "stdinOpen":false, "tty":false, "readOnly":false' \ 
'https://rancher-ha.dummy.info/v1/projects/1a29/containers' 

は簡単に読みやすくするために、本体のかわいいプリントですそのサービスの中にあるコンテナは、しかし、そうではありません。コンテナは作成されますが、スタンドアロンコンテナとして作成されます。私が望むのは、この作成されたコンテナがDNSアドレス指定可能で、指定されたスタックとサービスの下でランチャーUIでアクセス可能であることです。

答えて

1

問題を解決しました。特定のスタック/サービスにコンテナを追加するには、最初にコンテナを追加するサービスを変更する必要があります。サービスにはタグが必要ですio.rancher.service.selector.container

たとえば、REST APIで作成したコンテナを自分の蚊帳サービスに追加したいとしましょう。

moquitto: 
    image: distribution.foofee.com/atlas/mosquitto:0.0.23 
    environment: 
    AUTH_SERVICE_PORT: 8100 
    AUTH_SERVICE_ALIAS: auth.atlas-auth.rancher.internal 
    labels: 
    io.rancher.service.selector.container: stackz=mos-test 

io.rancher.service.selector.container: stackz=mos-testを詳しく見てみましょう:mosquittoサービス用のドッキングウィンドウ-コンファイルには、次のようになります。これにより、rancherはstackz=mos-testラベルのすべてのコンテナをモスキートサービスに追加するように指示します。

curl -u "${RANCHER_ACCESS_KEY}:${RANCHER_SECRET_KEY}" \ 
-X POST \ 
-H 'Accept: application/json' \ 
-H 'Content-Type: application/json' \ 
-d '{"count":1, "imageUuid":"docker:distribution.foo.com/atlas/mosquitto:0.0.23", "name":"foozy", "startOnCreate":true, "command":[], "publishAllPorts":false, "privileged":false, "stdinOpen":false, "tty":false, "restartPolicy":null, "readOnly":false, "build":null, "networkMode":"managed", "labels": {"stackz": "mos-test", "io.rancher.container.network": "true", "io.rancher.container.dns": "true"}}' \ 
'https://rancher.us-west-2.foo.com/v1/projects/1a5/containers' 

きれいに印刷体:

{ 
    "count": 1, 
    "imageUuid": "docker:distribution.foo.com\/atlas\/mosquitto:0.0.23", 
    "name": "foozy", 
    "startOnCreate": true, 
    "command": [ 

    ], 
    "publishAllPorts": false, 
    "privileged": false, 
    "stdinOpen": false, 
    "tty": false, 
    "restartPolicy": null, 
    "readOnly": false, 
    "build": null, 
    "networkMode": "managed", 
    "labels": { 
    "stackz": "mos-test", 
    "io.rancher.container.network": "true", 
    "io.rancher.container.dns": "true" 
    } 
} 

私たちがしたので今、私たちはこれを指定したことを

、我々はこのような要求を使用して牧場主REST APIを介して私たちのコンテナを作成することができますこの要求にラベル"stackz": "mos-test"を追加しました。このラベルは、モスキートサービスに設定したio.rancher.service.selector.containerラベルと一致するため、コンテナをコンテナに追加します。

コンテナはまた、司令官環境のどこからでも直接DNSアドレス指定できるようになりました。上記の要求から作成されたコンテナの名前はfoozyです。 DNSアドレス指定可能なアドレスはfoozy.rancher.internal

関連する問題