52437


[GKEにRailsをdeployしてみる](https://www.enisias.cloud/kubernetes/483/)  
を参考に今rubyonrails行っているのですが

myrails_deployment.yaml:

[code]

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: myrails
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            app: myrails
        spec:
          containers:
          - name: myrails
            image: makotooishi/myrails:latest
            ports:
            - containerPort: 3000
            env:
              - name: MYSQL_ROOT_PASSWORD
                valueFrom: 
                    #secretを参照
                    secretKeyRef:
                      name: myrails-secret
                      key: db_password
              - name: DB_HOST_NAME
                value: bold-monkey-mariadb
            command: ["bundle", "exec", "rails", "server", "-p", "3000", "-b", "0.0.0.0"]
    
[/code]

のところでエラーがでます。

[code]

    error: error parsing myrails_deployment.yaml: error converting YAML to JSON: yaml: line 23: did not find expected key
    
[/code]

`create secret generic myrails-secret --from-literal=db_password=password`  
で再度作り直し

`kubectl get secrets myrails-secret -o yaml`

[code]

    apiVersion: v1
    data:
      db_password: cGFzc3dvcmQ=
    kind: Secret
    metadata:
      creationTimestamp: "2019-01-31T09:15:28Z"
      name: myrails-secret
      namespace: default
      resourceVersion: "1199"
      selfLink: /api/v1/namespaces/default/secrets/myrails-secret
      uid: c03d81cf-2538-11e9-b191-42010a920003
    type: Opaque
    
[/code]

のように作成できました。  
その後myrails_deployment.yaml:  
を行ったんですが次に下記のエラーがでましたので、

[code]

    error: error validating "myrails_deployment.yaml": error validating data: [ValidationError(Deployment.spec): unknown field "command" in io.k8s.api.extensions.v1beta1.DeploymentSpec, ValidationError(Deployment.spec.template.spec.containers[0].env[0]): unknown field "key" in io.k8s.api.core.v1.EnvVar]; if you choose to ignore these errors, turn validation off with --validate=false
    
[/code]

myrails_deployment.yaml:  
を下記のように書き換えました

[code]

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: myrails
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            app: myrails
        spec:
          containers:
          - name: myrails
            image: makotooishi/myrails:latest
            ports:
          - containerPort: 3000
       command: ["bundle", "exec", "rails", "s", "-p", "3000", "-b", "0.0.0.0"]
            env:
              - name: MYSQL_ROOT_PASSWORD
                valueFrom:
                secretKeyRef:
                name: myrails-secret
                key: db_password
    
[/code]

で次に下記エラーがでました

[code]

    error: error parsing myrails_deployment.yaml: error converting YAML to JSON: yaml: line 16: did not find expected key
    
[/code]

何とか動かしたいのですが、誰か教えてください。お願いします


CC BY-SA 4.0
2019-01-30T20:58:29.810
52435
2019-12-02T10:01:15.230
2019-01-31T09:48:25.167
19329
19329
question
ruby-on-rails kubernetes
Google Kubernetes Engine(GKE)にデプロイできない


23行目で指定しているkey

>
[code]

>     key: db_password
>  
[/code]

が無い、というエラーなので、本来あるべき通りにSecretリソースが作成されていない、つまり、参照されているページで言うところの

>
[code]

>     kubectl create secret generic myrails-secret --from-
> literal=db_password=password
>  
[/code]

コマンドが正しく実行されていない(例えば `db_password` という文字列を打ち間違えているとか)が原因ではないでしょうか。

`kubectl get secrets myrails-secret -o yaml`コマンドで設定したkeyを確認できます

[code]

    $ kubectl get secrets myrails-secret -o yaml
    apiVersion: v1
    data:
    db_password: cGFzc3dvcmQ=
    kind: Secret
    (後略)
    
[/code]

ので、想定と異なっているのであれば一旦該当Secretを削除して

[code]

    kubectl delete secrets myrails-secret
    
[/code]

再度、件の`kubectl create`コマンドを実行すれば良いかと思います。


CC BY-SA 4.0
2019-01-31T01:06:18.777
52437
2019-01-31T01:48:41.040
2019-01-31T01:48:41.040
2808
2808
52435
answer