Board logo

标题: gitlab的ci/cd发布项目隐藏帐号密码(3) [打印本页]

作者: look_w    时间: 2019-5-16 18:58     标题: gitlab的ci/cd发布项目隐藏帐号密码(3)

例子

deploy_live:
  image: lachlanevenson/k8s-kubectl:latest
  stage: deploy
  environment:
    name: live
    url: https://live-presentation-gitlab-k8s.edenmal.net
  only:
    - tags
  when: manual
  script:
    - kubectl version
    - cd manifests/
    - sed -i "s/__CI_BUILD_REF_SLUG__/${CI_ENVIRONMENT_SLUG}/" deployment.yaml ingress.yaml service.yaml
    - sed -i "s/__VERSION__/${CI_COMMIT_REF_NAME}/" deployment.yaml ingress.yaml service.yaml
    - kubectl apply -f deployment.yaml
    - kubectl apply -f service.yaml
    - kubectl apply -f ingress.yaml
    - kubectl rollout status -f deployment.yaml
    - kubectl get all,ing -l app=${CI_ENVIRONMENT_SLUG}


方式二configmap

configmap实际上就是一系列键值对,存储于etcd里。etcd的官网有这样一句话:

etcd是一个高性能的分布式键值对存储库,用于存储和访问关键数据。

使用下面的命令行创建一个Kubernetes config map:

kubectl create configmap test-config --from-literal=test.type=unit --from-literal=test.exec=always


创建一个名为test-config的键值对,key为test.type,值为unit,key为test.exec, 值为always。

下面我打算创建一个pod,消费这个名为test-config的configmap。

创建一个内容如下的yaml文件:

apiVersion: v1
kind: Pod
metadata:
    name: test-configmap
spec:
    containers:
        - name: test-container
          image: alpine:3.8
          command: [ "/bin/sh", "-c", "env" ]
          env:
              - name: TEST_TYPE
                valueFrom:
                    configMapKeyRef:
                        name: test-config
                        key: test.type
              - name: TEST_EXEC
                valueFrom:
                configMapKeyRef:
                    name: test-config
                    key: test.exec
restartPolicy: Never


这个yaml文件定义的pod基于docker镜像alpine,执行shell命令/bin/sh -c env查看环境变量。

在env区域,我给该pod注入一个名为TEST_TYPE的环境变量,值从configMap键值对的键名称为test.type的值中取。

kubectl create -f 创建这个pod

使用命令kubectl logs test-configmap查看这个pod运行生成的日志,发现输出的环境变量列表中,出现了TEST_TYPE=unit,这个TEST_TYPE是我在yaml文件里注入的环境变量名称,而unit就来自configmap里test-config的值unit。

方式三envsubst
在deploy.yml中:

LoadbalancerIP: $LBIP



然后只需创建你的env var并像这样运行kubectl:

export LBIP="1.2.3.4"
envsubst < deploy.yml | kubectl apply -f -



您只需将常规Bash变量放入您想要使用的任何文件中,在本例中为YAML清单,并且确保读取该文件.它将输出文件,其env变量由其值替换.您还可以使用它来创建这样的新文件:

envsubst < input.yml > output.yml


envsubst可在例如Ubuntu / Debian gettext包.




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0