1
- OpenShift CLI for CI/CD
2
- =======================
1
+ # k8s-deploy-tools
3
2
4
- This [ Openshift command line tool] ( https://docs.openshift.com/enterprise/3.0/cli_reference/get_started_cli.html ) docker
5
- image ships ` oc ` and includes ` gettext ` so you can use ` envsubst ` to substitute
6
- environment variables in your CI/CD pipeline, for example using in
7
- [ Jenkins] ( https://jenkins.io/ ) or a job in [ GitLab CI .gitlab-ci.yml file] ( https://docs.gitlab.com/ce/ci/yaml/README.html#gitlab-ci-yml ) .
3
+ CI/CD deployment tools for Kubernetes
8
4
9
- Examples
10
- --------
5
+ ## Docker Image
6
+
7
+ This alpine-based docker image contains next tools:
8
+
9
+ - [ ` kubectl ` ] ( https://kubernetes.io/docs/reference/kubectl/kubectl/ ) - Kubernetes CLI
10
+ - [ ` oc ` ] ( https://docs.openshift.com/enterprise/3.0/cli_reference/get_started_cli.html ) - OpenShift CLI
11
+ - [ ` istioctl ` ] ( https://istio.io/docs/reference/commands/istioctl/ ) - Istio cli
12
+ - ` gettext ` - so you can use ` envsubst ` to substitute environment variables in your CI/CD pipeline
13
+
14
+ ## Examples
11
15
12
16
Why should I use ` envsubst ` ? You should never put secrets into your version
13
17
control, so you might want to keep them in secret variables in your CI/CD
@@ -21,49 +25,53 @@ Below I'll show an example of [GitLab CI variables set in the build environment]
21
25
22
26
Your ` app.yaml ` could look similar the one below:
23
27
24
- $ cat app.yaml
25
- ...
26
- - apiVersion: v1
27
- kind: DeploymentConfig
28
- metadata:
29
- labels:
30
- app: ${CI_PROJECT_NAME}
31
- name: sample
32
- spec:
33
- replicas: 1
34
- selector:
35
- app: ${CI_PROJECT_NAME}
36
- deployment: ${CI_BUILD_REF_SLUG}
37
- ...
28
+ ``` yaml
29
+ ...
30
+ - apiVersion : v1
31
+ kind : DeploymentConfig
32
+ metadata :
33
+ labels :
34
+ app : ${CI_PROJECT_NAME}
35
+ name : sample
36
+ spec :
37
+ replicas : 1
38
+ selector :
39
+ app : ${CI_PROJECT_NAME}
40
+ deployment : ${CI_BUILD_REF_SLUG}
41
+ ...
42
+ ```
38
43
39
44
After ` cat app.yaml | envsubst > app.yaml ` you'll notice the variables have
40
45
been replaced with their actual values:
41
46
42
- $ cat app.yaml
43
- ...
44
- - apiVersion: v1
45
- kind: DeploymentConfig
46
- metadata:
47
- labels:
48
- app: my_awesome_project
49
- name: sample
50
- spec:
51
- replicas: 1
52
- selector:
53
- app: my_awesome_project
54
- deployment: f1234d
55
- ...
47
+ ``` yaml
48
+ ...
49
+ - apiVersion : v1
50
+ kind : DeploymentConfig
51
+ metadata :
52
+ labels :
53
+ app : my_awesome_project
54
+ name : sample
55
+ spec :
56
+ replicas : 1
57
+ selector :
58
+ app : my_awesome_project
59
+ deployment : f1234d
60
+ ...
61
+ ```
56
62
57
- GitLab CI example
58
- -----------------
63
+ ## GitLab CI example
59
64
60
- Below a sample job in an ` .gitlab-ci.yml ` file, please note that OpenShift does
61
- not allow ` _ ` in project names:
65
+ Below a sample job in an ` .gitlab-ci.yml ` file:
62
66
63
- deploy:
64
- image: widerin/openshift-cli
65
- stage: deploy
66
- script:
67
- - oc login "$OPENSHIFT_SERVER" --token="$OPENSHIFT_TOKEN"
68
- - cat app.yaml | envsubst > app.yaml
69
- - oc replace -f app.yaml -n ${CI_PROJECT_NAME/_/}
67
+ ``` yaml
68
+ deploy :
69
+ image : spaceonfire/k8s-deploy-tools
70
+ stage : deploy
71
+ before_script :
72
+ - oc login "$KUBE_URL" --token="$KUBE_TOKEN" --insecure-skip-tls-verify
73
+ - oc project "$KUBE_NAMESPACE" 2> /dev/null || oc new-project "$KUBE_NAMESPACE"
74
+ script :
75
+ - cat app.yaml | envsubst > app.yaml
76
+ - oc apply -f app.yaml
77
+ ` ` `
0 commit comments