Box

Allgemein

Profil

Kubernetes Work on Windows » Historie » Zyklus 2

Peter Pfläging, 14.02.2023 13:19

1 1 Peter Pfläging
# Kubernetes Work on Windows
2
3
This is a small guide for working with Kubernetes / Openshift / OKD on Windows.
4
5
It's not about installing the upper on Windows. The primary focus here is a DevOps / GitOps view managing one or many clusters from a Windows PC.
6
7
One of the main advantages is, that your typically not able to install everything on this Windows PC, because it's managed by your organisation / customer, ...
8
(if you can manage it by your own it's easier to install a Linux Desktop or use WSL2 on it!)
9
10
OK, let's begin. We want to work and comfortable edit environment on Windows.
11
12
## Toolset
13
14
OK, what do we need:
15
16
- Editor
17
- Terminal Emulator
18
- Shell (unixoide Shell)
19
- ssh
20
- kubectl
21
- openshift CLI
22
- helm
23
- kubeseal (from Sealed Secrets)
24
25
## GUI Programs
26
27
You need three Programs which install with GUI Installers (you can install all 3 without Admin privileges):
28
29
- Visual Studio Code <https://code.visualstudio.com/>
30
- Git Installer <https://git-scm.com/downloads>
31
- ConEmu as Terminal Emulation <https://conemu.github.io/>
32
33
Install all 3 with the default options for your environment.
34
35
## Commandline programs
36
37
Add a directory `bin` to your homedirectory (for example `c:\Users\myusername\bin`). Add this to your Path:
38
39
- Windows Taskbar (right click) -> select "System"
40
- In the Settings window under "Related Settings" click "Advanced system settings"
41
- In the "Advanced" tab click "Environment variables"
42
- You have now to lists: "variables for myuser" & "system variables"
43
- double click "Path" in "variables for myuser" and add the path from above
44
45
Cool, ...
46
47
Now we install the following Windows binaries (`.EXE`) files in this directory:
48
49
- oc -> the OpenShift / OKD Command line (<https://github.com/okd-project/okd/releases/> use the newest `openshift-client-windows` package from here, unpack it and kick the `oc.exe` to the bin dir)
50
- kubectl -> the Kubernetes Command line (<https://dl.k8s.io/release/v1.26.0/bin/windows/amd64/kubectl.exe>)
51
- helm -> the package manager for Kubernetes (<https://github.com/helm/helm/releases>)
52
- kubeseal -> generate Sealed Secrets for Kubernetes and OpenShift (<https://github.com/bitnami-labs/sealed-secrets/releases>)
53
54
## Customizings
55
56
### Recommended Visual Studio Coder extensions
57
58
- Openshift Extension Pack (by Red Hat)
59
- Remote Development (by Microsoft)
60
- Git Extension Pack (by Don Jayamanne)
61
62
### Shell environment
63
64
We use the git supplied bash and utilities for our unixoid environment (or linuxoid if you prefer it this way).
65
66
- *Visual Studio Code*: The terminal uses Powershell normally. You can switch to bash by:
67
  - Open "Terminal -> New Terminal"
68
  - click on the down-arrow on the right side of the Terminal
69
  - Click "Choose standard profile"
70
  - Click on "Git Bash"
71
- *ConEmu*: We want to use Bash as default terminal shell.
72
  - Goto "Settings" (the menu comes in the menu button on the top right cornert (under the Windows close button))
73
  - In Settings: "Startup -> Specified named task: {Bash::Git bash}
74
  - Save settings
75
76
At last wie want to show the actual kubernetes config in the command prompt (we use the famous [kube-ps1](https://github.com/jonmosco/kube-ps1) project for this):
77
78
- open a bash Window (either in VS-Code or ConEmu)
79
- download the `kube-ps1.sh` script from the [kube-ps1](https://github.com/jonmosco/kube-ps1) GitHub repo and place it in your `bin` directory:
80
    `curl -Lo ~/bin/kube-ps1.sh https://raw.githubusercontent.com/jonmosco/kube-ps1/master/kube-ps1.sh`
81
- create an appropriate `.bash_profile` in your home directory with this:
82
83
    ```shell
84
    cat << EOF > ~/.bash_profile
85
    source ~/bin/kube-ps1.sh
86
87
    function get_cluster_short() {
88
      echo "$1" | sed 's&.*/api-\([^-]*\)-.*:6443/\(.*\)&\1/\2&'
89
    }
90
    KUBE_PS1_CLUSTER_FUNCTION=get_cluster_short
91
92
    # PS1='[\u@\h \W $(kube_ps1)]\$ '
93
    PS1='$(kube_ps1) \w \$ '
94
95
    mkdir -p ~/lib/bash-completion
96
    for comp in ~/lib/bash-completion/*.sh
97
    do
98
      . $comp
99
    done
100
101
    alias k=kubectl
102
    alias more=less
103
    EOF
104
    ```
105
- add the completion rules for commands:
106
107
    ```shell
108
    kubectl completion bash > ~/lib/bash-completion/kubectl.sh
109
    oc completion bash > ~/lib/bash-completion/oc.sh
110
    helm completion bash > ~/lib/bash-completion/helm.sh
111
    ```