mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-31 13:50:01 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/bash
 | |
| # Copyright 2015 The Kubernetes Authors.
 | |
| #
 | |
| # Licensed under the Apache License, Version 2.0 (the "License");
 | |
| # you may not use this file except in compliance with the License.
 | |
| # You may obtain a copy of the License at
 | |
| #
 | |
| #     http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| # Unless required by applicable law or agreed to in writing, software
 | |
| # distributed under the License is distributed on an "AS IS" BASIS,
 | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| # See the License for the specific language governing permissions and
 | |
| # limitations under the License.
 | |
| 
 | |
| # This script is intended to set up the files necessary to run a master.
 | |
| # It currently creates:
 | |
| #  * The basic auth file for access to the kubernetes api server
 | |
| #  * Service tokens for accessing the kubernetes api server
 | |
| #  * The CA cert and keys for HTTPS access to the kubernetes api server
 | |
| set -o errexit
 | |
| set -o nounset
 | |
| set -o pipefail
 | |
| 
 | |
| create_token() {
 | |
|   echo $(cat /dev/urandom | base64 | tr -d "=+/" | dd bs=32 count=1 2> /dev/null)
 | |
| }
 | |
| 
 | |
| # Additional address of the API server to be added to the
 | |
| # list of Subject Alternative Names of the server TLS certificate
 | |
| # Should contain internal IP, i.e. IP:10.0.0.1 for 10.0.0.0/24 cluster IP range
 | |
| EXTRA_SANS=$1
 | |
| DATA_DIR=/srv/kubernetes
 | |
| 
 | |
| # Files in /data are persistent across reboots, so we don't want to re-create the files if they already
 | |
| # exist, because the state is persistent in etcd too, and we don't want a conflict between "old" data in
 | |
| # etcd and "new" data that this script would create for apiserver. Therefore, if the file exist, skip it.
 | |
| if [[ ! -f ${DATA_DIR}/ca.crt ]]; then
 | |
| 
 | |
| 	# Create HTTPS certificates
 | |
| 	groupadd -f -r kube-cert
 | |
| 
 | |
| 	# hostname -I gets the ip of the node
 | |
| 	/make-ca-cert.sh $(hostname -I | awk '{print $1}') ${EXTRA_SANS}
 | |
| 
 | |
| 	echo "Certificates created $(date)"
 | |
| else
 | |
| 	echo "Certificates already found, not recreating."
 | |
| fi
 | |
| 
 | |
| if [[ ! -f ${DATA_DIR}/basic_auth.csv ]]; then
 | |
| 
 | |
| 	# Create basic token authorization
 | |
| 	echo "admin,admin,admin" > ${DATA_DIR}/basic_auth.csv
 | |
| 
 | |
| 	echo "basic_auth.csv created $(date)"
 | |
| else
 | |
| 	echo "basic_auth.csv already found, not recreating."
 | |
| fi
 | |
| 
 | |
| if [[ ! -f ${DATA_DIR}/known_tokens.csv ]]; then
 | |
| 
 | |
| 	# Create known tokens for service accounts
 | |
| 	echo "$(create_token),admin,admin" >> ${DATA_DIR}/known_tokens.csv
 | |
| 	echo "$(create_token),kubelet,kubelet" >> ${DATA_DIR}/known_tokens.csv
 | |
| 	echo "$(create_token),kube_proxy,kube_proxy" >> ${DATA_DIR}/known_tokens.csv
 | |
| 
 | |
| 	echo "known_tokens.csv created $(date)"
 | |
| else
 | |
| 	echo "known_tokens.csv already found, not recreating."
 | |
| fi
 | |
| 
 | |
| while true; do
 | |
|   sleep 3600
 | |
| done
 |