website/docs/api-reference/v1.5/documents/deployment.md

9.7 KiB

Deployment v1beta1

Group Version Kind
Extensions v1beta1 Deployment

bdocs-tab:kubectl Deployment Config to run 3 nginx instances (max rollback set to 10 revisions).

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: deployment-example
spec:
  replicas: 3
  revisionHistoryLimit: 10
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.10

bdocs-tab:curl Deployment Config to run 3 nginx instances (max rollback set to 10 revisions).

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: deployment-example
spec:
  replicas: 3
  revisionHistoryLimit: 10
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.10

Deployment enables declarative updates for Pods and ReplicaSets.

Field Schema Description
metadata ObjectMeta Standard object metadata.
spec DeploymentSpec Specification of the desired behavior of the Deployment.
status DeploymentStatus Most recently observed status of the Deployment.

DeploymentSpec v1beta1

Field Schema Description
minReadySeconds integer Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)
paused boolean Indicates that the deployment is paused and will not be processed by the deployment controller.
replicas integer Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.
revisionHistoryLimit integer The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified.
rollbackTo RollbackConfig The config this deployment is rolling back to. Will be cleared after rollback is done.
selector LabelSelector Label selector for pods. Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment.
strategy DeploymentStrategy The deployment strategy to use to replace existing pods with new ones.
template PodTemplateSpec Template describes the pods that will be created.

DeploymentStatus v1beta1

Field Schema Description
availableReplicas integer Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.
observedGeneration integer The generation observed by the deployment controller.
replicas integer Total number of non-terminated pods targeted by this deployment (their labels match the selector).
unavailableReplicas integer Total number of unavailable pods targeted by this deployment.
updatedReplicas integer Total number of non-terminated pods targeted by this deployment that have the desired template spec.

Write Operations

See supported operations below...

Create

bdocs-tab:kubectl Execute

$ echo 'apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: deployment-example
spec:
  replicas: 3
  revisionHistoryLimit: 10
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.10
        ports:
        - containerPort: 80
' | kubectl create -f -

bdocs-tab:kubectl Returns

deployment "deployment-example" created

bdocs-tab:curl Execute


$ kubectl proxy
$ curl -X POST -H 'Content-Type: application/yaml' --data '
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: deployment-example
spec:
  replicas: 3
  revisionHistoryLimit: 10
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.10
        ports:
        - containerPort: 80
' http://127.0.0.1:8001/apis/extensions/v1beta1/namespaces/default/deployments

bdocs-tab:curl Returns


{
  "kind": "Deployment",
  "apiVersion": "extensions/v1beta1",
  "metadata": {
    "name": "deployment-example",
    "namespace": "default",
    "selfLink": "/apis/extensions/v1beta1/namespaces/default/deployments/deployment-example",
    "uid": "4ccca349-9cb1-11e6-9c54-42010a800148",
    "resourceVersion": "2118306",
    "generation": 1,
    "creationTimestamp": "2016-10-28T01:53:19Z",
    "labels": {
      "app": "nginx"
    }
  },
  "spec": {
    "replicas": 3,
    "selector": {
      "matchLabels": {
        "app": "nginx"
      }
    },
    "template": {
      "metadata": {
        "creationTimestamp": null,
        "labels": {
          "app": "nginx"
        }
      },
      "spec": {
        "containers": [
          {
            "name": "nginx",
            "image": "nginx:1.10",
            "ports": [
              {
                "containerPort": 80,
                "protocol": "TCP"
              }
            ],
            "resources": {},
            "terminationMessagePath": "/dev/termination-log",
            "imagePullPolicy": "IfNotPresent"
          }
        ],
        "restartPolicy": "Always",
        "terminationGracePeriodSeconds": 30,
        "dnsPolicy": "ClusterFirst",
        "securityContext": {}
      }
    },
    "strategy": {
      "type": "RollingUpdate",
      "rollingUpdate": {
        "maxUnavailable": 1,
        "maxSurge": 1
      }
    },
    "revisionHistoryLimit": 10
  },
  "status": {}
}

create a Deployment

HTTP Request

POST /apis/extensions/v1beta1/namespaces/{namespace}/deployments

Path Parameters

Parameter Schema Description
namespace object name and auth scope, such as for teams and projects
pretty If 'true', then the output is pretty printed.

Query Parameters

Parameter Schema Description
body Deployment

Response

Code Schema Description
200 Deployment OK

Replace

bdocs-tab:kubectl Execute


$ echo 'apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: deployment-example
spec:
  replicas: 3
  revisionHistoryLimit: 10
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.11
        ports:
        - containerPort: 80
' | kubectl replace -f -

bdocs-tab:kubectl Returns


deployment "deployment-example" replaced

bdocs-tab:curl Execute


$ kubectl proxy
$ curl -X PUT -H 'Content-Type: application/yaml' --data '
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: deployment-example
spec:
  replicas: 3
  revisionHistoryLimit: 10
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.11
        ports:
        - containerPort: 80
' http://127.0.0.1:8001/apis/extensions/v1beta1/namespaces/default/deployments/deployment-example

bdocs-tab:curl Returns


{
  "kind": "Deployment",
  "apiVersion": "extensions/v1beta1",
  "metadata": {
    "name": "deployment-example",
    "namespace": "default",
    "selfLink": "/apis/extensions/v1beta1/namespaces/default/deployments/deployment-example",
    "uid": "4ccca349-9cb1-11e6-9c54-42010a800148",
    "resourceVersion": "2119082",
    "generation": 5,
    "creationTimestamp": "2016-10-28T01:53:19Z",
    "labels": {
      "app": "nginx"
    }
  },
  "spec": {
    "replicas": 3,
    "selector": {
      "matchLabels": {
        "app": "nginx"
      }
    },
    "template": {
      "metadata": {
        "creationTimestamp": null,
        "labels": {
          "app": "nginx"
        }
      },
      "spec": {
        "containers": [
          {
            "name": "nginx",
            "image": "nginx:1.11",
            "ports": [
              {
                "containerPort": 80,
                "protocol": "TCP"
              }
            ],
            "resources": {},
            "terminationMessagePath": "/dev/termination-log",
            "imagePullPolicy": "IfNotPresent"
          }
        ],
        "restartPolicy": "Always",
        "terminationGracePeriodSeconds": 30,
        "dnsPolicy": "ClusterFirst",
        "securityContext": {}
      }
    },
    "strategy": {
      "type": "RollingUpdate",
      "rollingUpdate": {
        "maxUnavailable": 1,
        "maxSurge": 1
      }
    },
    "revisionHistoryLimit": 10
  },
  "status": {
    "observedGeneration": 4,
    "replicas": 3,
    "updatedReplicas": 3,
    "availableReplicas": 3
  }
}

replace the specified Deployment

HTTP Request

PUT /apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}

Path Parameters

Parameter Schema Description
name name of the Deployment
namespace object name and auth scope, such as for teams and projects
pretty If 'true', then the output is pretty printed.

Query Parameters

Parameter Schema Description
body Deployment

Response

Code Schema Description
200 Deployment OK