Wpis z mikrobloga

Siema, mam kubernetesową zagwozdkę, z którą nie umiem sobie poradzić. Może ktoś ma wolną chwilę, żeby rzucić okiem i napisać, czego nie widzę (,)

Chciałbym postawić w statefulsecie bazę danych uruchomioną z obrazu mongo.
Ich dokumentacja (https://hub.docker.com/_/mongo) wskazuje następująco:
#v+
MONGOINITDBROOTUSERNAME, MONGOINITDBROOTPASSWORD

These variables, used in conjunction, create a new user and set that user's password. This user is created in the admin authentication database and given the role of root, which is a "superuser" role.
#v-

Więc dodałem do definicji kontenera w yamlu takie zmienne:
#v+
containers:
- name: mongo
image: mongo
ports:
- containerPort: 27017
volumeMounts:
- name: database-storage
mountPath: /data/db
env:
- name: MONGOINITDBROOTUSERNAME
value: admin
- name: MONGO
INITDBROOTPASSWORD
value: pass
#v-

Po wywołaniu describe na uruchomionym podzie zmienne się pokazują:
#v+
mongo:
Container ID: docker://ef17595eb5da4f096eed09229dcd7426ae1401e9ed773c5e1ac99ff9045d2ecf
Image: mongo
Image ID: docker-pullable://mongo@sha256:8bed0be3e86595283d67836e8d4f3f08916184ea6f2aac7440bda496083ab0c8
Port: 27017/TCP
Host Port: 0/TCP
State: Running
Started: Wed, 23 Nov 2022 22:07:28 +0100
Ready: True
Restart Count: 0
Environment:
MONGOINITDBROOTUSERNAME: admin
MONGO
INITDBROOTPASSWORD: pass
#v-

Natomiast uwierzytelnienie nie działa:
#v+
kc exec -ti pod/database-0 -- mongosh
Current Mongosh Log ID: 637e8c17aa828f64d211fcdb
Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.6.0
Using MongoDB: 6.0.3
Using Mongosh: 1.6.0

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

test> use admin
switched to db admin
admin> db.auth('admin', 'pass')
MongoServerError: Authentication failed.
admin> db.auth(admin, pass)
ReferenceError: admin is not defined
admin>
#v-

Jeżeli ktoś dotrwał do końca to i tak dziękuję ( ͡° ͜ʖ ͡°) (na zdjęciu literalnie ja)

#devops #kubernetes #k8s #mongodb #docker
arghhh - Siema, mam kubernetesową zagwozdkę, z którą nie umiem sobie poradzić. Może k...

źródło: comment_1669238930DgqoYFSwHrEYUsuti0hL6K.jpg

Pobierz
  • 9
@cabeiu:

apiVersion: apps/v1
kind: StatefulSet
metadata:
creationTimestamp: null
labels:
app: database
name: database
spec:
serviceName: "database"
replicas: 1
selector:
matchLabels:
role: database
template:
metadata:
labels:
role: database
environment: test
spec:
terminationGracePeriodSeconds: 30
containers:
- name: mongo
image: mongo
ports:
- containerPort: 27017
volumeMounts:
- name: database-storage
mountPath: /data/db
env:
- name: MONGO_INITDB_ROOT_USERNAME
value: admin
- name: MONGO_INITDB_ROOT_PASSWORD
value: pass
volumeClaimTemplates:
- metadata:
name: database-storage
annotations:
volume.beta.kubernetes.io/storage-class: "persistent"
spec:
accessModes: [ "ReadWriteOnce"
Uruchomiłeś może to mongo wczesniej bez tych envów i dodałeś je dopiero później? Może być tak że trzeba wywalić volume żeby został stworzony na nowo
@arghhh: no a co masz w logach po odpaleniu kontenera może hasło jest za krótkie i odmawia utworzenia usera? poza tym baza danych w k8s.. rób jak uważasz ale wyleczysz się z tego po pierwszej utracie danych ( ͡° ͜ʖ ͡°)