1.1. fejezet, MongoDB

Deployment

kubectl create deployment mongo-depl --image=mongo
kubectl expose deployment mongo-depl --type=NodePort --port=27017
 
kubectl edit deployment mongo-depl
spec:
...
 template:
...
    spec:
      containers:
      - image: mongo
        imagePullPolicy: Always
        name: mongo
...
        env:
          - name: MONGO_INITDB_ROOT_USERNAME
            value: admin
          - name: MONGO_INITDB_ROOT_PASSWORD
            value: example
...

mongo-secret.yaml

apiVersion: v1
kind: Secret
metadata:
    name: mongodb-secret
type: Opaque
data:
    mongo-root-username: YWRtaW4= #(base64: admin)
    mongo-root-password: ZXhhbXBsZQ== #(base64: example)

Base64 generálás:

echo -n 'admin'|base64
echo -n 'example'|base64

Base64 visszafejtés:

echo -n "YWRtaW4="|base64 -d

Secret használatával a deployment környezeti változó definíciója

        env:
          - name: MONGO_INITDB_ROOT_USERNAME
            valueFrom: 
              secretKeyRef:
                name: mongodb-secret
                key: mongo-root-username
          - name: MONGO_INITDB_ROOT_PASSWORD
            valueFrom:
              secretKeyRef:
                name: mongodb-secret
                key: mongo-root-password

Egy yaml fájlban több definíció is szerepelhet. Ekkor a dokumentum elválasztó jel a --- (három kötőjel).

Service type külső eléréshez

spec:
  clusterIP: 10.104.198.168
  clusterIPs:
  - 10.104.198.168
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - nodePort: 27018
    port: 27017
    protocol: TCP
    targetPort: 27017
  selector:
    app: mongodb
  sessionAffinity: None
  type: LoadBalancer

Fontos itt a nodePort: 27018 és a type: LoadBalancer bejegyzés