Update k8s client and the dependencies ACI client change for Mocking Add ACI Provider Mock Tests Add the Windows development environment Add UT for Default Resource Requests Enable the make test in Docker file Update the vendors
94 lines
3.1 KiB
Markdown
94 lines
3.1 KiB
Markdown
# Create, Update & Delete Deployment
|
|
|
|
This example program demonstrates the fundamental operations for managing on
|
|
[Deployment][1] resources, such as `Create`, `List`, `Update` and `Delete`.
|
|
|
|
You can adopt the source code from this example to write programs that manage
|
|
other types of resources through the Kubernetes API.
|
|
|
|
## Running this example
|
|
|
|
Make sure you have a Kubernetes cluster and `kubectl` is configured:
|
|
|
|
kubectl get nodes
|
|
|
|
Compile this example on your workstation:
|
|
|
|
```
|
|
cd create-update-delete-deployment
|
|
go build -o ./app
|
|
```
|
|
|
|
Now, run this application on your workstation with your local kubeconfig file:
|
|
|
|
```
|
|
./app
|
|
# or specify a kubeconfig file with flag
|
|
./app -kubeconfig=$HOME/.kube/config
|
|
```
|
|
|
|
Running this command will execute the following operations on your cluster:
|
|
|
|
1. **Create Deployment:** This will create a 2 replica Deployment. Verify with
|
|
`kubectl get pods`.
|
|
2. **Update Deployment:** This will update the Deployment resource created in
|
|
previous step by setting the replica count to 1 and changing the container
|
|
image to `nginx:1.13`. You are encouraged to inspect the retry loop that
|
|
handles conflicts. Verify the new replica count and container image with
|
|
`kubectl describe deployment demo`.
|
|
3. **Rollback Deployment:** This will rollback the Deployment to the last
|
|
revision. In this case, it's the revision that was created in Step 1.
|
|
Use `kubectl describe` to verify the container image is now `nginx:1.12`.
|
|
Also note that the Deployment's replica count is still 1; this is because a
|
|
Deployment revision is created if and only if the Deployment's pod template
|
|
(`.spec.template`) is changed.
|
|
4. **List Deployments:** This will retrieve Deployments in the `default`
|
|
namespace and print their names and replica counts.
|
|
5. **Delete Deployment:** This will delete the Deployment object and its
|
|
dependent ReplicaSet resource. Verify with `kubectl get deployments`.
|
|
|
|
Each step is separated by an interactive prompt. You must hit the
|
|
<kbd>Return</kbd> key to proceeed to the next step. You can use these prompts as
|
|
a break to take time to run `kubectl` and inspect the result of the operations
|
|
executed.
|
|
|
|
You should see an output like the following:
|
|
|
|
```
|
|
Creating deployment...
|
|
Created deployment "demo-deployment".
|
|
-> Press Return key to continue.
|
|
|
|
Updating deployment...
|
|
Updated deployment...
|
|
-> Press Return key to continue.
|
|
|
|
Rolling back deployment...
|
|
Rolled back deployment...
|
|
-> Press Return key to continue.
|
|
|
|
Listing deployments in namespace "default":
|
|
* demo-deployment (1 replicas)
|
|
-> Press Return key to continue.
|
|
|
|
Deleting deployment...
|
|
Deleted deployment.
|
|
```
|
|
|
|
## Cleanup
|
|
|
|
Successfully running this program will clean the created artifacts. If you
|
|
terminate the program without completing, you can clean up the created
|
|
deployment with:
|
|
|
|
kubectl delete deploy demo-deployment
|
|
|
|
## Troubleshooting
|
|
|
|
If you are getting the following error, make sure Kubernetes version of your
|
|
cluster is v1.6 or above in `kubectl version`:
|
|
|
|
panic: the server could not find the requested resource
|
|
|
|
[1]: https://kubernetes.io/docs/user-guide/deployments/
|