F5 Solutions for Containers > Class 1: Kubernetes with F5 Container Ingress Service > Module 2: CIS Using ClusterIP Mode Source | Edit on
Lab 2.3 - Deploy Hello-World Using ConfigMap w/ AS3¶
Just like the previous lab we’ll deploy the f5-hello-world docker container. But instead of using the Ingress resource we’ll use ConfigMap.
App Deployment¶
On kube-master1 we will create all the required files:
Create a file called
deployment-hello-world.yaml
Tip
Use the file in ~/agilitydocs/docs/class1/kubernetes
deployment-hello-world.yaml¶1apiVersion: apps/v1 2kind: Deployment 3metadata: 4 name: f5-hello-world-web 5 namespace: default 6spec: 7 replicas: 2 8 selector: 9 matchLabels: 10 app: f5-hello-world-web 11 template: 12 metadata: 13 labels: 14 app: f5-hello-world-web 15 spec: 16 containers: 17 - env: 18 - name: service_name 19 value: f5-hello-world-web 20 image: f5devcentral/f5-hello-world:latest 21 imagePullPolicy: IfNotPresent 22 name: f5-hello-world-web 23 ports: 24 - containerPort: 8080 25 protocol: TCP
Create a file called
clusterip-service-hello-world.yaml
Tip
Use the file in ~/agilitydocs/docs/class1/kubernetes
clusterip-service-hello-world.yaml¶1apiVersion: v1 2kind: Service 3metadata: 4 name: f5-hello-world-web 5 namespace: default 6 labels: 7 app: f5-hello-world-web 8 cis.f5.com/as3-tenant: AS3 9 cis.f5.com/as3-app: A1 10 cis.f5.com/as3-pool: web_pool 11spec: 12 ports: 13 - name: f5-hello-world-web 14 port: 8080 15 protocol: TCP 16 targetPort: 8080 17 type: ClusterIP 18 selector: 19 app: f5-hello-world-web
Create a file called
configmap-hello-world.yaml
Tip
Use the file in ~/agilitydocs/docs/class1/kubernetes
configmap-hello-world.yaml¶1apiVersion: v1 2kind: ConfigMap 3metadata: 4 name: f5-as3-declaration 5 namespace: default 6 labels: 7 f5type: virtual-server 8 as3: "true" 9data: 10 template: | 11 { 12 "class": "AS3", 13 "declaration": { 14 "class": "ADC", 15 "schemaVersion": "3.10.0", 16 "id": "urn:uuid:33045210-3ab8-4636-9b2a-c98d22ab915d", 17 "label": "http", 18 "remark": "A1 example", 19 "AS3": { 20 "class": "Tenant", 21 "A1": { 22 "class": "Application", 23 "template": "http", 24 "serviceMain": { 25 "class": "Service_HTTP", 26 "virtualAddresses": [ 27 "10.1.1.4" 28 ], 29 "pool": "web_pool", 30 "virtualPort": 80 31 }, 32 "web_pool": { 33 "class": "Pool", 34 "monitors": [ 35 "http" 36 ], 37 "members": [ 38 { 39 "servicePort": 8080, 40 "serverAddresses": [] 41 } 42 ] 43 } 44 } 45 } 46 } 47 }
We can now launch our application:
kubectl create -f deployment-hello-world.yaml kubectl create -f clusterip-service-hello-world.yaml kubectl create -f configmap-hello-world.yaml
To check the status of our deployment, you can run the following commands:
kubectl get pods -o wide
kubectl describe svc f5-hello-world
Attention
To understand and test the new app pay attention to the Endpoints value, this shows our 2 instances (defined as replicas in our deployment file) and the flannel IP assigned to the pod.
Now that we have deployed our application sucessfully, we can check the configuration on BIG-IP1. Switch back to the open BIG-IP1 TMUI management session.
Warning
Don’t forget to select the proper partition. Previously we checked the “kubernetes” partition. In this case we need to look at the “AS3” partition. This partition was auto created by AS3 and named after the Tenant which happens to be “AS3”.
Browse to:
Here you can see a new Virtual Server, “serviceMain” was created, listening on 10.1.1.4:80 in partition “AS3”.
Check the Pools to see a new pool and the associated pool members.
Browse to:
and select the “web_pool” pool. Click the Members tab.Note
You can see that the pool members IP addresses are assigned from the overlay network (ClusterIP mode)
Access your web application via Firefox on the superjump.
Note
Select the “Hello, World” shortcut or type http://10.1.1.4 in the URL field.
Hit Refresh many times and go back to your BIG-IP UI.
Browse to:
to see that traffic is distributed as expected.Note
Why is all the traffic directed to one pool member? The answer can be found by instpecting the “serviceMain” virtual service in the management GUI.
Scale the f5-hello-world app
kubectl scale --replicas=10 deployment/f5-hello-world-web -n default
Check that the pods were created
kubectl get pods
Check the pool was updated on BIG-IP1. Browse to:
and select the “web_pool” pool. Click the Members tab.Attention
Now we show 10 pool members. In Module1 the number stayed at 3 and didn’t change, why?
Remove Hello-World from BIG-IP.
Attention
In older versions of AS3 a “blank AS3 declaration” was required to completely remove the application/declaration from BIG-IP. In AS3 v2.20 and newer this is no longer a requirement.
kubectl delete -f configmap-hello-world.yaml kubectl delete -f clusterip-service-hello-world.yaml kubectl delete -f deployment-hello-world.yaml
Note
Be sure to verify the virtual server and “AS3” partition were removed from BIG-IP.
The next modules are OPTIONAL. If instructed to skip be sure to exit your current SSH session with kube-master1 first. Then click here to start Class 2: OpenShift with Container Ingress Service. Otherwise click “Next” below.
exit