Commit ed799b8b by WinDocks Committed by Guangbo

Add Windocks 1.5.0 (#195)

* Added Windocks v 1.5.0
parent e29784be
apiVersion: v1
appVersion: "1.5.0"
description: Windocks SQL Server containers
name: windocks
version: 1.5.0
home: https://www.windocks.com/
icon: https://windocks.com/img/windockslogo.png
sources:
- https://github.com/WinDocks/rancher
maintainers:
- name: WinDocks
email: support@windocks.com
# Windocks SQL proxy
The Windocks SQL proxy delivers Windows SQL Server containers with database clones to a cluster.
- Creates a Windows SQL Server container on a designated external machine that already has Windocks installed (A demo Windocks server is available at the IP address in the values)
- Clones terabyte sized SQL Server databases on the external Windocks server in seconds and delivers them to the container
- Proxies SQL traffic from the client applications (users, .Net apps, Sql Server Management Studio, NodeJs apps etc) to the Windocks container
- Enables the client applications to work on the cloned databases (usually production database clones)
- Deletes the Windocks SQL Server container when the SQL proxy pod / container is deleted
## Pre-requisites
1. Windocks installed on a machine accessible to the cluster (A demo machine is provided for you on the IP address)
2. For TLS connections, the required TLS setup on the Windocks machine and an SSL certificate and key for the proxy
## Steps
1. Use the default values for proxy image name/tag and environment variables (Windocks host ip, Windocks server port, etc. ).
2. Create the secret: create secret generic proxy-secrets --from-literal=WINDOCKS_REQUIRED_USERNAME='windocks-api-username' --from-literal=WINDOCKS_REQUIRED_PASSWORD='windocks-api-password' --from-literal=WINDOCKS_REQUIRED_CONTAINER_SAPASSWORD='sa-password-to-set-for-windocks-container'
3. For TLS: Create a secret in a file with tls.key and tls.crt, both of which are mounted as files into the container. Separate coniguration is required on the Windocks server (support@windocks.com)
4. Deploy the app and use SQL Server Management Studio or Azure Management Studio to connect to the <Windocks=host-IP>,3087 using SQL auth: sa and the password above
Email support@windocks.com for issues
## Instructions for your own external Windocks machine
Download a free Windocks community edition from [Windocks.com](http://www.windocks.com)
### PRE-INSTALL CHECKLIST
1. Windows 8.1, 10, Pro or Enterprise editions, or Windows Server 2012 R2 or 2016.
2. SQL Server Standard, Enterprise, Developer or Express: 2008, R2, 2012, 2014, 2016 or 2017
3. SQL Server already installed? WIndocks will use it. Don’t use that SQL for anything else. Or
install another instance of SQL & edit node.conf to use the fresh SQL (see below)
4. SQL Server not already installed? Install SQL before Windocks & don’t use SQL for anything
else. Login with the same BUILTIN admin account, install SQL first, then WIndocks
5. Report Server (SSRS) must be installed in native mode for SSRS containers.
### INSTALL
After SQL Server is installed, login with a Builtin Administrator account & run the Windocks
installer. Reboot the server after a fresh install.
### VERIFY INSTALL
1. Copy the license key to a file named key.txt and save key.txt in the Windocks folder. The
machine must have Internet access to validate the license.
2. Open a Windows command prompt and create a Sql Server container as below:
docker create mssql-20xx (Replace xx with your sql version - 08, 08r2, 12, 14, 16, 17)
### POST INSTALL
1. For the web app, open ports 3000,3001, & 5985, 5986 (PowerShell remote)
2. The installer configures SQL and SSRS instance names automatically. Verify in
Windocks\config\node.conf Restart the Windocks service following any changes.
### windocks\config\node.conf (Example below is SQL Server 2014)
<i>#</i>Get YourSqlInstanceName from services.msc, the SQL instance name is in (parenthesis)
MSSQL_2014_INSTANCE_NAME=“YourSqlInstanceName”
MSRS_2014_INSTANCE_NAME=“YourSqlInstanceName”
### BUILD IMAGES AND SQL CONTAINERS WITH DATABASE CLONES (see windocks\samples)
Use a command prompt to create and start a base SQL Server container:
>docker images -- displays the list of SQL images available
>docker create mssql-2014 — use the image name from the images command
>docker ps — Verify the container was created, note the ContainerID and port
>docker start <ContainerID> -- use 2-3 unique digits of Containerid
>docker rm <containerID> -- stops and deletes the container
#### Windocks\samples\testFastCloneFromFullBackup\dockerfile
<i>#</i> Set the SQL image to be used here. Example is for SQL 2014:
FROM mssql-2014
<i>#</i> The source of data for cloning is a full backup. Diff is supported see samples
SETUPCLONING FULL customers C:\windocks\dbbackups\customerdatafull.bak
<i>#</i> Windocks copies the data masking script to the image & runs it to prepare the image
COPY cleanseData.sql .
RUN cleanseData.sql
Build an image named full1 & create a SQL Server container that includes the cloned DB.
>docker build -t full1 C:\Windocks\samples\testFastCloneFromFullBackup
>docker images — Verify the image full1 is built
>docker create full1 — Create a container from full1, note the containerId and port
>docker start <containerid> — Start the container with 2-3 unique digits of ContainerID
Open SQL Management Studio, use the loopback address followed by a comma and port 127.0.0.1,10001. Verify the presence of the customers database.
>docker rmi full1 — Deletes image full1 (Delete associated containers first for clone images)
### WINDOCKS WEB APPLICATION
The web app supports build images, create, start, and stop containers with data, and delivery
of database clones to SQL instances and MS SQL containers. On the Windocks machine, browse
to 127.0.0.1 (or localhost) in Chrome or Firefox. Enter 127.0.0.1 in the IP address box & Get.
On remote machines use the Windocks machine IP address instead of 127.0.0.1.
### AUTHENTICATION
Open inetpub\wwroot\registerreset.html in Chrome/Firefox to create users. Email
support@windocks.com for the administrator password. Not available in Community edition.
### ADVANCED CONFIGURATION
#### windocks\config\nodeAllOptions.conf. Copy line(s) to node.conf and restart Windocks service
<i>#</i> sa passwords are not shown, encrypted, or shown in plain text, with 0, 1, 2 respectively
SHOW_SA_PASSWORD=“1”
<i>#</i> Container storage, default is SystemDrive:\Windocks\containers. Ensure the path exists
CONTAINER_BASE_DIR=“D:\containers”
<i>#</i> Assign ports to containers beginning with this port
STARTING_PORT=10001
<i>#</i> Don’t copy user databases in the default SQL instance to containers (1: copy)
COPY_DEFAULT_INSTANCE_DATABASES=0
<i>#</i> Only SQL containers and SQL scripts allowed using “1”, or all containers and EXEs =”0”
DB_SANDBOX=“1"
<i>#</i> User permissions for access to cloned databases in the file share: \Windocks\data
CLONE_USERS_PERMITTED=“domain\user1, domain\user2, Everyone”
Logins for SSRS containers require Logon as a Service permissions, set in Local Security
Policy, User Policies, User Rights Assignment.SSRS containers run as the account (needs Logon as a Service). See Encrypted Passwords
REPORTING_SERVICE_LOGIN=“MACHINE\account”
REPORTING_SERVICE_PASSWORD=“EncryptedPassword”
<i>#</i> Logins for SSRS containers require Logon as a Service permissions, set in Local Security
Policy, User Policies, User Rights Assignment.
### ENCRYPTED PASSWORDS (SECRETS)
>c:\windocks\bin\encrypt.exe — Enter the password you want to encrypt
Result encrypted password is in “encrypted.txt”. Copy/paste to node.conf
>c:\windocks\bin\decrypt.exe — Enter the encrypted password, see the decrypted result
### T-SQL SCRIPT FORMAT
Use T-SQL scripts with a single statement per SQL command, & a semi-colon at the end of
each SQL command. Details at https://windocks.com/files/windocks-scripting-sql-PDF.pdf
### UNINSTALL WINDOCKS
1. Stop and remove all containers >docker rm <containerid>
2. Close open dockerfiles or other processes using Windocks
3. Open services.msc, right-click and stop Windocks Services
4. Open Administrative command prompt, and delete the services >sc delete windocks
5. Using File Explorer delete the Windocks directory
### ADDITIONAL RESOURCES
See https://windocks.com/lps/resources
### TROUBLESHOOTING
1. docker create or docker build SQL issues ? See the error message from server
• SQL Server default instance is running? Stop it in Services & set to Manual.
• SQL Server instance name? Edit Windocks\config\node.conf, enter instance name - get
it from Services / Microsoft SQL Server (InstanceName). Restart Windocks Service
2. SSRS container issues - email support@windocks.com
3. Database cloning issues. docker build -t <cloneTypeImage> - see error message
• Path to backup in dockerfile correct?
• Logged in to Windows with an account that has permissions on the backup path?
• Check dockerfile syntax for SETUPCLONING and paths to each Db file
4. SQL Scripts issues - see https://windocks.com/files/windocks-scripting-sql-PDF.pdf
• Did you miss the . (period) in COPY script.sql . ?
• Is the script present in the same directory as dockerfile or the path specified?
5. Encrypted DB backups see https://windocks.com/files/windocks-scripting-sql-PDF.pdf
RELEASE NOTES
1. Any change to node.conf, restart Windocks service
2. Creating an SSRS container takes 2 to 3 minutes. The Services view will show the container
services earlier, but DO NOT start or stop these services till the container is created.
3. SQL Server 2016 SSRS containers use ReportServer<PortNumber> as the reporting DB
4. Docker images and web UI show SSRS images even when no SSRS default instance exists
5. The Windocks web UI allows use of CAPS in image names, but the command line does not.
The result can be image names distinguished only by the presence of CAPS. Please
standardize on lower-case image names.
6. The web UI does not allow image deletion.
7. When using Windocks to serve database clones, avoid unplanned reboots or system restarts,
which can result in database clones being put into a “recovery pending” state.
### TECHNICAL SUPPORT
Email support@windocks.com with a copy of Windocks\log\platform.log for help.
\ No newline at end of file
Windocks SQL proxy
The Windocks SQL proxy delivers Windows SQL Server containers with database clones to a cluster. The proxy:
- Creates a Windows SQL Server container on a designated external machine that already has Windocks (cloud or on-prem)
- Clones terabyte sized SQL Server databases in seconds and delivers them to the container
- Proxies SQL traffic from the client applications (users, .Net apps, Sql Server Management Studio, NodeJs apps etc) to the Windocks container
- Enables the client applications to work on the cloned databases (usually production database clones)
- Deletes the Windocks SQL Server container when the SQL proxy pod / container is deleted
Pre-requisites
1. Windocks installed on a machine accessible to the cluster
2. For TLS connections, the required TLS setup on the Windocks machine and an SSL certificate and key for the proxy
Steps
1. Enter the values for proxy image name/tag and environment variables (Windocks host ip, Windocks server port, etc. ). Use the default values where provided
2. Create the auth secret: create secret generic proxy-secrets --from-literal=WINDOCKS_REQUIRED_USERNAME='windocks-api-username' --from-literal=WINDOCKS_REQUIRED_PASSWORD='windocks-api-password' --from-literal=WINDOCKS_REQUIRED_CONTAINER_SAPASSWORD='sa-password-to-set-for-windocks-container'
3. For TLS: Create a secret in a file with tls.key and tls.crt, both of which are mounted as files into the container. Separate coniguration is required on the Windocks server
4. Deploy the app and use SQL Server Management Studio or Azure Management Studio to connect to the <Windocks=host-IP>,3087 using SQL auth: sa and the password above
Email support@windocks.com for issues
\ No newline at end of file
categories:
- Database
- SQL Server
labels:
io.rancher.certified: partner
questions:
- variable: image.repository
default: "windocks/windocks-sql-server-proxy"
description: "Docker image name"
type: string
required: true
label: Image Name for Sqlproxy
group: "Sqlproxy Settings"
- variable: image.tag
default: "1.5.0"
description: "Image tag"
type: string
required: true
label: Image tag
group: "Sqlproxy Settings"
- variable: image.pullPolicy
default: "Always"
description: "Image pull policy"
type: enum
required: true
options:
- "Always"
- "IfNotPresent"
label: Image pull polcy
group: "Sqlproxy Settings"
- variable: sqlproxy.windocksServerHostname
default: "34.220.44.23"
description: "IP or hostname for Windocks server"
type: string
required: true
label: Windocks Server hostname
group: "Sqlproxy Settings"
- variable: sqlproxy.windocksServerPort
default: "3000"
description: "Port for Windocks API"
type: string
required: false
label: Windocks port
group: "Sqlproxy Settings"
- variable: sqlproxy.windocksImageName
default: "clone"
description: "Windocks image name from which SQL Server containers and database clones are created"
type: string
required: true
label: Windocks image name
group: "Sqlproxy Settings"
- variable: sqlproxy.windocksContainerName
default: ""
description: "Name to use for Windocks container created by Sqlproxy"
type: string
required: false
label: Windocks container name
group: "Sqlproxy Settings"
- variable: sqlproxy.windocksPersistentContainerPort
default: ""
description: "Set this if you do not want Sqlproxy to create and manage the Windocks container. You must create the Windocks container using the Windocks web app or a docker client"
type: string
required: false
label: Pre-existing Windocks container port
group: "Sqlproxy Settings"
- variable: sqlproxy.port
default: "3087"
description: "Container port for access to Windocks Sql proxy"
type: string
required: true
label: Sqlproxy listening port
group: "Sqlproxy Settings"
- variable: sqlproxy.authSecretName
default: ""
description: "Secret; WINDOCKS_REQUIRED_USERNAME='' WINDOCKS_REQUIRED_PASSWORD='' WINDOCKS_REQUIRED_CONTAINER_SAPASSWORD=''"
type: string
label: Secret for Windocks API user, passwd, and desired SQL sa password
required: true
group: "Sqlproxy Settings"
- variable: sqlproxy.tls
default: ""
description: "Set to true for TLS"
type: string
label: TLS connection
required: false
group: "Sqlproxy Settings"
- variable: sqlproxy.sslSecretName
default: ""
description: "Secret - in a file with tls.key:... and tls.crt:......"
type: string
label: Secret for ssl cert and key (files)
required: false
group: "Sqlproxy Settings"
- variable: sqlproxy.localHostNameForTls
default: ""
description: "For TLS connections, hostname for the sql proxy"
type: string
label: For TLS connections, hostname for sql proxy service
required: false
group: "Sqlproxy Settings"
- variable: service.port
default: "3087"
description: "Service port for access to Windocks Sql proxy"
type: string
label: Windocks SQL proxy NodePort number
required: true
group: "Sqlproxy Settings"
- variable: service.loadBalancerIP
default: ""
description: "Load balancer IP"
type: string
label: Load balancer IP
required: false
group: "Sqlproxy Settings"
- variable: service.type
default: "ClusterIP"
description: "MySQL K8s Service type"
type: enum
group: "Services and Load Balancing"
options:
- "ClusterIP"
- "LoadBalancer"
- "NodePort"
required: true
label: Sqlproxy Service Type
\ No newline at end of file
1. Get the application URL by running these commands:
{{- if .Values.ingress.enabled }}
{{- range .Values.ingress.hosts }}
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ . }}{{ $.Values.ingress.path }}
{{- end }}
{{- else if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "windocks-sql-proxy.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get svc -w {{ template "windocks-sql-proxy.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "windocks-sql-proxy.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "windocks-sql-proxy.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl port-forward $POD_NAME 8080:80
{{- end }}
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "windocks-sql-proxy.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "windocks-sql-proxy.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "windocks-sql-proxy.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: {{ template "windocks-sql-proxy.fullname" . }}
labels:
app: {{ template "windocks-sql-proxy.name" . }}
chart: {{ template "windocks-sql-proxy.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ template "windocks-sql-proxy.name" . }}
release: {{ .Release.Name }}
template:
metadata:
labels:
app: {{ template "windocks-sql-proxy.name" . }}
release: {{ .Release.Name }}
spec:
{{- if contains "true" .Values.sqlproxy.tls }}
volumes:
- name: proxy-secret-ssl
secret:
secretName: {{ .Values.sqlproxy.sslSecretName }}
{{- end }}
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: tcp-proxy
containerPort: {{ .Values.sqlproxy.port }}
protocol: TCP
envFrom:
- secretRef:
name: {{ .Values.sqlproxy.authSecretName }}
env:
- name: WINDOCKS_REQUIRED_HOSTNAME
value: {{ .Values.sqlproxy.windocksServerHostname | quote }}
- name: WINDOCKS_OPTIONAL_PORT
value: {{ .Values.sqlproxy.windocksServerPort | quote}}
- name: WINDOCKS_REQUIRED_IMAGE_NAME
value: {{ .Values.sqlproxy.windocksImageName | quote}}
- name: WINDOCKS_SQL_PROXY_OPTIONAL_LISTENING_PORT
value: {{ .Values.sqlproxy.port | quote}}
- name: WINDOCKS_SQL_PROXY_OPTIONAL_LOCAL_HOSTNAME_FOR_TLS
value: {{ .Values.sqlproxy.localHostNameForTls | quote }}
- name: WINDOCKS_SQL_PROXY_OPTIONAL_TLS
value: {{ .Values.sqlproxy.tls | quote}}
# - name: WINDOCKS_OPTIONAL_CONTAINER_NAME
# value: {{ .Values.sqlproxy.windocksContainerName }}
# If WINDOCKS_OPTIONAL_PERSISTENT_CONTAINER_PORT is set, then the proxy will not create or delete the Windocks container.
# - name: WINDOCKS_OPTIONAL_PERSISTENT_CONTAINER_PORT
# value: {{ .Values.sqlproxy.windocksPersistentContainerPort }}
{{- if contains "true" .Values.sqlproxy.tls }}
volumeMounts:
- mountPath: "/usr/src/app/ssl"
name: proxy-secret-ssl
readOnly: true
{{- end }}
#livenessProbe:
#tcpSocket:
#port: {{ .Values.sqlproxy.port }}
#readinessProbe:
#tcpSocket:
#port: {{ .Values.sqlproxy.port }}
resources:
{{ toYaml .Values.resources | indent 12 }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "windocks-sql-proxy.fullname" . -}}
{{- $ingressPath := .Values.ingress.path -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
app: {{ template "windocks-sql-proxy.name" . }}
chart: {{ template "windocks-sql-proxy.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- with .Values.ingress.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ . }}
http:
paths:
- path: {{ $ingressPath }}
backend:
serviceName: {{ $fullName }}
servicePort: http
{{- end }}
{{- end }}
apiVersion: v1
kind: Service
metadata:
name: {{ template "windocks-sql-proxy.fullname" . }}
labels:
app: {{ template "windocks-sql-proxy.name" . }}
chart: {{ template "windocks-sql-proxy.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
sessionAffinity: ClientIP
type: {{ .Values.service.type }}
{{- if and (hasKey .Values.service "loadBalancerIP") (eq .Values.service.type "LoadBalancer") }}
loadBalancerIP: {{ .Values.service.loadBalancerIP }}
{{- end }}
ports:
- port: {{ .Values.service.port }}
targetPort: {{ .Values.service.targetPort }}
protocol: TCP
name: tcp
selector:
app: {{ template "windocks-sql-proxy.name" . }}
release: {{ .Release.Name }}
# Default values for windocks-sql-proxy.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: windocks/windocks-sql-server-proxy
tag: 1.5.0
pullPolicy: Always
service:
type: LoadBalancer
port: 3087
securePort: 3088
targetPort: 3087
targetSecurePort: 3088
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
path: /
hosts:
- chart-example.local
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}
sqlproxy:
port: "3087"
windocksServerHostname: "34.220.44.23"
windocksServerPort: "3000"
windocksImageName: "clone"
# windocksContainerName: "mycontainername"
# windocksPersistentContainerPort; "10122"
# windocksPersistentContainerPort is the port on which the proxy expects the pre created Windocks container
tls: "false"
localHostNameForTls: ""
# Secret names
authSecretName: proxy-secrets
sslSecretName: proxy-secret-ssl
# kubectl create secret generic proxy-secrets --from-literal=WINDOCKS_REQUIRED_USERNAME='user' --from-literal=WINDOCKS_REQUIRED_PASSWORD='pass' --from-literal=WINDOCKS_REQUIRED_CONTAINER_SAPASSWORD='sapass'
# kubectl create -f file-that-contains-tls.key-and-tls.crt-and-name-proxy-secret-ssl
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment