Complete initial version of environment setup instructions.
This commit is contained in:
		@ -172,3 +172,169 @@ Once the configuration file is created we can kick off the install with ~openshi
 | 
				
			|||||||
#+begin_src tmux
 | 
					#+begin_src tmux
 | 
				
			||||||
./openshift-install create cluster --dir sno --log-level info
 | 
					./openshift-install create cluster --dir sno --log-level info
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* 4 - Install advanced cluster management
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To make use of the Red Hat Advanced Cluster Management Observability feature we need to first install advanced cluster management on our hub cluster via the acm operator.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Let's get started by creating an ~OperatorGroup~ and ~Subscription~ which will install the operator.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+begin_src tmux
 | 
				
			||||||
 | 
					oc create namespace open-cluster-management
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cat << EOF | oc apply --filename -
 | 
				
			||||||
 | 
					apiVersion: operators.coreos.com/v1
 | 
				
			||||||
 | 
					kind: OperatorGroup
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: acm-operator-group
 | 
				
			||||||
 | 
					  namespace: open-cluster-management
 | 
				
			||||||
 | 
					spec:
 | 
				
			||||||
 | 
					  targetNamespaces:
 | 
				
			||||||
 | 
					    - open-cluster-management
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					apiVersion: operators.coreos.com/v1alpha1
 | 
				
			||||||
 | 
					kind: Subscription
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: acm-operator-subscription
 | 
				
			||||||
 | 
					  namespace: open-cluster-management
 | 
				
			||||||
 | 
					spec:
 | 
				
			||||||
 | 
					  sourceNamespace: openshift-marketplace
 | 
				
			||||||
 | 
					  source: redhat-operators
 | 
				
			||||||
 | 
					  channel: release-2.9
 | 
				
			||||||
 | 
					  installPlanApproval: Automatic
 | 
				
			||||||
 | 
					  name: advanced-cluster-management
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Once the operator is installed we can create the ~MultiClusterHub~ resource to install Advanced Cluster Management.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Note: It can take up to ten minutes for this to complete.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+begin_src tmux
 | 
				
			||||||
 | 
					cat << EOF | oc apply --filename -
 | 
				
			||||||
 | 
					apiVersion: operator.open-cluster-management.io/v1
 | 
				
			||||||
 | 
					kind: MultiClusterHub
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: multiclusterhub
 | 
				
			||||||
 | 
					  namespace: open-cluster-management
 | 
				
			||||||
 | 
					  spec: {}
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* 5 - Enable acm observability
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Now, with our clusters deployed and acm installed we can enable the observability service by creating a ~MultiClusterObservability~ custom resource instance on the ~hub~ cluster.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Our first step towards this is to create two secrets.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+begin_src tmux
 | 
				
			||||||
 | 
					oc create namespace open-cluster-management-observability
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DOCKER_CONFIG_JSON=`oc extract secret/pull-secret -n openshift-config --to=-`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					oc create secret generic multiclusterhub-operator-pull-secret \
 | 
				
			||||||
 | 
					    -n open-cluster-management-observability \
 | 
				
			||||||
 | 
					    --from-literal=.dockerconfigjson="$DOCKER_CONFIG_JSON" \
 | 
				
			||||||
 | 
					    --type=kubernetes.io/dockerconfigjson
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cat << EOF | oc apply --filename -
 | 
				
			||||||
 | 
					apiVersion: v1
 | 
				
			||||||
 | 
					kind: Secret
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: thanos-object-storage
 | 
				
			||||||
 | 
					  namespace: open-cluster-management-observability
 | 
				
			||||||
 | 
					type: Opaque
 | 
				
			||||||
 | 
					stringData:
 | 
				
			||||||
 | 
					  thanos.yaml: |
 | 
				
			||||||
 | 
					    type: s3
 | 
				
			||||||
 | 
					    config:
 | 
				
			||||||
 | 
					      bucket: open-cluster-management-observability
 | 
				
			||||||
 | 
					      endpoint: s3.$(aws configure get region).amazonaws.com
 | 
				
			||||||
 | 
					      insecure: true
 | 
				
			||||||
 | 
					      access_key: $(aws configure get aws_access_key_id)
 | 
				
			||||||
 | 
					      secret_key: $(aws configure get aws_secret_access_key)
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Once the two required secrets exist we can create the ~MultiClusterObservability~ resource as follows:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+begin_src tmux
 | 
				
			||||||
 | 
					cat << EOF | oc apply --filename -
 | 
				
			||||||
 | 
					apiVersion: observability.open-cluster-management.io/v1beta2
 | 
				
			||||||
 | 
					kind: MultiClusterObservability
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: observability
 | 
				
			||||||
 | 
					spec:
 | 
				
			||||||
 | 
					  observabilityAddonSpec: {}
 | 
				
			||||||
 | 
					  storageConfig:
 | 
				
			||||||
 | 
					    metricObjectStorage:
 | 
				
			||||||
 | 
					      name: thanos-object-storage
 | 
				
			||||||
 | 
					      key: thanos.yaml
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					After creating the resource and waiting briefyl we can access the grafana console via the ~Route~ to confirm everything is running:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+begin_src tmux
 | 
				
			||||||
 | 
					echo "https://$(oc get route -n open-cluster-management-observability grafana -o jsonpath={.spec.host})"
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* 6 - Import the single node openshift cluster into acm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+begin_src tmux
 | 
				
			||||||
 | 
					oc new-project sno
 | 
				
			||||||
 | 
					oc label namespace sno cluster.open-cluster-management.io/managedCluster=sno
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+begin_src tmux
 | 
				
			||||||
 | 
					cat << EOF | oc apply --filename -
 | 
				
			||||||
 | 
					apiVersion: cluster.open-cluster-management.io/v1
 | 
				
			||||||
 | 
					kind: ManagedCluster
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: sno
 | 
				
			||||||
 | 
					spec:
 | 
				
			||||||
 | 
					  hubAcceptsClient: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					apiVersion: agent.open-cluster-management.io/v1
 | 
				
			||||||
 | 
					kind: KlusterletAddonConfig
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: sno
 | 
				
			||||||
 | 
					  namespace: sno
 | 
				
			||||||
 | 
					spec:
 | 
				
			||||||
 | 
					  clusterName: sno
 | 
				
			||||||
 | 
					  clusterNamespace: sno
 | 
				
			||||||
 | 
					  applicationManager:
 | 
				
			||||||
 | 
					    enabled: true
 | 
				
			||||||
 | 
					  certPolicyController:
 | 
				
			||||||
 | 
					    enabled: true
 | 
				
			||||||
 | 
					  clusterLabels:
 | 
				
			||||||
 | 
					    cloud: auto-detect
 | 
				
			||||||
 | 
					    vendor: auto-detect
 | 
				
			||||||
 | 
					  iamPolicyController:
 | 
				
			||||||
 | 
					    enabled: true
 | 
				
			||||||
 | 
					  policyController:
 | 
				
			||||||
 | 
					    enabled: true
 | 
				
			||||||
 | 
					  searchCollector:
 | 
				
			||||||
 | 
					    enabled: true
 | 
				
			||||||
 | 
					  version: 2.0.0
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The ManagedCluster-Import-Controller will generate a secret named ~sno-import~. The ~sno-import~ secret contains the ~import.yaml~ that the user applies to a managed cluster to install ~klusterlet~.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+begin_src tmux
 | 
				
			||||||
 | 
					oc get secret sno-import -n sno -o jsonpath={.data.crds\\.yaml} | base64 --decode > klusterlet-crd.yaml
 | 
				
			||||||
 | 
					oc get secret sno-import -n sno -o jsonpath={.data.import\\.yaml} | base64 --decode > import.yaml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					oc --kubeconfig sno/auth/kubeconfig apply --filename klusterlet-crd.yaml
 | 
				
			||||||
 | 
					oc --kubeconfig sno/auth/kubeconfig apply --filename import.yaml
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user