The full configuration file is here. But let us dissect it. This file will create two resources:
Deployment
for the backendService
for that backendFirst we need to configure the resource Type and some Metadata
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend-mongodb-deployment
labels:
app: backend-mongodb
The above sets a name for this deployment and also a label that will be used to reference this deployment later on. Next, we need to set some specifications:
spec:
replicas: 1
selector:
matchLabels:
app: backend-mongodb
template:
metadata:
labels:
app: backend-mongodb
In the above code we set the replicas to 1
because we need one Pod. and we also set the selector to select the label app: backend-mongodb
Next, we need to set the container specification. We have an Container Image
that is already configured with MongoDB. We will set that, and we will also set the default port.
spec:
containers:
- name: backend-mongodb
image: mongo
ports:
- containerPort: 27017
The next step is for us to configure the username and password for the Database. We can do that by setting the environment variables MONGO_INITDB_ROOT_USERNAME
and MONGO_INITDB_ROOT_PASSWORD
inside the container. The values of those are being referenced from the mongodb-secret
secret we set earlier.
env:
- name: MONGO_INITDB_ROOT_USERNAME
valueFrom:
secretKeyRef:
name: mongodb-secret
key: mongo-username
- name: MONGO_INITDB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mongodb-secret
key: mongo-passwor
Finally, we are going to create service and tie it to the deployment we just created:
apiVersion: v1
kind: Service
metadata:
name: backend-mongodb
spec:
selector:
app: backend-mongodb
ports:
- protocol: TCP
port: 27017
targetPort: 27017
Notice that we used the app: backend-mongodb
as a selector and we exposed the same port 27017
. Notice also that we don’t have anything that dictates wether we should expose access to this service externally. The default is that we will not.
kubectl apply -f example1-mogoApp/backend-mongo-db.yaml