- Manifest ManagementManifest Management
- Application Update LifecycleApplication Update Lifecycle
- Volume ManagementVolume Management
- Dynamic ParametersDynamic Parameters
- Kubernetes Cluster SupportKubernetes Cluster Support
- Kubernetes RBACKubernetes RBAC
- Network & Traffic managementNetwork & Traffic management
- Kubernetes AutoscalingKubernetes Autoscaling
- Associating Pods To NodesAssociating Pods To Nodes
- Integration with VM (Legacy) ServicesIntegration with VM (Legacy) Services
Application Update Lifecycle
On one end, you need integration with a CI tool like Jenkins or CircleCI to push the latest updates to the code. Manually integrating CI with every Docker container in an application would be a tedious and nonproductive activity.
On the other end, developers need to use deployment strategies such as Canary and Blue Green for a controlled delivery process. In the case of Blue/Green Deployment, Kubernetes requires multiple deployments for each container and manually switching between these deployments by upscaling or downscaling each container. In the case of Canary deployment, developers are required to manually review and analyze application statistics and manually change the weight for each stage based on those statistics.
The following is an example snippet for a Blue/Green Deployment YAML. Here Tomcat v7 is deployed as Blue and Tomcat v8 is deployed as Green.
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: tomcat-deployment-blue spec: replicas: 2 template: metadata: labels: app: tomcat role: blue spec: containers: - name: tomcat-container image: tomcat:7 ports: - containerPort: 8080 readinessProbe: httpGet: path: / port: 8080
kind: Service apiVersion: v1 metadata: name: tomcat-service labels: app: tomcat role: blue env: prod spec: type: LoadBalancer selector: app: tomcat role: blue ports: - port: 80 targetPort: 8080
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: tomcat-deployment-green spec: replicas: 2 template: metadata: labels: app: tomcat role: green spec: containers: - name: tomcat-container image: tomcat:8 ports: - containerPort: 8080 readinessProbe: httpGet: path: / port: 8080